[COMMIT] GMP functions that take doubles choke on non-finite values, avoid that.
Aidan Kehoe <[email protected]> Sun, 10 May 2015 19:10:12 +0100
| Newsgroups | gmane.emacs.xemacs.patches |
|---|---|
| Message-ID | <[email protected]> |
CkFQUFJPVkUgQ09NTUlUCgpOT1RFOiBUaGlzIHBhdGNoIGhhcyBiZWVuIGNvbW1pdHRlZC4KCiMg SEcgY2hhbmdlc2V0IHBhdGNoCiMgVXNlciBBaWRhbiBLZWhvZSA8a2Vob2VhQHBhcmhhc2FyZC5u ZXQ+CiMgRGF0ZSAxNDMxMjgxMjI5IC0zNjAwCiMgICAgICBTdW4gTWF5IDEwIDE5OjA3OjA5IDIw MTUgKzAxMDAKIyBOb2RlIElEIDQ4Mzg2ZmQ2MGZkMGFkMWJlYjZjOWZhOWMxYmMxOGQ2ZWU1Yjcx NWMKIyBQYXJlbnQgIGViMWUxNWM5NDQwYmJhM2JjOTZmMTZiYzc1MDI2OTI4N2M2OGU1ZjUKR01Q IGZ1bmN0aW9ucyB0aGF0IHRha2UgZG91YmxlcyBjaG9rZSBvbiBub24tZmluaXRlIHZhbHVlcywg YXZvaWQgdGhhdC4KCnNyYy9DaGFuZ2VMb2cgYWRkaXRpb246CgoyMDE1LTA1LTEwICBBaWRhbiBL ZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgoKCSogZmxvYXRmbnMuYyAoZG91YmxlX3RvX2lu dGVnZXIpOgoJUmVuYW1lIHRoaXMgZnJvbSBmbG9hdF90b19pbnQgdG8gZml0IG91ciBuZXdlciwg YmlnbnVtLWNvbXBhdGlibGUKCXRlcm1pbm9sb2d5LgoJR01QIGNhbiBzaWduYWwgU0lHRlBFIHdo ZW4gYXNrZWQgdG8gdHVybiBOYU4gb3IgaW5maW5pdHkgaW50byBhCgliaWdudW0sIGFuZCB3ZSdy ZSBub3QgcHJlcGFyZWQgdG8gaGFuZGxlIHRoYXQgc2lnbmFsIGlmIHRoZSBPUyBmbG9hdAoJbGli cmFyeSByb3V0aW5lcyBkb24ndCBkbyB0aGF0LCBzbyBjaGVjayBmb3IgdGhvc2UgdmFsdWVzCgll eHBsaWNpdGx5LgoKCSogZmxvYXRmbnMuYyAoY2VpbGluZ190d29fZmxvYXQpOgoJKiBmbG9hdGZu cy5jIChjZWlsaW5nX29uZV9mbG9hdCk6CgkqIGZsb2F0Zm5zLmMgKGZsb29yX3R3b19mbG9hdCk6 CgkqIGZsb2F0Zm5zLmMgKGZsb29yX29uZV9mbG9hdCk6CgkqIGZsb2F0Zm5zLmMgKHJvdW5kX3R3 b19mbG9hdCk6CgkqIGZsb2F0Zm5zLmMgKHJvdW5kX29uZV9mbG9hdCk6CgkqIGZsb2F0Zm5zLmMg KHRydW5jYXRlX3R3b19mbG9hdCk6CgkqIGZsb2F0Zm5zLmMgKHRydW5jYXRlX29uZV9mbG9hdCk6 CglDYWxsIGRvdWJsZV90b19pbnRlZ2VyKCkgd2l0aCBpdHMgbmV3IG5hbWUuCgoJKiBudW1iZXIu YzoKCURvbid0IHVzZSB0aGUge2JpZ251bSxyYXRpbyxiaWdmbG9hdH1fc2V0X2RvdWJsZSBmdW5j dGlvbnMKCWRpcmVjdGx5IGhlcmUsIHdpdGggR01QIHRoZXkgY2FuIGNob2tlIHdoZW4gaGFuZGVk IG5vbi1maW5pdGUgQwoJZG91YmxlcywgY2FsbCBGdHJ1bmNhdGUoKSBhbmQgdGhlIG5ldyBmbG9h dF90b19iaWdmbG9hdCgpIGZyb20KCWZsb2F0Zm5zLmMuIE1heWJlIHdlIHNob3VsZCBleHRlbmQg bnVtYmVyLWdtcC5jIHdpdGggR01QLXNwZWNpZmljCglpbXBsZW1lbnRhdGlvbnMgdGhhdCBjaGVj ayBmb3Igbm9uLWZpbml0ZSB2YWx1ZXMuCgp0ZXN0cy9DaGFuZ2VMb2cgYWRkaXRpb246CgoyMDE1 LTA1LTEwICBBaWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgoKCSogYXV0b21hdGVk L2xpc3AtdGVzdHMuZWw6CglCYWNrc2xhc2ggYSBmZXcgcGFyZW50aGVzZXMgaW4gdGhlIGZpcnN0 IGNvbHVtbiBmb3IgdGhlIHNha2Ugb2YKCWZvbnRpZmljYXRpb24uCgkqIGF1dG9tYXRlZC9saXNw LXRlc3RzLmVsOgoJQ2hlY2sgdGhhdCB0aGUgcm91bmRpbmcgZnVuY3Rpb25zIHNpZ25hbCBMaXNw IGVycm9ycyBjb3JyZWN0bHkKCXdoZW4gaGFuZGVkIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBpbmZp bml0eSBhbmQgTmFOLgoKZGlmZiAtciBlYjFlMTVjOTQ0MGIgLXIgNDgzODZmZDYwZmQwIHNyYy9D aGFuZ2VMb2cKLS0tIGEvc3JjL0NoYW5nZUxvZwlTYXQgTWF5IDA5IDEwOjUwOjMyIDIwMTUgKzAx MDAKKysrIGIvc3JjL0NoYW5nZUxvZwlTdW4gTWF5IDEwIDE5OjA3OjA5IDIwMTUgKzAxMDAKQEAg LTEsMyArMSwzMCBAQAorMjAxNS0wNS0xMCAgQWlkYW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFzYXJk Lm5ldD4KKworCSogZmxvYXRmbnMuYyAoZG91YmxlX3RvX2ludGVnZXIpOgorCVJlbmFtZSB0aGlz IGZyb20gZmxvYXRfdG9faW50IHRvIGZpdCBvdXIgbmV3ZXIsIGJpZ251bS1jb21wYXRpYmxlCisJ dGVybWlub2xvZ3kuCisJR01QIGNhbiBzaWduYWwgU0lHRlBFIHdoZW4gYXNrZWQgdG8gdHVybiBO YU4gb3IgaW5maW5pdHkgaW50byBhCisJYmlnbnVtLCBhbmQgd2UncmUgbm90IHByZXBhcmVkIHRv IGhhbmRsZSB0aGF0IHNpZ25hbCBpZiB0aGUgT1MgZmxvYXQKKwlsaWJyYXJ5IHJvdXRpbmVzIGRv bid0IGRvIHRoYXQsIHNvIGNoZWNrIGZvciB0aG9zZSB2YWx1ZXMKKwlleHBsaWNpdGx5LgorCisJ KiBmbG9hdGZucy5jIChjZWlsaW5nX3R3b19mbG9hdCk6CisJKiBmbG9hdGZucy5jIChjZWlsaW5n X29uZV9mbG9hdCk6CisJKiBmbG9hdGZucy5jIChmbG9vcl90d29fZmxvYXQpOgorCSogZmxvYXRm bnMuYyAoZmxvb3Jfb25lX2Zsb2F0KToKKwkqIGZsb2F0Zm5zLmMgKHJvdW5kX3R3b19mbG9hdCk6 CisJKiBmbG9hdGZucy5jIChyb3VuZF9vbmVfZmxvYXQpOgorCSogZmxvYXRmbnMuYyAodHJ1bmNh dGVfdHdvX2Zsb2F0KToKKwkqIGZsb2F0Zm5zLmMgKHRydW5jYXRlX29uZV9mbG9hdCk6CisJQ2Fs bCBkb3VibGVfdG9faW50ZWdlcigpIHdpdGggaXRzIG5ldyBuYW1lLgorCisJKiBudW1iZXIuYzoK KwlEb24ndCB1c2UgdGhlIHtiaWdudW0scmF0aW8sYmlnZmxvYXR9X3NldF9kb3VibGUgZnVuY3Rp b25zCisJZGlyZWN0bHkgaGVyZSwgd2l0aCBHTVAgdGhleSBjYW4gY2hva2Ugd2hlbiBoYW5kZWQg bm9uLWZpbml0ZSBDCisJZG91YmxlcywgY2FsbCBGdHJ1bmNhdGUoKSBhbmQgdGhlIG5ldyBmbG9h dF90b19iaWdmbG9hdCgpIGZyb20KKwlmbG9hdGZucy5jLiBNYXliZSB3ZSBzaG91bGQgZXh0ZW5k IG51bWJlci1nbXAuYyB3aXRoIEdNUC1zcGVjaWZpYworCWltcGxlbWVudGF0aW9ucyB0aGF0IGNo ZWNrIGZvciBub24tZmluaXRlIHZhbHVlcy4KKwogMjAxNS0wNS0wOSAgQWlkYW4gS2Vob2UgIDxr ZWhvZWFAcGFyaGFzYXJkLm5ldD4KIAogCSogZGF0YS5jIChGbG9nYW5kKToKZGlmZiAtciBlYjFl MTVjOTQ0MGIgLXIgNDgzODZmZDYwZmQwIHNyYy9mbG9hdGZucy5jCi0tLSBhL3NyYy9mbG9hdGZu cy5jCVNhdCBNYXkgMDkgMTA6NTA6MzIgMjAxNSArMDEwMAorKysgYi9zcmMvZmxvYXRmbnMuYwlT dW4gTWF5IDEwIDE5OjA3OjA5IDIwMTUgKzAxMDAKQEAgLTExMiwzOCArMTEyLDYgQEAKICNkZWZp bmUgZG9tYWluX2Vycm9yMihvcCxhMSxhMikgXAogICBGc2lnbmFsIChRZG9tYWluX2Vycm9yLCBs aXN0MyAoYnVpbGRfbXNnX3N0cmluZyAob3ApLCBhMSwgYTIpKQogCi0KLS8qIENvbnZlcnQgZmxv YXQgdG8gTGlzcCBJbnRlZ2VyIGlmIGl0IGZpdHMsIGVsc2Ugc2lnbmFsIGEgcmFuZ2UKLSAgIGVy cm9yIHVzaW5nIHRoZSBnaXZlbiBhcmd1bWVudHMuICBJZiBiaWdudW1zIGFyZSBhdmFpbGFibGUs IHJhbmdlIGVycm9ycwotICAgYXJlIG5ldmVyIHNpZ25hbGVkLiAgKi8KLXN0YXRpYyBMaXNwX09i amVjdAotZmxvYXRfdG9faW50IChkb3VibGUgeCwKLSNpZmRlZiBIQVZFX0JJR05VTQotCSAgICAg IGNvbnN0IGNoYXIgKlVOVVNFRCAobmFtZSksIExpc3BfT2JqZWN0IFVOVVNFRCAobnVtKSwKLQkg ICAgICBMaXNwX09iamVjdCBVTlVTRUQgKG51bTIpCi0jZWxzZQotCSAgICAgIGNvbnN0IGNoYXIg Km5hbWUsIExpc3BfT2JqZWN0IG51bSwgTGlzcF9PYmplY3QgbnVtMgotI2VuZGlmCi0JICAgICAg KQotewotI2lmZGVmIEhBVkVfQklHTlVNCi0gIGJpZ251bV9zZXRfZG91YmxlIChzY3JhdGNoX2Jp Z251bSwgeCk7Ci0gIHJldHVybiBGY2Fub25pY2FsaXplX251bWJlciAobWFrZV9iaWdudW1fYmcg KHNjcmF0Y2hfYmlnbnVtKSk7Ci0jZWxzZQotICBSRUdJU1RFUiBFTUFDU19JTlQgcmVzdWx0ID0g KEVNQUNTX0lOVCkgeDsKLQotICBpZiAocmVzdWx0ID4gTU9TVF9QT1NJVElWRV9GSVhOVU0gfHwg cmVzdWx0IDwgTU9TVF9ORUdBVElWRV9GSVhOVU0pCi0gICAgewotICAgICAgaWYgKCFVTkJPVU5E UCAobnVtMikpCi0JcmFuZ2VfZXJyb3IyIChuYW1lLCBudW0sIG51bTIpOwotICAgICAgZWxzZQot CXJhbmdlX2Vycm9yIChuYW1lLCBudW0pOwotICAgIH0KLSAgcmV0dXJuIG1ha2VfZml4bnVtIChy ZXN1bHQpOwotI2VuZGlmIC8qIEhBVkVfQklHTlVNICovCi19Ci0KLQogc3RhdGljIHZvaWQKIGlu X2Zsb2F0X2Vycm9yICh2b2lkKQogewpAQCAtMTY1LDcgKzEzMyw2NSBAQAogICAgIGJyZWFrOwog ICB9CiB9CisMCisvKiBDb252ZXJ0IFggdG8gYSBMaXNwIGludGVnZXIsIHVzaW5nIGJpZ251bXMg aWYgYXZhaWxhYmxlLiBJZiBYIGRvZXMgbm90CisgICBmaXQtLWlmIGl0IGlzIG5vdCBmaW5pdGUs IG9yLCBvbiBhIGJ1aWxkIHdpdGhvdXQgYmlnbnVtIHN1cHBvcnQsIGlmIGl0IGlzCisgICBvdXRz aWRlIHRoZSByYW5nZSAoPD0gbW9zdC1uZWdhdGl2ZS1maXhudW0gWCBtb3N0LXBvc2l0aXZlLWZp eG51bSktLXNpZ25hbAorICAgYSByYW5nZSBlcnJvci4gKi8KK3N0YXRpYyBMaXNwX09iamVjdAor ZG91YmxlX3RvX2ludGVnZXIgKGRvdWJsZSB4LCBjb25zdCBBc2NieXRlICpvcGVyYXRpb24sIExp c3BfT2JqZWN0IG51bSwKKyAgICAgICAgICAgICAgICAgICBMaXNwX09iamVjdCBudW0yKQorewor I2lmZGVmIEhBVkVfQklHTlVNCisgIGlmIChpc25hbiAoeCkgfHwgaXNpbmYgKHgpKQorICAgIHsK KyAgICAgIGlmIChVTkJPVU5EUCAobnVtMikpCisgICAgICAgIHsKKyAgICAgICAgICByYW5nZV9l cnJvciAob3BlcmF0aW9uLCBudW0pOworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHsK KyAgICAgICAgICByYW5nZV9lcnJvcjIgKG9wZXJhdGlvbiwgbnVtLCBudW0yKTsKKyAgICAgICAg fQorICAgIH0KIAorICBiaWdudW1fc2V0X2RvdWJsZSAoc2NyYXRjaF9iaWdudW0sIHgpOworICBy ZXR1cm4gRmNhbm9uaWNhbGl6ZV9udW1iZXIgKG1ha2VfYmlnbnVtX2JnIChzY3JhdGNoX2JpZ251 bSkpOworI2Vsc2UKKyAgUkVHSVNURVIgRU1BQ1NfSU5UIHJlc3VsdCA9IChFTUFDU19JTlQpIHg7 CisKKyAgaWYgKHJlc3VsdCA+IE1PU1RfUE9TSVRJVkVfRklYTlVNIHx8IHJlc3VsdCA8IE1PU1Rf TkVHQVRJVkVfRklYTlVNKQorICAgIHsKKyAgICAgIGlmICghVU5CT1VORFAgKG51bTIpKQorICAg ICAgICByYW5nZV9lcnJvcjIgKG9wZXJhdGlvbiwgbnVtLCBudW0yKTsKKyAgICAgIGVsc2UKKyAg ICAgICAgcmFuZ2VfZXJyb3IgKG9wZXJhdGlvbiwgbnVtKTsKKyAgICB9CisgIHJldHVybiBtYWtl X2ZpeG51bSAocmVzdWx0KTsKKyNlbmRpZiAvKiBIQVZFX0JJR05VTSAqLworfQorCisjaWZkZWYg SEFWRV9CSUdGTE9BVAorTGlzcF9PYmplY3QgZmxvYXRfdG9fYmlnZmxvYXQgKGNvbnN0IEFzY2J5 dGUgKm9wZXJhdGlvbiwgTGlzcF9PYmplY3QgbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgcHJlY2lzaW9uKTsKKworTGlzcF9PYmplY3QKK2Zsb2F0X3Rv X2JpZ2Zsb2F0IChjb25zdCBBc2NieXRlICpvcGVyYXRpb24sIExpc3BfT2JqZWN0IG51bSwKKyAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHByZWNpc2lvbikKK3sKKyAgZG91YmxlIGQg PSBleHRyYWN0X2Zsb2F0IChudW0pOworCisgIGlmIChpc25hbiAoZCkgfHwgaXNpbmYgKGQpKQor ICAgIHsKKyAgICAgIHJhbmdlX2Vycm9yIChvcGVyYXRpb24sIG51bSk7CisgICAgfQorCisgIGJp Z2Zsb2F0X3NldF9wcmVjIChzY3JhdGNoX2JpZ2Zsb2F0LCBwcmVjaXNpb24pOworICBiaWdmbG9h dF9zZXRfZG91YmxlIChzY3JhdGNoX2JpZ2Zsb2F0LCBkKTsKKworICByZXR1cm4gbWFrZV9iaWdm bG9hdF9iZiAoc2NyYXRjaF9iaWdmbG9hdCk7Cit9CisjZW5kaWYKIAwKIHN0YXRpYyBMaXNwX09i amVjdAogbWFya19mbG9hdCAoTGlzcF9PYmplY3QgVU5VU0VEIChvYmopKQpAQCAtMTI1Miw3ICsx Mjc4LDcgQEAKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICByZXMwID0gZmxvYXRfdG9faW50 IChmMCwgTUFZQkVfRUZGKCJjZWlsaW5nIiksIG51bWJlciwgZGl2aXNvcik7CisgICAgICByZXMw ID0gZG91YmxlX3RvX2ludGVnZXIgKGYwLCAiY2VpbGluZyIsIG51bWJlciwgZGl2aXNvcik7CiAg ICAgfQogCiAgIHJldHVybiB2YWx1ZXMyIChyZXMwLCBtYWtlX2Zsb2F0IChyZW1haW4pKTsKQEAg LTEyNzMsNyArMTI5OSw3IEBACiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgcmVzMCA9IGZs b2F0X3RvX2ludCAoZCwgTUFZQkVfRUZGKCJjZWlsaW5nIiksIG51bWJlciwgUXVuYm91bmQpOwor ICAgICAgcmVzMCA9IGRvdWJsZV90b19pbnRlZ2VyIChkLCAiY2VpbGluZyIsIG51bWJlciwgUXVu Ym91bmQpOwogICAgIH0KICAgcmV0dXJuIHZhbHVlczIgKHJlczAsIG1ha2VfZmxvYXQgKHJlbWFp bikpOwogfQpAQCAtMTUzNSw3ICsxNTYxLDcgQEAKICAgICAgIHJldHVybiB2YWx1ZXMyIChtYWtl X2Zsb2F0IChmMCksIG1ha2VfZmxvYXQgKHJlbWFpbikpOwogICAgIH0KIAotICByZXR1cm4gdmFs dWVzMiAoZmxvYXRfdG9faW50IChmMCwgTUFZQkVfRUZGICgiZmxvb3IiKSwgbnVtYmVyLCBkaXZp c29yKSwKKyAgcmV0dXJuIHZhbHVlczIgKGRvdWJsZV90b19pbnRlZ2VyIChmMCwgImZsb29yIiwg bnVtYmVyLCBkaXZpc29yKSwKIAkJICBtYWtlX2Zsb2F0IChyZW1haW4pKTsKIH0KIApAQCAtMTU1 Myw3ICsxNTc5LDcgQEAKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICByZXR1cm4gdmFsdWVz MiAoZmxvYXRfdG9faW50IChkLCBNQVlCRV9FRkYgKCJmbG9vciIpLCBudW1iZXIsIFF1bmJvdW5k KSwKKyAgICAgIHJldHVybiB2YWx1ZXMyIChkb3VibGVfdG9faW50ZWdlciAoZCwgImZsb29yIiwg bnVtYmVyLCBRdW5ib3VuZCksCiAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9mbG9hdCAoZDEp KTsKICAgICB9CiB9CkBAIC0xOTM5LDcgKzE5NjUsNyBAQAogICAgIH0KICAgZWxzZQogICAgIHsK LSAgICAgIHJldHVybiB2YWx1ZXMyIChmbG9hdF90b19pbnQgKGYwLCBNQVlCRV9FRkYoInJvdW5k IiksIG51bWJlciwgZGl2aXNvciksCisgICAgICByZXR1cm4gdmFsdWVzMiAoZG91YmxlX3RvX2lu dGVnZXIgKGYwLCAicm91bmQiLCBudW1iZXIsIGRpdmlzb3IpLAogCQkgICAgICBtYWtlX2Zsb2F0 IChyZW1haW4pKTsKICAgICB9CiB9CkBAIC0xOTU4LDggKzE5ODQsNyBAQAogICAgIH0KICAgZWxz ZQogICAgIHsKLSAgICAgIHJldHVybiB2YWx1ZXMyICgoZmxvYXRfdG9faW50IChkLCBNQVlCRV9F RkYgKCJyb3VuZCIpLCBudW1iZXIsCi0JCQkJICAgICBRdW5ib3VuZCkpLAorICAgICAgcmV0dXJu IHZhbHVlczIgKChkb3VibGVfdG9faW50ZWdlciAoZCwgInJvdW5kIiwgbnVtYmVyLCBRdW5ib3Vu ZCkpLAogCQkgICAgICBtYWtlX2Zsb2F0IChYRkxPQVRfREFUQSAobnVtYmVyKSAtIGQpKTsKICAg ICB9CiB9CkBAIC0yMjE2LDcgKzIyNDEsOCBAQAogICBpZiAoZjIgPT0gMC4wKQogICAgIHJldHVy biBhcml0aF9lcnJvcjIgKCJ0cnVuY2F0ZSIsIG51bWJlciwgZGl2aXNvcik7CiAKLSAgcmVzMCA9 IGZsb2F0X3RvX2ludCAoZjEgLyBmMiwgTUFZQkVfRUZGICgidHJ1bmNhdGUiKSwgbnVtYmVyLCBR dW5ib3VuZCk7CisgIHJlczAgPSBkb3VibGVfdG9faW50ZWdlciAoZjEgLyBmMiwgTUFZQkVfRUZG ICgidHJ1bmNhdGUiKSwgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1bmJv dW5kKTsKICAgZjAgPSBleHRyYWN0X2Zsb2F0IChyZXMwKTsKIAogICBJTl9GTE9BVDIgKHJlbWFp biA9IGYxIC0gKGYwICogZjIpLCBNQVlCRV9FRkYgKCJ0cnVuY2F0ZSIpLCBudW1iZXIsIGRpdmlz b3IpOwpAQCAtMjIzMyw4ICsyMjU5LDggQEAKIHRydW5jYXRlX29uZV9mbG9hdCAoTGlzcF9PYmpl Y3QgbnVtYmVyLCBpbnQgcmV0dXJuX2Zsb2F0KQogewogICBMaXNwX09iamVjdCByZXMwCi0gICAg PSBmbG9hdF90b19pbnQgKFhGTE9BVF9EQVRBIChudW1iZXIpLCBNQVlCRV9FRkYgKCJ0cnVuY2F0 ZSIpLAotCQkgICAgbnVtYmVyLCBRdW5ib3VuZCk7CisgICAgPSBkb3VibGVfdG9faW50ZWdlciAo WEZMT0FUX0RBVEEgKG51bWJlciksIE1BWUJFX0VGRiAoInRydW5jYXRlIiksCisgICAgICAgICAg ICAgICAgICAgICAgICAgbnVtYmVyLCBRdW5ib3VuZCk7CiAgIGlmIChyZXR1cm5fZmxvYXQpCiAg ICAgewogICAgICAgcmVzMCA9IG1ha2VfZmxvYXQgKChkb3VibGUpWEZJWE5VTShyZXMwKSk7CmRp ZmYgLXIgZWIxZTE1Yzk0NDBiIC1yIDQ4Mzg2ZmQ2MGZkMCBzcmMvbnVtYmVyLmMKLS0tIGEvc3Jj L251bWJlci5jCVNhdCBNYXkgMDkgMTA6NTA6MzIgMjAxNSArMDEwMAorKysgYi9zcmMvbnVtYmVy LmMJU3VuIE1heSAxMCAxOTowNzowOSAyMDE1ICswMTAwCkBAIC0zMDksNiArMzA5LDkgQEAKIAkJ CQkJYmlnZmxvYXRfZXF1YWwsIGJpZ2Zsb2F0X2hhc2gsCiAJCQkJCWJpZ2Zsb2F0X2Rlc2NyaXB0 aW9uLCBMaXNwX0JpZ2Zsb2F0KTsKIAorZXh0ZXJuIExpc3BfT2JqZWN0IGZsb2F0X3RvX2JpZ2Zs b2F0IChjb25zdCBBc2NieXRlICosIExpc3BfT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nKTsKKwogI2VuZGlmIC8qIEhBVkVfQklHRkxP QVQgKi8KIAogTGlzcF9PYmplY3QgUWJpZ2Zsb2F0cDsKQEAgLTYwMSwxNSArNjA0LDI2IEBACiAJ ICByZXR1cm4gRnRydW5jYXRlIChudW1iZXIsIFFuaWwpOwogCWNhc2UgQklHTlVNX1Q6CiAjaWZk ZWYgSEFWRV9CSUdOVU0KLQkgIGJpZ251bV9zZXRfZG91YmxlIChzY3JhdGNoX2JpZ251bSwgWEZM T0FUX0RBVEEgKG51bWJlcikpOwotCSAgcmV0dXJuIG1ha2VfYmlnbnVtX2JnIChzY3JhdGNoX2Jp Z251bSk7CisgICAgICAgICAgeworICAgICAgICAgICAgTGlzcF9PYmplY3QgdHJ1bmNhdGUgPSBG dHJ1bmNhdGUgKG51bWJlciwgUW5pbCk7CisgICAgICAgICAgICByZXR1cm4gRklYTlVNUCAodHJ1 bmNhdGUpID8KKyAgICAgICAgICAgICAgbWFrZV9iaWdudW0gKFhSRUFMRklYTlVNICh0cnVuY2F0 ZSkpIDogdHJ1bmNhdGU7CisgICAgICAgICAgfQogI2Vsc2UKIAkgIEFCT1JUICgpOwogI2VuZGlm IC8qIEhBVkVfQklHTlVNICovCiAJY2FzZSBSQVRJT19UOgogI2lmZGVmIEhBVkVfUkFUSU8KLQkg IHJhdGlvX3NldF9kb3VibGUgKHNjcmF0Y2hfcmF0aW8sIFhGTE9BVF9EQVRBIChudW1iZXIpKTsK LQkgIHJldHVybiBtYWtlX3JhdGlvX3J0IChzY3JhdGNoX3JhdGlvKTsKKyAgICAgICAgICB7Cisg ICAgICAgICAgICBMaXNwX09iamVjdCB0cnVuY2F0ZSA9IEZ0cnVuY2F0ZSAobnVtYmVyLCBRbmls KTsKKyAgICAgICAgICAgIGlmIChGSVhOVU1QICh0cnVuY2F0ZSkpCisgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9yYXRpbyAoWFJFQUxGSVhOVU0gKHRydW5jYXRl KSwgMVVMKTsKKyAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICBiaWdudW1fc2V0X2xvbmcg KHNjcmF0Y2hfYmlnbnVtLCAxTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9yYXRpb19iZyAo WEJJR05VTV9EQVRBICh0cnVuY2F0ZSksIHNjcmF0Y2hfYmlnbnVtKTsKKyAgICAgICAgICB9CiAj ZWxzZQogCSAgQUJPUlQgKCk7CiAjZW5kaWYgLyogSEFWRV9SQVRJTyAqLwpAQCAtNjE3LDkgKzYz MSw3IEBACiAJICByZXR1cm4gbnVtYmVyOwogCWNhc2UgQklHRkxPQVRfVDoKICNpZmRlZiBIQVZF X0JJR0ZMT0FUCi0JICBiaWdmbG9hdF9zZXRfcHJlYyAoc2NyYXRjaF9iaWdmbG9hdCwgcHJlY2lz aW9uKTsKLQkgIGJpZ2Zsb2F0X3NldF9kb3VibGUgKHNjcmF0Y2hfYmlnZmxvYXQsIFhGTE9BVF9E QVRBIChudW1iZXIpKTsKLQkgIHJldHVybiBtYWtlX2JpZ2Zsb2F0X2JmIChzY3JhdGNoX2JpZ2Zs b2F0KTsKKyAgICAgICAgICByZXR1cm4gZmxvYXRfdG9fYmlnZmxvYXQgKCJjb2VyY2UtbnVtYmVy IiwgbnVtYmVyLCBwcmVjaXNpb24pOwogI2Vsc2UKIAkgIEFCT1JUICgpOwogI2VuZGlmIC8qIEhB VkVfQklHRkxPQVQgKi8KZGlmZiAtciBlYjFlMTVjOTQ0MGIgLXIgNDgzODZmZDYwZmQwIHRlc3Rz L0NoYW5nZUxvZwotLS0gYS90ZXN0cy9DaGFuZ2VMb2cJU2F0IE1heSAwOSAxMDo1MDozMiAyMDE1 ICswMTAwCisrKyBiL3Rlc3RzL0NoYW5nZUxvZwlTdW4gTWF5IDEwIDE5OjA3OjA5IDIwMTUgKzAx MDAKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNS0xMCAgQWlkYW4gS2Vob2UgIDxrZWhvZWFAcGFy aGFzYXJkLm5ldD4KKworCSogYXV0b21hdGVkL2xpc3AtdGVzdHMuZWw6CisJQmFja3NsYXNoIGEg ZmV3IHBhcmVudGhlc2VzIGluIHRoZSBmaXJzdCBjb2x1bW4gZm9yIHRoZSBzYWtlIG9mCisJZm9u dGlmaWNhdGlvbi4KKwkqIGF1dG9tYXRlZC9saXNwLXRlc3RzLmVsOgorCUNoZWNrIHRoYXQgdGhl IHJvdW5kaW5nIGZ1bmN0aW9ucyBzaWduYWwgTGlzcCBlcnJvcnMgY29ycmVjdGx5CisJd2hlbiBo YW5kZWQgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXR5IGFuZCBOYU4uCisKIDIwMTUtMDUt MDggIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CiAKIAkqIGF1dG9tYXRlZC9s aXNwLXJlYWRlci10ZXN0cy5lbDoKZGlmZiAtciBlYjFlMTVjOTQ0MGIgLXIgNDgzODZmZDYwZmQw IHRlc3RzL2F1dG9tYXRlZC9saXNwLXRlc3RzLmVsCi0tLSBhL3Rlc3RzL2F1dG9tYXRlZC9saXNw LXRlc3RzLmVsCVNhdCBNYXkgMDkgMTA6NTA6MzIgMjAxNSArMDEwMAorKysgYi90ZXN0cy9hdXRv bWF0ZWQvbGlzcC10ZXN0cy5lbAlTdW4gTWF5IDEwIDE5OjA3OjA5IDIwMTUgKzAxMDAKQEAgLTE1 MTEsMTAgKzE1MTEsMTAgQEAKICAgICAgICAiXAogOzsgTGlzcCBzaG91bGQgbm90IGJlIGFibGUg dG8gbW9kaWZ5ICMkLCB3aGljaCBpcwogOzsgVmxvYWRfZmlsZV9uYW1lX2ludGVybmFsIG9mIGxy ZWFkLmMuCi0oQ2hlY2stRXJyb3Igc2V0dGluZy1jb25zdGFudCAoYXNldCAjJCAwID9cXCApKQor XChDaGVjay1FcnJvciBzZXR0aW5nLWNvbnN0YW50IChhc2V0ICMkIDAgP1xcICkpCiAKIDs7IEJ1 dCBtb2RpZnlpbmcgbG9hZC1maWxlLW5hbWUgc2hvdWxkIHdvcms6Ci0obGV0ICgobmV3LWNoYXIg P1xcICkKK1wobGV0ICgobmV3LWNoYXIgP1xcICkKICAgICAgIG9sZC1jaGFyKQogICAoc2V0cSBv bGQtY2hhciAoYXJlZiBsb2FkLWZpbGUtbmFtZSAwKSkKICAgKGlmICg9IG5ldy1jaGFyIG9sZC1j aGFyKQpAQCAtMTUyMyw3ICsxNTIzLDcgQEAKICAgKEFzc2VydCAoPSBuZXctY2hhciAoYXJlZiBs b2FkLWZpbGUtbmFtZSAwKSkKIAkgIFwiQ2hlY2sgdGhhdCB3ZSBjYW4gbW9kaWZ5IHRoZSBzdHJp bmcgdmFsdWUgb2YgbG9hZC1maWxlLW5hbWVcIikpCiAKLShsZXQqICgobmV3LWxvYWQtZmlsZS1u YW1lIFwiaGkgdGhlcmVcIikKK1wobGV0KiAoKG5ldy1sb2FkLWZpbGUtbmFtZSBcImhpIHRoZXJl XCIpCiAgICAgICAgKGxvYWQtZmlsZS1uYW1lIG5ldy1sb2FkLWZpbGUtbmFtZSkpCiAgIChBc3Nl cnQgKGVxIG5ldy1sb2FkLWZpbGUtbmFtZSBsb2FkLWZpbGUtbmFtZSkKIAkgIFwiQ2hlY2tpbmcg dGhhdCB3ZSBjYW4gYmluZCBsb2FkLWZpbGUtbmFtZSBzdWNjZXNzZnVsbHkuXCIpKQpAQCAtMTUz NSw2ICsxNTM1LDQ2IEBACiAgICAobG9hZCB0ZXN0LWZpbGUtbmFtZSBuaWwgdCBuaWwpCiAgICAo ZGVsZXRlLWZpbGUgdGVzdC1maWxlLW5hbWUpKQogCis7OyBUaGVzZSB1c2VkIHRvIGNyYXNoIHdp dGggYmlnbnVtIHN1cHBvcnQgdGhhbmtzIHRvIEdNUDoKKyhzeW1ib2wtbWFjcm9sZXQKKyAgICAo KHBvc2l0aXZlLWluZmluaXR5CisgICAgICAoZXhwdCAoKyBtb3N0LXBvc2l0aXZlLWZpeG51bSAw LjApIG1vc3QtcG9zaXRpdmUtZml4bnVtKSkKKyAgICAgKG5lZ2F0aXZlLWluZmluaXR5CisgICAg ICAoZXhwdCAoKyBtb3N0LW5lZ2F0aXZlLWZpeG51bSAwLjApIG1vc3QtcG9zaXRpdmUtZml4bnVt KSkKKyAgICAgKG5vdC1hLW51bWJlciAoZXhwdCAtMSAwLjUpKSkKKyAgKENoZWNrLUVycm9yIHJh bmdlLWVycm9yIChjZWlsaW5nIHBvc2l0aXZlLWluZmluaXR5KSkKKyAgKENoZWNrLUVycm9yIHJh bmdlLWVycm9yIChjZWlsaW5nIG5lZ2F0aXZlLWluZmluaXR5KSkKKyAgKENoZWNrLUVycm9yIHJh bmdlLWVycm9yIChjZWlsaW5nIHBvc2l0aXZlLWluZmluaXR5IDEpKQorICAoQ2hlY2stRXJyb3Ig cmFuZ2UtZXJyb3IgKGNlaWxpbmcgbmVnYXRpdmUtaW5maW5pdHkgMSkpCisgIChDaGVjay1FcnJv ciByYW5nZS1lcnJvciAoZmxvb3IgcG9zaXRpdmUtaW5maW5pdHkpKQorICAoQ2hlY2stRXJyb3Ig cmFuZ2UtZXJyb3IgKGZsb29yIG5lZ2F0aXZlLWluZmluaXR5KSkKKyAgKENoZWNrLUVycm9yIHJh bmdlLWVycm9yIChmbG9vciBwb3NpdGl2ZS1pbmZpbml0eSAxKSkKKyAgKENoZWNrLUVycm9yIHJh bmdlLWVycm9yIChmbG9vciBuZWdhdGl2ZS1pbmZpbml0eSAxKSkKKyAgKENoZWNrLUVycm9yIHJh bmdlLWVycm9yIChyb3VuZCBwb3NpdGl2ZS1pbmZpbml0eSkpCisgIChDaGVjay1FcnJvciByYW5n ZS1lcnJvciAocm91bmQgbmVnYXRpdmUtaW5maW5pdHkpKQorICAoQ2hlY2stRXJyb3IgcmFuZ2Ut ZXJyb3IgKHJvdW5kIHBvc2l0aXZlLWluZmluaXR5IDEpKQorICAoQ2hlY2stRXJyb3IgcmFuZ2Ut ZXJyb3IgKHJvdW5kIG5lZ2F0aXZlLWluZmluaXR5IDEpKQorICAoQ2hlY2stRXJyb3IgcmFuZ2Ut ZXJyb3IgKGNlaWxpbmcgbm90LWEtbnVtYmVyKSkKKyAgKENoZWNrLUVycm9yIHJhbmdlLWVycm9y IChjZWlsaW5nIG5vdC1hLW51bWJlciAxKSkKKyAgKENoZWNrLUVycm9yIHJhbmdlLWVycm9yIChm bG9vciBub3QtYS1udW1iZXIpKQorICAoQ2hlY2stRXJyb3IgcmFuZ2UtZXJyb3IgKGZsb29yIG5v dC1hLW51bWJlciAxKSkKKyAgKENoZWNrLUVycm9yIHJhbmdlLWVycm9yIChyb3VuZCBub3QtYS1u dW1iZXIpKQorICAoQ2hlY2stRXJyb3IgcmFuZ2UtZXJyb3IgKHJvdW5kIG5vdC1hLW51bWJlciAx KSkKKyAgKENoZWNrLUVycm9yIHJhbmdlLWVycm9yIChjb2VyY2UgcG9zaXRpdmUtaW5maW5pdHkg J2ZpeG51bSkpIAorICAoQ2hlY2stRXJyb3IgcmFuZ2UtZXJyb3IgKGNvZXJjZSBuZWdhdGl2ZS1p bmZpbml0eSAnZml4bnVtKSkgCisgIChDaGVjay1FcnJvciByYW5nZS1lcnJvciAoY29lcmNlIG5v dC1hLW51bWJlciAnZml4bnVtKSkKKyAgKENoZWNrLUVycm9yIHJhbmdlLWVycm9yIChjb2VyY2Ug cG9zaXRpdmUtaW5maW5pdHkgJ2ludGVnZXIpKSAKKyAgKENoZWNrLUVycm9yIHJhbmdlLWVycm9y IChjb2VyY2UgbmVnYXRpdmUtaW5maW5pdHkgJ2ludGVnZXIpKSAKKyAgKENoZWNrLUVycm9yIHJh bmdlLWVycm9yIChjb2VyY2Ugbm90LWEtbnVtYmVyICdpbnRlZ2VyKSkKKyAgKHdoZW4gKGlnbm9y ZS1lcnJvcnMgKGNvZXJjZSAxICdyYXRpbykpCisgICAgKENoZWNrLUVycm9yIHJhbmdlLWVycm9y IChjb2VyY2UgcG9zaXRpdmUtaW5maW5pdHkgJ3JhdGlvKSkgCisgICAgKENoZWNrLUVycm9yIHJh bmdlLWVycm9yIChjb2VyY2UgbmVnYXRpdmUtaW5maW5pdHkgJ3JhdGlvKSkgCisgICAgKENoZWNr LUVycm9yIHJhbmdlLWVycm9yIChjb2VyY2Ugbm90LWEtbnVtYmVyICdyYXRpbykpKQorICAod2hl biAoaWdub3JlLWVycm9ycyAoY29lcmNlIDEgJ2JpZ2Zsb2F0KSkKKyAgICAoQ2hlY2stRXJyb3Ig cmFuZ2UtZXJyb3IgKGNvZXJjZSBwb3NpdGl2ZS1pbmZpbml0eSAnYmlnZmxvYXQpKSAKKyAgICAo Q2hlY2stRXJyb3IgcmFuZ2UtZXJyb3IgKGNvZXJjZSBuZWdhdGl2ZS1pbmZpbml0eSAnYmlnZmxv YXQpKSAKKyAgICAoQ2hlY2stRXJyb3IgcmFuZ2UtZXJyb3IgKGNvZXJjZSBub3QtYS1udW1iZXIg J2JpZ2Zsb2F0KSkpKQorCiAobGFiZWxzICgoY2wtZmxvb3IgKHggJm9wdGlvbmFsIHkpCiAgICAg ICAgICAgIChsZXQgKChxIChmbG9vciB4IHkpKSkKICAgICAgICAgICAgICAobGlzdCBxICgtIHgg KGlmIHkgKCogeSBxKSBxKSkpKSkKCgotLSAK4oCYVHJhbWFkb2wgaXMgZnVydGhlciBmZWQgdG8g Y2F0dGxlIFvigKZdIHdoZW4gd29ya2luZyB0aGVtIFvigKZdIChhcyBkcmFmdAphbmltYWxzKSBz byB0aGF0IHRoZSBhbmltYWxzIGRvIG5vdCBnZXQgdGlyZWQgcXVpY2tseS4g4oCm4oCZCgnigJQg QW5nZXdhbmR0ZSBDaGVtaWUsIFNlcHQgMjAxNCwgZGVzY3JpYmluZyB0aGUgc29jaWFsIGNvbnRl eHQgb2YKCShzeW50aGV0aWMpIHRyYW1hZG9sIGhhdmluZyBiZWVuIGZvdW5kIGluIENhbWVyb29u IHRyZWUgcm9vdHMuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYRW1hY3MtUGF0Y2hlcyBtYWlsaW5nIGxpc3QKWEVtYWNzLVBhdGNoZXNAeGVtYWNzLm9y ZwpodHRwOi8vbGlzdHMueGVtYWNzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbWFjcy1wYXRjaGVz Cg==