Content-Type: text/plain; charset="us-ascii"; format="flowed"
<NSGeometry.h.patch>
Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name="NSGeometry.h.patch" Content-Disposition: attachment; filename="NSGeometry.h.patch" SW5kZXg6IGJhc2UvSGVhZGVycy9nbnVzdGVwL2Jhc2UvTlNHZW9tZXRyeS5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2dudXN0ZXAvZ251c3RlcC9jb3JlL2Jhc2UvSGVh ZGVycy9nbnVzdGVwL2Jhc2UvTlNHZW9tZXRyeS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjE5CmRpZmYgLXUgLXIxLjE5IE5TR2VvbWV0cnkuaAotLS0gYmFzZS9IZWFkZXJzL2dudXN0 ZXAvYmFzZS9OU0dlb21ldHJ5LmgJOSBOb3YgMjAwMiAwNjo0NTozMSAtMDAwMAkxLjE5Cisr KyBiYXNlL0hlYWRlcnMvZ251c3RlcC9iYXNlL05TR2VvbWV0cnkuaAkxNSBOb3YgMjAwMiAw ODoxOTozNyAtMDAwMApAQCAtMTEwLDExICsxMTAsNyBAQAogR1NfR0VPTV9TQ09QRSBOU1Bv aW50CiBOU01ha2VQb2ludChmbG9hdCB4LCBmbG9hdCB5KQogewotICBOU1BvaW50IHBvaW50 OwotCi0gIHBvaW50LnggPSB4OwotICBwb2ludC55ID0geTsKLSAgcmV0dXJuIHBvaW50Owor ICByZXR1cm4gKE5TUG9pbnQpe3gsIHl9OwogfQogCiAvKiBSZXR1cm5zIGFuIE5TU2l6ZSBo YXZpbmcgd2lkdGggV0lEVEggYW5kIGhlaWdodCBIRUlHSFQuICovCkBAIC0xMjQsMTEgKzEy MCw3IEBACiBHU19HRU9NX1NDT1BFIE5TU2l6ZQogTlNNYWtlU2l6ZShmbG9hdCB3LCBmbG9h dCBoKQogewotICBOU1NpemUgc2l6ZTsKLQotICBzaXplLndpZHRoID0gdzsKLSAgc2l6ZS5o ZWlnaHQgPSBoOwotICByZXR1cm4gc2l6ZTsKKyAgcmV0dXJuIChOU1NpemUpe3csIGh9Owog fQogCiAvKiBSZXR1cm5zIGFuIE5TUmVjdCBoYXZpbmcgcG9pbnQgb2Ygb3JpZ2luIChYLCBZ KSBhbmQgc2l6ZSB7VywgSH0uICovCkBAIC0xMzgsMTMgKzEzMCw3IEBACiBHU19HRU9NX1ND T1BFIE5TUmVjdAogTlNNYWtlUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3LCBmbG9h dCBoKQogewotICBOU1JlY3QgcmVjdDsKLQotICByZWN0Lm9yaWdpbi54ID0geDsKLSAgcmVj dC5vcmlnaW4ueSA9IHk7Ci0gIHJlY3Quc2l6ZS53aWR0aCA9IHc7Ci0gIHJlY3Quc2l6ZS5o ZWlnaHQgPSBoOwotICByZXR1cm4gcmVjdDsKKyAgcmV0dXJuIChOU1JlY3Qpe3t4LCB5fSwg e3csIGh9fTsKIH0KIAogLyoqIEdldCBhIFJlY3RhbmdsZSdzIENvb3JkaW5hdGVzLi4uICoq LwpAQCAtMjM3LDcgKzIyMyw3IEBACiBHU19HRU9NX1NDT1BFIEJPT0wKIE5TSXNFbXB0eVJl Y3QoTlNSZWN0IGFSZWN0KQogewotICByZXR1cm4gKChOU1dpZHRoKGFSZWN0KSA+IDApICYm IChOU0hlaWdodChhUmVjdCkgPiAwKSkgPyBOTyA6IFlFUzsKKyAgcmV0dXJuICgoYVJlY3Qu c2l6ZS53aWR0aCA+IDApICYmIChhUmVjdC5zaXplLmhlaWdodCA+IDApKSA/IE5PIDogWUVT OwogfQogCiAvKiogTW9kaWZ5IGEgQ29weSBvZiBhIFJlY3RhbmdsZS4uLiAqKi8KQEAgLTI1 MCwxMSArMjM2LDcgQEAKIEdTX0dFT01fU0NPUEUgTlNSZWN0CiBOU09mZnNldFJlY3QoTlNS ZWN0IGFSZWN0LCBmbG9hdCBkeCwgZmxvYXQgZHkpCiB7Ci0gIE5TUmVjdCByZWN0ID0gYVJl Y3Q7Ci0KLSAgcmVjdC5vcmlnaW4ueCArPSBkeDsKLSAgcmVjdC5vcmlnaW4ueSArPSBkeTsK LSAgcmV0dXJuIHJlY3Q7CisgIHJldHVybiAoTlNSZWN0KXt7YVJlY3Qub3JpZ2luLnggKyBk eCwgYVJlY3Qub3JpZ2luLnkgKyBkeX0sIGFSZWN0LnNpemV9OwogfQogCiAvKiBSZXR1cm5z IHRoZSByZWN0YW5nbGUgb2J0YWluZWQgYnkgbW92aW5nIGVhY2ggb2YgQVJFQ1QncwpAQCAt MjY2LDEyICsyNDgsOCBAQAogR1NfR0VPTV9TQ09QRSBOU1JlY3QKIE5TSW5zZXRSZWN0KE5T UmVjdCBhUmVjdCwgZmxvYXQgZFgsIGZsb2F0IGRZKQogewotICBOU1JlY3QgcmVjdDsKLQot ICByZWN0ID0gTlNPZmZzZXRSZWN0KGFSZWN0LCBkWCwgZFkpOwotICByZWN0LnNpemUud2lk dGggLT0gKDIgKiBkWCk7Ci0gIHJlY3Quc2l6ZS5oZWlnaHQgLT0gKDIgKiBkWSk7Ci0gIHJl dHVybiByZWN0OworICByZXR1cm4gKE5TUmVjdCl7e2FSZWN0Lm9yaWdpbi54ICsgZFgsIGFS ZWN0Lm9yaWdpbi55ICsgZFl9LAorCSAge2FSZWN0LnNpemUud2lkdGggLSAyKmRYLCBhUmVj dC5zaXplLmhlaWdodCAtIDIqZFl9fTsKIH0KIAogLyogRGl2aWRlcyBBUkVDVCBpbnRvIHR3 byByZWN0YW5nbGVzIChuYW1lbHkgU0xJQ0UgYW5kIFJFTUFJTkRFUikgYnkKQEAgLTMwMywx MiArMjgxLDEzIEBACiBOU1VuaW9uUmVjdChOU1JlY3QgYVJlY3QsIE5TUmVjdCBiUmVjdCkK IHsKICAgTlNSZWN0IHJlY3Q7CisgIEJPT0wgZW1wdHlbMl0gPSB7TlNJc0VtcHR5UmVjdChh UmVjdCksIE5TSXNFbXB0eVJlY3QoYlJlY3QpfTsKIAotICBpZiAoTlNJc0VtcHR5UmVjdChh UmVjdCkgJiYgTlNJc0VtcHR5UmVjdChiUmVjdCkpCi0gICAgcmV0dXJuIE5TTWFrZVJlY3Qo MC4wLDAuMCwwLjAsMC4wKTsKLSAgZWxzZSBpZiAoTlNJc0VtcHR5UmVjdChhUmVjdCkpCisg IGlmIChlbXB0eVswXSAmJiBlbXB0eVsxXSkKKwlyZXR1cm4gTlNNYWtlUmVjdCgwLjAsMC4w LDAuMCwwLjApOworICBlbHNlIGlmIChlbXB0eVswXSkKICAgICByZXR1cm4gYlJlY3Q7Ci0g IGVsc2UgaWYgKE5TSXNFbXB0eVJlY3QoYlJlY3QpKQorICBlbHNlIGlmIChlbXB0eVsxXSkK ICAgICByZXR1cm4gYVJlY3Q7CiAKICAgcmVjdCA9IE5TTWFrZVJlY3QoTUlOKE5TTWluWChh UmVjdCksIE5TTWluWChiUmVjdCkpLApAQCAtNDA2LDMxICszODUsMzEgQEAKIAogLyogUmV0 dXJucyAnWUVTJyBpZmYgQVBPSU5UIGlzIGluc2lkZSBBUkVDVC4gKi8gCiBHU19HRU9NX1ND T1BFIEJPT0wKK05TUG9pbnRJblJlY3QoTlNQb2ludCBhUG9pbnQsIE5TUmVjdCBhUmVjdCkg R1NfR0VPTV9BVFRSOworCitHU19HRU9NX1NDT1BFIEJPT0wKK05TUG9pbnRJblJlY3QoTlNQ b2ludCBhUG9pbnQsIE5TUmVjdCBhUmVjdCkKK3sKKyAgcmV0dXJuICgoYVBvaW50LnggPj0g TlNNaW5YKGFSZWN0KSkKKyAgICAgICAgICAmJiAoYVBvaW50LnkgPj0gTlNNaW5ZKGFSZWN0 KSkKKwkJICAmJiAoYVBvaW50LnggPCBOU01heFgoYVJlY3QpKQorCQkgICYmIChhUG9pbnQu eSA8IE5TTWF4WShhUmVjdCkpKSA/IFlFUyA6IE5POworfQorCisvKiBKdXN0IGxpa2UgJ05T UG9pbnRJblJlY3QoYVBvaW50LCBhUmVjdCknIGJ1dCBzdXBwb3J0cyBmbGlwcGVkIFkgYXhp cyBjb29yZGluYXRlcy4gKi8KK0dTX0dFT01fU0NPUEUgQk9PTAogTlNNb3VzZUluUmVjdChO U1BvaW50IGFQb2ludCwgTlNSZWN0IGFSZWN0LCBCT09MIGZsaXBwZWQpIEdTX0dFT01fQVRU UjsKIAogR1NfR0VPTV9TQ09QRSBCT09MCiBOU01vdXNlSW5SZWN0KE5TUG9pbnQgYVBvaW50 LCBOU1JlY3QgYVJlY3QsIEJPT0wgZmxpcHBlZCkKIHsKICAgaWYgKGZsaXBwZWQpCi0gICAg cmV0dXJuICgoYVBvaW50LnggPj0gTlNNaW5YKGFSZWN0KSkKLSAgICAgICAgICAgICYmIChh UG9pbnQueSA+PSBOU01pblkoYVJlY3QpKQotICAgICAgICAgICAgJiYgKGFQb2ludC54IDwg TlNNYXhYKGFSZWN0KSkKLSAgICAgICAgICAgICYmIChhUG9pbnQueSA8IE5TTWF4WShhUmVj dCkpKSA/IFlFUyA6IE5POworICAgIHJldHVybiBOU1BvaW50SW5SZWN0KGFQb2ludCwgYVJl Y3QpOwogICBlbHNlCiAgICAgcmV0dXJuICgoYVBvaW50LnggPj0gTlNNaW5YKGFSZWN0KSkK ICAgICAgICAgICAgICYmIChhUG9pbnQueSA+IE5TTWluWShhUmVjdCkpCiAgICAgICAgICAg ICAmJiAoYVBvaW50LnggPCBOU01heFgoYVJlY3QpKQogICAgICAgICAgICAgJiYgKGFQb2lu dC55IDw9IE5TTWF4WShhUmVjdCkpKSA/IFlFUyA6IE5POwotfQotCi0vKiBKdXN0IGxpa2Ug J05TTW91c2VJblJlY3QoYVBvaW50LCBhUmVjdCwgWUVTKScuICovCi1HU19HRU9NX1NDT1BF IEJPT0wKLU5TUG9pbnRJblJlY3QoTlNQb2ludCBhUG9pbnQsIE5TUmVjdCBhUmVjdCkgR1Nf R0VPTV9BVFRSOwotCi1HU19HRU9NX1NDT1BFIEJPT0wKLU5TUG9pbnRJblJlY3QoTlNQb2lu dCBhUG9pbnQsIE5TUmVjdCBhUmVjdCkKLXsKLSAgcmV0dXJuIE5TTW91c2VJblJlY3QoYVBv aW50LCBhUmVjdCwgWUVTKTsKIH0KIAogLyogUmV0dXJucyAnWUVTJyBpZmYgQVJFQ1QgdG90 YWxseSBlbmNsb3NlcyBCUkVDVC4gIE5PVEU6IEZvcgo=
