Re: Decreasing seams in scaled windows
Neil Hodgson <[email protected]> Tue, 16 Jun 2026 09:56:08 +1000
| Newsgroups | gmane.comp.lib.scintilla.devel |
|---|---|
| Message-ID | <CACWkrTgsnwcr_8C53NfpBfFptT+5dURNTE3vHWJpG2i6MumVhQ@mail.gmail.com> |
--000000000000ab1cfb0654539277 Content-Type: text/plain; charset="UTF-8" An updated version is available that fixes problems with scrolling and position+size of calltips and autocompletion. A ScaleTechnique property was added with values SCALE_TECHNIQUE_DEFAULT=0, SCALE_TECHNIQUE_PIXEL_ALIGNED=1 controlled with a SCI_SETSCALETECHNIQUE API. The ScaleTechnique property may get additional enumeration values or modifying bit flags with future refinements. This feature is marked provisional so may change. While the calltips and autocompletion lists are positioned under the caret, they do not always flip above the caret when there is no room below. This is because scaling is not consistently taken into account when checking the bottom of the screen or window. Autocompletion lists were made slightly wider as text could be truncated with ... in some cases. This is from converting coordinates that are scaled by a fraction to integers and there may be other instances with similar issues. The patch changes the location of the output shared libraries to be in scintilla/bin as they were often in scintilla/qt/ScintillaEditBase/bin. Newer versions of qmake (or Qt Creator) seemed to use a different base or current directory when building and this caused problems for downstream projects like Haven that were coded to previous behaviour. Haven was updated as https://www.scintilla.org/HavenScale4.zip to match the changes in the patch. Patch attached. This may be committed to the main repository for the next release, so anyone who thinks it may cause problems or want changes should speak up now. Neil -- You received this message because you are subscribed to the Google Groups "scintilla-interest" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/scintilla-interest/CACWkrTgsnwcr_8C53NfpBfFptT%2B5dURNTE3vHWJpG2i6MumVhQ%40mail.gmail.com. --000000000000ab1cfb0654539277 Content-Type: text/plain; charset="US-ASCII"; name="QtScaleH.patch" Content-Disposition: attachment; filename="QtScaleH.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mqfvdxjh0> X-Attachment-Id: f_mqfvdxjh0 ZGlmZiAtciAwMzNjMzQyZTY2NTYgY2FsbC9TY2ludGlsbGFDYWxsLmN4eAotLS0gYS9jYWxsL1Nj aW50aWxsYUNhbGwuY3h4CVNhdCBKdW4gMTMgMTE6MDE6NTYgMjAyNiArMTAwMAorKysgYi9jYWxs L1NjaW50aWxsYUNhbGwuY3h4CVR1ZSBKdW4gMTYgMDk6MjQ6MzAgMjAyNiArMTAwMApAQCAtMzU1 OSw2ICszNTU5LDE0IEBACiAJQ2FsbFBvaW50ZXIoTWVzc2FnZTo6U2V0SUxleGVyLCAwLCBpbGV4 ZXIpOwogfQogCit2b2lkIFNjaW50aWxsYUNhbGw6OlNldFNjYWxlVGVjaG5pcXVlKFNjaW50aWxs YTo6U2NhbGVUZWNobmlxdWUgdGVjaG5pcXVlKSB7CisJQ2FsbChNZXNzYWdlOjpTZXRTY2FsZVRl Y2huaXF1ZSwgc3RhdGljX2Nhc3Q8dWludHB0cl90Pih0ZWNobmlxdWUpKTsKK30KKworU2NhbGVU ZWNobmlxdWUgU2NpbnRpbGxhQ2FsbDo6U2NhbGVUZWNobmlxdWUoKSB7CisJcmV0dXJuIHN0YXRp Y19jYXN0PFNjaW50aWxsYTo6U2NhbGVUZWNobmlxdWU+KENhbGwoTWVzc2FnZTo6R2V0U2NhbGVU ZWNobmlxdWUpKTsKK30KKwogQmlkaXJlY3Rpb25hbCBTY2ludGlsbGFDYWxsOjpCaWRpcmVjdGlv bmFsKCkgewogCXJldHVybiBzdGF0aWNfY2FzdDxTY2ludGlsbGE6OkJpZGlyZWN0aW9uYWw+KENh bGwoTWVzc2FnZTo6R2V0QmlkaXJlY3Rpb25hbCkpOwogfQpkaWZmIC1yIDAzM2MzNDJlNjY1NiBk b2MvU2NpbnRpbGxhRG9jLmh0bWwKLS0tIGEvZG9jL1NjaW50aWxsYURvYy5odG1sCVNhdCBKdW4g MTMgMTE6MDE6NTYgMjAyNiArMTAwMAorKysgYi9kb2MvU2NpbnRpbGxhRG9jLmh0bWwJVHVlIEp1 biAxNiAwOToyNDozMCAyMDI2ICsxMDAwCkBAIC01MTA2LDYgKzUxMDYsOCBAQAogICAgIDwvY29k ZT4KIDxkaXYgIGNsYXNzPSJwcm92aXNpb25hbCI+CiAgICAgPGNvZGU+CisgICAgIDxhIGNsYXNz PSJtZXNzYWdlIiBocmVmPSIjU0NJX1NFVFNDQUxFVEVDSE5JUVVFIj5TQ0lfU0VUU0NBTEVURUNI TklRVUUoaW50IHRlY2huaXF1ZSk8L2E+PGJyIC8+CisgICAgIDxhIGNsYXNzPSJtZXNzYWdlIiBo cmVmPSIjU0NJX0dFVFNDQUxFVEVDSE5JUVVFIj5TQ0lfR0VUU0NBTEVURUNITklRVUUgJnJhcnI7 IGludDwvYT48YnIgLz4KICAgICAgPGEgY2xhc3M9Im1lc3NhZ2UiIGhyZWY9IiNTQ0lfU0VUQklE SVJFQ1RJT05BTCI+PHNwYW4gY2xhc3M9InByb3Zpc2lvbmFsIj5TQ0lfU0VUQklESVJFQ1RJT05B TChpbnQgYmlkaXJlY3Rpb25hbCk8L3NwYW4+PC9hPjxiciAvPgogICAgICA8YSBjbGFzcz0ibWVz c2FnZSIgaHJlZj0iI1NDSV9HRVRCSURJUkVDVElPTkFMIj5TQ0lfR0VUQklESVJFQ1RJT05BTCAm cmFycjsgaW50PC9hPjxiciAvPgogICAgIDwvY29kZT4KQEAgLTUzNTYsNiArNTM1OCwzNSBAQAog ICAgICBub3RpZmljYXRpb24gKHdpdGggPGNvZGUgY2xhc3M9InBhcmFtZXRlciI+Y2hhcmFjdGVy U291cmNlPC9jb2RlPiBzZXQgdG8gPGNvZGU+U0NfQ0hBUkFDVEVSU09VUkNFX1RFTlRBVElWRV9J TlBVVDwvY29kZT4pIGlzIHNlbnQgZm9yIGVhY2ggY2hhcmFjdGVyLjwvcD4KIAogPGRpdiAgY2xh c3M9InByb3Zpc2lvbmFsIj4KKyAgIDxwPjxiIGlkPSJTQ0lfU0VUU0NBTEVURUNITklRVUUiPlND SV9TRVRTQ0FMRVRFQ0hOSVFVRShpbnQgdGVjaG5pcXVlKTwvYj48YnIgLz4KKyAgICAgPGIgaWQ9 IlNDSV9HRVRTQ0FMRVRFQ0hOSVFVRSI+U0NJX0dFVFNDQUxFVEVDSE5JUVVFICZyYXJyOyBpbnQ8 L2I+PGJyIC8+CisgICAgIFRoaXMgc2V0dGluZyBjaGFuZ2VzIHRoZSBpbXBsZW1lbnRhdGlvbiBv ZiBkaXNwbGF5IHNjYWxpbmcgb24gc29tZSBwbGF0Zm9ybXMuPC9wPgorCisgICAgPHRhYmxlIGNs YXNzPSJzdGFuZGFyZCIgc3VtbWFyeT0iVGVjaG5vbG9neSBjaG9pY2UiPgorICAgICAgPHRib2R5 IHZhbGlnbj0idG9wIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0aCBhbGlnbj0ibGVmdCI+ PGNvZGU+U0NBTEVfVEVDSE5JUVVFX0RFRkFVTFQ8L2NvZGU+PC90aD4KKworICAgICAgICAgIDx0 ZD4wPC90ZD4KKworICAgICAgICAgIDx0ZD5EZWZhdWx0IGJlaGF2aW91ciBmb3IgdGhlIHBsYXRm b3JtLjwvdGQ+CisgICAgICAgIDwvdHI+CisKKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0aCBh bGlnbj0ibGVmdCI+PGNvZGU+U0NBTEVfVEVDSE5JUVVFX1BJWEVMX0FMSUdORUQ8L2NvZGU+PC90 aD4KKworICAgICAgICAgIDx0ZD4xPC90ZD4KKworICAgICAgICAgIDx0ZD5BbGlnbiB0b3AgYW5k IGJvdHRvbSBvZiBsaW5lcyB0byBwaHlzaWNhbCBwaXhlbHMgYW5kIGF2b2lkICdzZWFtcycgYmV0 d2VlbiBiYWNrZ3JvdW5kIHJlY3RhbmdsZXMgZm9yIGZyYWN0aW9uYWwgc2NhbGluZy4KKwkgIElt cGxlbWVudGVkIG9uIFF0LiBUaGlzIG1vZGUgbWF5IGJlIHNsb3dlciB0aGFuIHRoZSBkZWZhdWx0 LjwvdGQ+CisgICAgICAgIDwvdHI+CisKKyAgICAgIDwvdGJvZHk+CisgICAgPC90YWJsZT4KKzwv ZGl2PgorICAgIDxiciAvPgorCis8ZGl2ICBjbGFzcz0icHJvdmlzaW9uYWwiPgogICAgIDxhIGhy ZWY9IiNQcm92aXNpb25hbE1lc3NhZ2VzIj5UaGVzZSBiaWRpcmVjdGlvbmFsIGZlYXR1cmVzIGFy ZSBleHBlcmltZW50YWwgYW5kIGluY29tcGxldGUuPC9hPjxiciAvPgogICAgIDxwPjxiIGlkPSJT Q0lfU0VUQklESVJFQ1RJT05BTCI+U0NJX1NFVEJJRElSRUNUSU9OQUwoaW50IGJpZGlyZWN0aW9u YWwpPC9iPjxiciAvPgogICAgICA8YiBpZD0iU0NJX0dFVEJJRElSRUNUSU9OQUwiPlNDSV9HRVRC SURJUkVDVElPTkFMICZyYXJyOyBpbnQ8L2I+PGJyIC8+CmRpZmYgLXIgMDMzYzM0MmU2NjU2IGlu Y2x1ZGUvU2NpbnRpbGxhLmgKLS0tIGEvaW5jbHVkZS9TY2ludGlsbGEuaAlTYXQgSnVuIDEzIDEx OjAxOjU2IDIwMjYgKzEwMDAKKysrIGIvaW5jbHVkZS9TY2ludGlsbGEuaAlUdWUgSnVuIDE2IDA5 OjI0OjMwIDIwMjYgKzEwMDAKQEAgLTEzMzMsNiArMTMzMywxMCBAQAogI2RlZmluZSBTQ05fTUFS R0lOUklHSFRDTElDSyAyMDMxCiAjZGVmaW5lIFNDTl9BVVRPQ1NFTEVDVElPTkNIQU5HRSAyMDMy CiAjaWZuZGVmIFNDSV9ESVNBQkxFX1BST1ZJU0lPTkFMCisjZGVmaW5lIFNDQUxFX1RFQ0hOSVFV RV9ERUZBVUxUIDAKKyNkZWZpbmUgU0NBTEVfVEVDSE5JUVVFX1BJWEVMX0FMSUdORUQgMQorI2Rl ZmluZSBTQ0lfU0VUU0NBTEVURUNITklRVUUgMjgyMAorI2RlZmluZSBTQ0lfR0VUU0NBTEVURUNI TklRVUUgMjgyMQogI2RlZmluZSBTQ19CSURJUkVDVElPTkFMX0RJU0FCTEVEIDAKICNkZWZpbmUg U0NfQklESVJFQ1RJT05BTF9MMlIgMQogI2RlZmluZSBTQ19CSURJUkVDVElPTkFMX1IyTCAyCmRp ZmYgLXIgMDMzYzM0MmU2NjU2IGluY2x1ZGUvU2NpbnRpbGxhLmlmYWNlCi0tLSBhL2luY2x1ZGUv U2NpbnRpbGxhLmlmYWNlCVNhdCBKdW4gMTMgMTE6MDE6NTYgMjAyNiArMTAwMAorKysgYi9pbmNs dWRlL1NjaW50aWxsYS5pZmFjZQlUdWUgSnVuIDE2IDA5OjI0OjMwIDIwMjYgKzEwMDAKQEAgLTM1 NDIsNiArMzU0MiwxNiBAQAogCiBjYXQgUHJvdmlzaW9uYWwKIAorZW51IFNjYWxlVGVjaG5pcXVl PVNDQUxFX1RFQ0hOSVFVRV8KK3ZhbCBTQ0FMRV9URUNITklRVUVfREVGQVVMVD0wCit2YWwgU0NB TEVfVEVDSE5JUVVFX1BJWEVMX0FMSUdORUQ9MQorCisjIFNldCB0aGUgc2NhbGUgdGVjaG5pcXVl CitzZXQgdm9pZCBTZXRTY2FsZVRlY2huaXF1ZT0yODIwKFNjYWxlVGVjaG5pcXVlIHRlY2huaXF1 ZSwpCisKKyMgR2V0IHRoZSBzY2FsZSB0ZWNobmlxdWUKK2dldCBTY2FsZVRlY2huaXF1ZSBHZXRT Y2FsZVRlY2huaXF1ZT0yODIxKCwpCisKIGVudSBCaWRpcmVjdGlvbmFsPVNDX0JJRElSRUNUSU9O QUxfCiB2YWwgU0NfQklESVJFQ1RJT05BTF9ESVNBQkxFRD0wCiB2YWwgU0NfQklESVJFQ1RJT05B TF9MMlI9MQpkaWZmIC1yIDAzM2MzNDJlNjY1NiBpbmNsdWRlL1NjaW50aWxsYUNhbGwuaAotLS0g YS9pbmNsdWRlL1NjaW50aWxsYUNhbGwuaAlTYXQgSnVuIDEzIDExOjAxOjU2IDIwMjYgKzEwMDAK KysrIGIvaW5jbHVkZS9TY2ludGlsbGFDYWxsLmgJVHVlIEp1biAxNiAwOToyNDozMCAyMDI2ICsx MDAwCkBAIC05MzUsNiArOTM1LDggQEAKIAlpbnQgRGVzY3JpcHRpb25PZlN0eWxlKGludCBzdHls ZSwgY2hhciAqZGVzY3JpcHRpb24pOwogCXN0ZDo6c3RyaW5nIERlc2NyaXB0aW9uT2ZTdHlsZShp bnQgc3R5bGUpOwogCXZvaWQgU2V0SUxleGVyKHZvaWQgKmlsZXhlcik7CisJdm9pZCBTZXRTY2Fs ZVRlY2huaXF1ZShTY2ludGlsbGE6OlNjYWxlVGVjaG5pcXVlIHRlY2huaXF1ZSk7CisJU2NpbnRp bGxhOjpTY2FsZVRlY2huaXF1ZSBTY2FsZVRlY2huaXF1ZSgpOwogCVNjaW50aWxsYTo6QmlkaXJl Y3Rpb25hbCBCaWRpcmVjdGlvbmFsKCk7CiAJdm9pZCBTZXRCaWRpcmVjdGlvbmFsKFNjaW50aWxs YTo6QmlkaXJlY3Rpb25hbCBiaWRpcmVjdGlvbmFsKTsKIApkaWZmIC1yIDAzM2MzNDJlNjY1NiBp bmNsdWRlL1NjaW50aWxsYU1lc3NhZ2VzLmgKLS0tIGEvaW5jbHVkZS9TY2ludGlsbGFNZXNzYWdl cy5oCVNhdCBKdW4gMTMgMTE6MDE6NTYgMjAyNiArMTAwMAorKysgYi9pbmNsdWRlL1NjaW50aWxs YU1lc3NhZ2VzLmgJVHVlIEp1biAxNiAwOToyNDozMCAyMDI2ICsxMDAwCkBAIC04MzEsNiArODMx LDggQEAKIAlUYWdzT2ZTdHlsZSA9IDQwMzEsCiAJRGVzY3JpcHRpb25PZlN0eWxlID0gNDAzMiwK IAlTZXRJTGV4ZXIgPSA0MDMzLAorCVNldFNjYWxlVGVjaG5pcXVlID0gMjgyMCwKKwlHZXRTY2Fs ZVRlY2huaXF1ZSA9IDI4MjEsCiAJR2V0QmlkaXJlY3Rpb25hbCA9IDI3MDgsCiAJU2V0QmlkaXJl Y3Rpb25hbCA9IDI3MDksCiB9OwpkaWZmIC1yIDAzM2MzNDJlNjY1NiBpbmNsdWRlL1NjaW50aWxs YVR5cGVzLmgKLS0tIGEvaW5jbHVkZS9TY2ludGlsbGFUeXBlcy5oCVNhdCBKdW4gMTMgMTE6MDE6 NTYgMjAyNiArMTAwMAorKysgYi9pbmNsdWRlL1NjaW50aWxsYVR5cGVzLmgJVHVlIEp1biAxNiAw OToyNDozMCAyMDI2ICsxMDAwCkBAIC02NTcsNiArNjU3LDExIEBACiAJSW1lUmVzdWx0ID0gMiwK IH07CiAKK2VudW0gY2xhc3MgU2NhbGVUZWNobmlxdWUgeworCURlZmF1bHQgPSAwLAorCVBpeGVs QWxpZ25lZCA9IDEsCit9OworCiBlbnVtIGNsYXNzIEJpZGlyZWN0aW9uYWwgewogCURpc2FibGVk ID0gMCwKIAlMMlIgPSAxLApkaWZmIC1yIDAzM2MzNDJlNjY1NiBxdC9TY2ludGlsbGFFZGl0QmFz ZS9QbGF0UXQuY3BwCi0tLSBhL3F0L1NjaW50aWxsYUVkaXRCYXNlL1BsYXRRdC5jcHAJU2F0IEp1 biAxMyAxMTowMTo1NiAyMDI2ICsxMDAwCisrKyBiL3F0L1NjaW50aWxsYUVkaXRCYXNlL1BsYXRR dC5jcHAJVHVlIEp1biAxNiAwOToyNDozMCAyMDI2ICsxMDAwCkBAIC0xODMsMTMgKzE4MywxNCBA QAogCiBTdXJmYWNlSW1wbDo6U3VyZmFjZUltcGwoKSA9IGRlZmF1bHQ7CiAKLVN1cmZhY2VJbXBs OjpTdXJmYWNlSW1wbChpbnQgd2lkdGgsIGludCBoZWlnaHQsIFN1cmZhY2VNb2RlIG1vZGVfKQor U3VyZmFjZUltcGw6OlN1cmZhY2VJbXBsKGludCB3aWR0aCwgaW50IGhlaWdodCwgU3VyZmFjZU1v ZGUgbW9kZV8sIHFyZWFsIHNjYWxlXykKIHsKIAlpZiAod2lkdGggPCAxKSB3aWR0aCA9IDE7CiAJ aWYgKGhlaWdodCA8IDEpIGhlaWdodCA9IDE7CiAJZGV2aWNlT3duZWQgPSB0cnVlOwogCWRldmlj ZSA9IG5ldyBRUGl4bWFwKHdpZHRoLCBoZWlnaHQpOwogCW1vZGUgPSBtb2RlXzsKKwlzY2FsZSA9 IHNjYWxlXzsKIH0KIAogU3VyZmFjZUltcGw6On5TdXJmYWNlSW1wbCgpCkBAIC0yMTIsMjEgKzIx Myw0NCBAQAogCXBhaW50ZXJPd25lZCA9IGZhbHNlOwogfQogCitkb3VibGUgU2NhbGVPZldpbmRv dyhXaW5kb3dJRCB3aWQpCit7CisJY29uc3QgUVdpZGdldCAqd2lkZ2V0ID0gd2luZG93KHdpZCk7 CisJaWYgKCF3aWRnZXQpIHsKKwkJcmV0dXJuIDEuMDsKKwl9CisJY29uc3QgUVZhcmlhbnQgdmFy aWFudCA9IHdpZGdldC0+cHJvcGVydHkoIlNjaW50aWxsYVNjYWxlIik7CisJcmV0dXJuIHZhcmlh bnQudG9Eb3VibGUoKTsKK30KKworZG91YmxlIFNjYWxlVG9NdWx0aXBseShXaW5kb3dJRCB3aWQp Cit7CisJY29uc3QgcXJlYWwgc2NhbGUgPSBTY2FsZU9mV2luZG93KHdpZCk7CisJcmV0dXJuIHNj YWxlID8gc2NhbGUgOiAxLjA7Cit9CisKIHZvaWQgU3VyZmFjZUltcGw6OkluaXQoV2luZG93SUQg d2lkKQogewogCVJlbGVhc2UoKTsKLQlkZXZpY2UgPSBzdGF0aWNfY2FzdDxRV2lkZ2V0ICo+KHdp ZCk7CisJZGV2aWNlID0gd2luZG93KHdpZCk7CisJc2NhbGUgPSBTY2FsZU9mV2luZG93KHdpZCk7 CiB9CiAKIHZvaWQgU3VyZmFjZUltcGw6OkluaXQoU3VyZmFjZUlEIHNpZCwgV2luZG93SUQgLyp3 aWQqLykKIHsKIAlSZWxlYXNlKCk7CiAJZGV2aWNlID0gc3RhdGljX2Nhc3Q8UVBhaW50RGV2aWNl ICo+KHNpZCk7CisJc2NhbGUgPSAwLjA7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxTdXJmYWNlPiBT dXJmYWNlSW1wbDo6QWxsb2NhdGVQaXhNYXAoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotCXJl dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN1cmZhY2VJbXBsPih3aWR0aCwgaGVpZ2h0LCBtb2RlKTsK KwlyZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTdXJmYWNlSW1wbD4od2lkdGgsIGhlaWdodCwgbW9k ZSwgc2NhbGUpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U3VyZmFjZT4gU3VyZmFjZUltcGxfQWxs b2NhdGVQaXhNYXAoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBTdXJmYWNlTW9kZSBtb2RlLCBxcmVh bCBzY2FsZSkKK3sKKwlyZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTdXJmYWNlSW1wbD4od2lkdGgs IGhlaWdodCwgbW9kZSwgc2NhbGUpOwogfQogCiB2b2lkIFN1cmZhY2VJbXBsOjpTZXRNb2RlKFN1 cmZhY2VNb2RlIG1vZGVfKQpAQCAtMzA5LDcgKzMzMywxMSBAQAogCiBpbnQgU3VyZmFjZUltcGw6 OkRldmljZUhlaWdodEZvbnQoaW50IHBvaW50cykKIHsKLQlyZXR1cm4gcG9pbnRzOworCWlmIChz Y2FsZSkgeworCQlyZXR1cm4gcG9pbnRzICogc2NhbGU7CisJfSBlbHNlIHsKKwkJcmV0dXJuIHBv aW50czsKKwl9CiB9CiAKIHZvaWQgU3VyZmFjZUltcGw6OkxpbmVEcmF3KFBvaW50IHN0YXJ0LCBQ b2ludCBlbmQsIFN0cm9rZSBzdHJva2UpCkBAIC03OTYsNiArODI0LDEwIEBACiAJCXBhaW50ZXIt PnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OlRleHRBbnRpYWxpYXNpbmcsIHRydWUpOwogCiAJCXBh aW50ZXItPnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgdHJ1ZSk7CisKKwkJ aWYgKHNjYWxlKSB7CisJCQlwYWludGVyLT5zY2FsZSgxLjAgLyBzY2FsZSwgMS4wIC8gc2NhbGUp OworCQl9CiAJfQogCiAJcmV0dXJuIHBhaW50ZXI7CkBAIC04MTEsMTEgKzg0Myw2IEBACiAKIG5h bWVzcGFjZSB7CiAKLVFXaWRnZXQgKndpbmRvdyhXaW5kb3dJRCB3aWQpIG5vZXhjZXB0Ci17Ci0J cmV0dXJuIHN0YXRpY19jYXN0PFFXaWRnZXQgKj4od2lkKTsKLX0KLQogUVJlY3QgU2NyZWVuUmVj dGFuZ2xlRm9yUG9pbnQoUVBvaW50IHBvc0dsb2JhbCkKIHsKICNpZiBRVF9WRVJTSU9OID49IFFU X1ZFUlNJT05fQ0hFQ0soNSwgMTAsIDApCkBAIC04NTQsNiArODgxLDggQEAKIAogdm9pZCBXaW5k b3c6OlNldFBvc2l0aW9uUmVsYXRpdmUoUFJlY3RhbmdsZSByYywgY29uc3QgV2luZG93ICpyZWxh dGl2ZVRvKQogeworCWNvbnN0IHFyZWFsIHNjYWxlID0gU2NhbGVUb011bHRpcGx5KHJlbGF0aXZl VG8tPndpZCk7CisJcmMgPSByYyAvIHNjYWxlOwogCVFQb2ludCBvUG9zID0gd2luZG93KHJlbGF0 aXZlVG8tPndpZCktPm1hcFRvR2xvYmFsKFFQb2ludCgwLDApKTsKIAlpbnQgb3ggPSBvUG9zLngo KTsKIAlpbnQgb3kgPSBvUG9zLnkoKTsKQEAgLTg4NCw3ICs5MTMsOSBAQAogUFJlY3RhbmdsZSBX aW5kb3c6OkdldENsaWVudFBvc2l0aW9uKCkgY29uc3QKIHsKIAkvLyBUaGUgY2xpZW50IHBvc2l0 aW9uIGlzIHRoZSB3aW5kb3cgcG9zaXRpb24KLQlyZXR1cm4gR2V0UG9zaXRpb24oKTsKKwljb25z dCBxcmVhbCBzY2FsZSA9IFNjYWxlVG9NdWx0aXBseSh3aWQpOworCWNvbnN0IFBSZWN0YW5nbGUg cmMgPSBHZXRQb3NpdGlvbigpOworCXJldHVybiByYyAqIHNjYWxlOwogfQogCiB2b2lkIFdpbmRv dzo6U2hvdyhib29sIHNob3cpCkBAIC05MDEsOCArOTMyLDIxIEBACiAKIHZvaWQgV2luZG93OjpJ bnZhbGlkYXRlUmVjdGFuZ2xlKFBSZWN0YW5nbGUgcmMpCiB7Ci0JaWYgKHdpZCkKKwlpZiAod2lk KSB7CisJCWNvbnN0IHFyZWFsIHNjYWxlID0gU2NhbGVPZldpbmRvdyh3aWQpOworCQlpZiAoc2Nh bGUpIHsKKyNpZiAhZGVmaW5lZChRX09TX1dJTikgJiYgIWRlZmluZWQoUV9PU19BUFBMRSkKKwkJ CS8vIFVzaW5nIFgxMSBvciBXYXlsYW5kLCBsaWtlbHkgTGludXggYnV0IG1heSBiZSBhIEJTRCBv ciBzaW1pbGFyCisJCQlpZiAoc2NhbGUgIT0gMS4wICYmIHNjYWxlICE9IDIuMCkgeworCQkJCS8v IEZyYWN0aW9uYWwgc2NhbGluZyBsZWF2ZXMgcmVwYWludCBkZWJyaXMsIHNvIHJlZHJhdyBjb21w bGV0ZWx5CisJCQkJd2luZG93KHdpZCktPnVwZGF0ZSgpOworCQkJCXJldHVybjsKKwkJCX0KKyNl bmRpZgorCQkJcmMgPSByYyAvIHNjYWxlOworCQl9CiAJCXdpbmRvdyh3aWQpLT51cGRhdGUoUVJl Y3RGcm9tUFJlY3QocmMpKTsKKwl9CiB9CiAKIHZvaWQgV2luZG93OjpTZXRDdXJzb3IoQ3Vyc29y IGN1cnMpCkBAIC05OTksNiArMTA0Myw3IEBACiAJaW50IHZpc2libGVSb3dzezV9OwogCVFNYXA8 aW50LFFQaXhtYXA+IGltYWdlczsKIAlmbG9hdCBpbWFnZVNjYWxlezEuMH07CisJUVdpZGdldCAq b3duZXIgPSBudWxscHRyOwogfTsKIExpc3RCb3hJbXBsOjpMaXN0Qm94SW1wbCgpIG5vZXhjZXB0 ID0gZGVmYXVsdDsKIApAQCAtMTAxMiw3ICsxMDU3LDEwIEBACiAJdW5pY29kZU1vZGUgPSB1bmlj b2RlTW9kZV87CiAKIAlRV2lkZ2V0ICpxcGFyZW50ID0gc3RhdGljX2Nhc3Q8UVdpZGdldCAqPihw YXJlbnQuR2V0SUQoKSk7CisJb3duZXIgPSBxcGFyZW50OwogCUxpc3RXaWRnZXQgKmxpc3QgPSBu ZXcgTGlzdFdpZGdldChxcGFyZW50KTsKKwljb25zdCBxcmVhbCBzY2FsZSA9IFNjYWxlT2ZXaW5k b3cocGFyZW50LkdldElEKCkpOworCWxpc3QtPnNldFByb3BlcnR5KCJTY2ludGlsbGFTY2FsZSIs IHNjYWxlKTsKIAogI2lmIGRlZmluZWQoUV9PU19XSU4pCiAJLy8gT24gV2luZG93cywgUXQ6OlRv b2xUaXAgY2F1c2VzIGEgY3Jhc2ggd2hlbiB0aGUgbGlzdCBpcyBjbGlja2VkIG9uCkBAIC0xMDU0 LDcgKzExMDIsMTQgQEAKIAlMaXN0V2lkZ2V0ICpsaXN0ID0gR2V0V2lkZ2V0KCk7CiAJY29uc3Qg Rm9udEFuZENoYXJhY3RlclNldCAqcGZhY3MgPSBBc0ZvbnRBbmRDaGFyYWN0ZXJTZXQoZm9udCk7 CiAJaWYgKHBmYWNzICYmIHBmYWNzLT5wZm9udCkgewotCQlsaXN0LT5zZXRGb250KCoocGZhY3Mt PnBmb250KSk7CisJCVFGb250IGZvbnREZVNjYWxlZCA9ICoocGZhY3MtPnBmb250KTsKKwkJY29u c3QgcXJlYWwgc2NhbGVPd25lciA9IFNjYWxlT2ZXaW5kb3cob3duZXIpOworCQlpZiAoc2NhbGVP d25lcikgeworCQkJY29uc3QgcXJlYWwgc2NhbGUgPSB3aW5kb3cob3duZXIpLT5kZXZpY2VQaXhl bFJhdGlvRigpOworCQkJcXJlYWwgcG9pbnRTaXplID0gZm9udERlU2NhbGVkLnBvaW50U2l6ZUYo KSAvIHNjYWxlOworCQkJZm9udERlU2NhbGVkLnNldFBvaW50U2l6ZUYocG9pbnRTaXplKTsKKwkJ fQorCQlsaXN0LT5zZXRGb250KGZvbnREZVNjYWxlZCk7CiAJfQogfQogdm9pZCBMaXN0Qm94SW1w bDo6U2V0QXZlcmFnZUNoYXJXaWR0aChpbnQgLyp3aWR0aCovKSB7fQpAQCAtMTA4MSwxMCArMTEz NiwxMSBAQAogCVFTdHlsZSAqc3R5bGUgPSBRQXBwbGljYXRpb246OnN0eWxlKCk7CiAJaW50IHdp ZHRoID0gbGlzdC0+c2l6ZUhpbnRGb3JDb2x1bW4oMCkgKyAoMiAqIGxpc3QtPmZyYW1lV2lkdGgo KSk7CiAJaWYgKExlbmd0aCgpID4gcm93cykgewotCQl3aWR0aCArPSBzdHlsZS0+cGl4ZWxNZXRy aWMoUVN0eWxlOjpQTV9TY3JvbGxCYXJFeHRlbnQpOworCQl3aWR0aCArPSBzdHlsZS0+cGl4ZWxN ZXRyaWMoUVN0eWxlOjpQTV9TY3JvbGxCYXJFeHRlbnQpICsgMTsKIAl9CiAKLQlyZXR1cm4gUFJl Y3RhbmdsZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKwljb25zdCBxcmVhbCBzY2FsZSA9IFNjYWxl T2ZXaW5kb3cod2lkKTsKKwlyZXR1cm4gUFJlY3RhbmdsZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KSAq IChzY2FsZSA/IHNjYWxlIDogMS4wKTsKIH0KIGludCBMaXN0Qm94SW1wbDo6Q2FyZXRGcm9tRWRn ZSgpCiB7CmRpZmYgLXIgMDMzYzM0MmU2NjU2IHF0L1NjaW50aWxsYUVkaXRCYXNlL1BsYXRRdC5o Ci0tLSBhL3F0L1NjaW50aWxsYUVkaXRCYXNlL1BsYXRRdC5oCVNhdCBKdW4gMTMgMTE6MDE6NTYg MjAyNiArMTAwMAorKysgYi9xdC9TY2ludGlsbGFFZGl0QmFzZS9QbGF0UXQuaAlUdWUgSnVuIDE2 IDA5OjI0OjMwIDIwMjYgKzEwMDAKQEAgLTc0LDYgKzc0LDEzIEBACiAJcmV0dXJuIFFQb2ludEYo cXAueCwgcXAueSk7CiB9CiAKK2lubGluZSBRV2lkZ2V0ICp3aW5kb3coV2luZG93SUQgd2lkKSBu b2V4Y2VwdAoreworCXJldHVybiBzdGF0aWNfY2FzdDxRV2lkZ2V0ICo+KHdpZCk7Cit9CisKK2Rv dWJsZSBTY2FsZU9mV2luZG93KFdpbmRvd0lEIHdpZCk7CisKIGNsYXNzIFN1cmZhY2VJbXBsIDog cHVibGljIFN1cmZhY2UgewogcHJpdmF0ZToKIAlRUGFpbnREZXZpY2UgKmRldmljZSA9IG51bGxw dHI7CkBAIC04MSw2ICs4OCw3IEBACiAJYm9vbCBkZXZpY2VPd25lZCA9IGZhbHNlOwogCWJvb2wg cGFpbnRlck93bmVkID0gZmFsc2U7CiAJU3VyZmFjZU1vZGUgbW9kZTsKKwlxcmVhbCBzY2FsZSA9 IDAuMDsKIAljb25zdCBjaGFyICpjb2RlY05hbWUgPSBudWxscHRyOwogCVFUZXh0Q29kZWMgKmNv ZGVjID0gbnVsbHB0cjsKIApAQCAtODgsNyArOTYsNyBAQAogCiBwdWJsaWM6CiAJU3VyZmFjZUlt cGwoKTsKLQlTdXJmYWNlSW1wbChpbnQgd2lkdGgsIGludCBoZWlnaHQsIFN1cmZhY2VNb2RlIG1v ZGVfKTsKKwlTdXJmYWNlSW1wbChpbnQgd2lkdGgsIGludCBoZWlnaHQsIFN1cmZhY2VNb2RlIG1v ZGVfLCBxcmVhbCBzY2FsZV8pOwogCXZpcnR1YWwgflN1cmZhY2VJbXBsKCkgb3ZlcnJpZGU7CiAK IAl2b2lkIEluaXQoV2luZG93SUQgd2lkKSBvdmVycmlkZTsKQEAgLTE2NCw2ICsxNzIsOCBAQAog CVFQYWludGVyICpHZXRQYWludGVyKCk7CiB9OwogCitzdGQ6OnVuaXF1ZV9wdHI8U3VyZmFjZT4g U3VyZmFjZUltcGxfQWxsb2NhdGVQaXhNYXAoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBTdXJmYWNl TW9kZSBtb2RlLCBxcmVhbCBzY2FsZSk7CisKIH0KIAogI2VuZGlmCmRpZmYgLXIgMDMzYzM0MmU2 NjU2IHF0L1NjaW50aWxsYUVkaXRCYXNlL1NjaW50aWxsYUVkaXRCYXNlLmNwcAotLS0gYS9xdC9T Y2ludGlsbGFFZGl0QmFzZS9TY2ludGlsbGFFZGl0QmFzZS5jcHAJU2F0IEp1biAxMyAxMTowMTo1 NiAyMDI2ICsxMDAwCisrKyBiL3F0L1NjaW50aWxsYUVkaXRCYXNlL1NjaW50aWxsYUVkaXRCYXNl LmNwcAlUdWUgSnVuIDE2IDA5OjI0OjMwIDIwMjYgKzEwMDAKQEAgLTEyNyw2ICsxMjcsMTMgQEAK IAl9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpIaWRlKSB7CiAJCXNldE1vdXNl VHJhY2tpbmcoZmFsc2UpOwogCQlyZXN1bHQgPSBRQWJzdHJhY3RTY3JvbGxBcmVhOjpldmVudChl dmVudCk7CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDYsIDYsIDApCisJfSBl bHNlIGlmIChldmVudC0+dHlwZSgpID09IFFFdmVudDo6RGV2aWNlUGl4ZWxSYXRpb0NoYW5nZSkg eworCQkvLyBSZXNldCBjYWNoZWQgZGF0YQorCQlzcXQtPlNldFNjYWxlUHJvcGVydHkoKTsKKwkJ c3F0LT5JbnZhbGlkYXRlU3R5bGVSZWRyYXcoKTsKKwkJcmVzdWx0ID0gUUFic3RyYWN0U2Nyb2xs QXJlYTo6ZXZlbnQoZXZlbnQpOworI2VuZGlmCiAJfSBlbHNlIHsKIAkJcmVzdWx0ID0gUUFic3Ry YWN0U2Nyb2xsQXJlYTo6ZXZlbnQoZXZlbnQpOwogCX0KQEAgLTMxOCw3ICszMjUsNyBAQAogCiB2 b2lkIFNjaW50aWxsYUVkaXRCYXNlOjptb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQgKmV2ZW50 KQogewotCWNvbnN0IFBvaW50IHBvcyA9IFBvaW50RnJvbVFQb2ludChldmVudC0+cG9zKCkpOwor CWNvbnN0IFBvaW50IHBvcyA9IFBvaW50RnJvbVFQb2ludChldmVudC0+cG9zKCkpICogKHNxdC0+ SXNQaXhlbEFsaWduZWRTY2FsZSgpID8gZGV2aWNlUGl4ZWxSYXRpb0YoKSA6IDEuMCk7CiAKIAll bWl0IGJ1dHRvblByZXNzZWQoZXZlbnQpOwogCkBAIC0zNDcsNyArMzU0LDcgQEAKIAogdm9pZCBT Y2ludGlsbGFFZGl0QmFzZTo6bW91c2VSZWxlYXNlRXZlbnQoUU1vdXNlRXZlbnQgKmV2ZW50KQog ewotCWNvbnN0IFFQb2ludCBwb2ludCA9IGV2ZW50LT5wb3MoKTsKKwljb25zdCBRUG9pbnQgcG9p bnQgPSBldmVudC0+cG9zKCkgKiAoc3F0LT5Jc1BpeGVsQWxpZ25lZFNjYWxlKCkgPyBkZXZpY2VQ aXhlbFJhdGlvRigpIDogMS4wKTsKIAlpZiAoZXZlbnQtPmJ1dHRvbigpID09IFF0OjpMZWZ0QnV0 dG9uKQogCQlzcXQtPkJ1dHRvblVwV2l0aE1vZGlmaWVycyhQb2ludEZyb21RUG9pbnQocG9pbnQp LCBUaW1lT2ZFdmVudCh0aW1lKSwgTW9kaWZpZXJzT2ZLZXlib2FyZCgpKTsKIApAQCAtMzY3LDcg KzM3NCw3IEBACiAKIHZvaWQgU2NpbnRpbGxhRWRpdEJhc2U6Om1vdXNlTW92ZUV2ZW50KFFNb3Vz ZUV2ZW50ICpldmVudCkKIHsKLQljb25zdCBQb2ludCBwb3MgPSBQb2ludEZyb21RUG9pbnQoZXZl bnQtPnBvcygpKTsKKwljb25zdCBQb2ludCBwb3MgPSBQb2ludEZyb21RUG9pbnQoZXZlbnQtPnBv cygpKSAgKiAoc3F0LT5Jc1BpeGVsQWxpZ25lZFNjYWxlKCkgPyBkZXZpY2VQaXhlbFJhdGlvRigp IDogMS4wKTsKIAogCWNvbnN0IGJvb2wgc2hpZnQgPSBRQXBwbGljYXRpb246OmtleWJvYXJkTW9k aWZpZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmllcjsKIAljb25zdCBib29sIGN0cmwgID0gUUFwcGxp Y2F0aW9uOjprZXlib2FyZE1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcjsKZGlmZiAt ciAwMzNjMzQyZTY2NTYgcXQvU2NpbnRpbGxhRWRpdEJhc2UvU2NpbnRpbGxhRWRpdEJhc2UucHJv Ci0tLSBhL3F0L1NjaW50aWxsYUVkaXRCYXNlL1NjaW50aWxsYUVkaXRCYXNlLnBybwlTYXQgSnVu IDEzIDExOjAxOjU2IDIwMjYgKzEwMDAKKysrIGIvcXQvU2NpbnRpbGxhRWRpdEJhc2UvU2NpbnRp bGxhRWRpdEJhc2UucHJvCVR1ZSBKdW4gMTYgMDk6MjQ6MzAgMjAyNiArMTAwMApAQCAtMTAwLDcg KzEwMCw3IEBACiAgICAgREVGSU5FUyArPSBOREVCVUc9MQogfQogCi1ERVNURElSID0gLi4vLi4v YmluCitERVNURElSID0gJCRfUFJPX0ZJTEVfUFdEXy8uLi8uLi9iaW4KIAogbWFjeCB7CiAJUU1B S0VfTEZMQUdTX1NPTkFNRSA9IC1XbCwtaW5zdGFsbF9uYW1lLEBleGVjdXRhYmxlX3BhdGgvLi4v RnJhbWV3b3Jrcy8KZGlmZiAtciAwMzNjMzQyZTY2NTYgcXQvU2NpbnRpbGxhRWRpdEJhc2UvU2Np bnRpbGxhUXQuY3BwCi0tLSBhL3F0L1NjaW50aWxsYUVkaXRCYXNlL1NjaW50aWxsYVF0LmNwcAlT YXQgSnVuIDEzIDExOjAxOjU2IDIwMjYgKzEwMDAKKysrIGIvcXQvU2NpbnRpbGxhRWRpdEJhc2Uv U2NpbnRpbGxhUXQuY3BwCVR1ZSBKdW4gMTYgMDk6MjQ6MzAgMjAyNiArMTAwMApAQCAtMzMsNiAr MzMsNyBAQAogewogCiAJd01haW4gPSBzY3JvbGxBcmVhLT52aWV3cG9ydCgpOworCXNjcm9sbEFy ZWEtPnZpZXdwb3J0KCktPnNldFByb3BlcnR5KCJTY2ludGlsbGFTY2FsZSIsIDAuMCk7CiAKIAlp bWVJbnRlcmFjdGlvbiA9IElNRUludGVyYWN0aW9uOjpJbmxpbmU7CiAKQEAgLTcxNSw3ICs3MTYs MTMgQEAKIAogCWlmICghY3Qud0NhbGxUaXAuQ3JlYXRlZCgpKSB7CiAJCVFXaWRnZXQgKnBDYWxs VGlwID0gbmV3IENhbGxUaXBJbXBsKHNjcm9sbEFyZWEtPndpbmRvdygpLT53aW5kb3dIYW5kbGUo KSwgJmN0KTsKKwkJY29uc3QgcXJlYWwgc2NhbGVEZXZpY2UgPSBTY2FsZU9mV2luZG93KHdNYWlu LkdldElEKCkpOworCQlwQ2FsbFRpcC0+c2V0UHJvcGVydHkoIlNjaW50aWxsYVNjYWxlIiwKKwkJ CXNjYWxlVGVjaG5pcXVlID09IFNjYWxlVGVjaG5pcXVlOjpQaXhlbEFsaWduZWQgPyBzY2FsZURl dmljZSA6IDAuMCk7CisKIAkJY3Qud0NhbGxUaXAgPSBwQ2FsbFRpcDsKKwkJaWYgKHNjYWxlRGV2 aWNlKQorCQkJcmMgPSByYyAqIHNjYWxlRGV2aWNlOwogCQlwQ2FsbFRpcC0+bW92ZShyYy5sZWZ0 LCByYy50b3ApOwogCQlwQ2FsbFRpcC0+cmVzaXplKHJjLldpZHRoKCksIHJjLkhlaWdodCgpKTsK IAl9CkBAIC03NzEsNiArNzc4LDE0IEBACiAJCWNhc2UgTWVzc2FnZTo6R2V0UmVjdGFuZ3VsYXJT ZWxlY3Rpb25Nb2RpZmllcjoKIAkJCXJldHVybiByZWN0YW5ndWxhclNlbGVjdGlvbk1vZGlmaWVy OwogCisJCWNhc2UgTWVzc2FnZTo6U2V0U2NhbGVUZWNobmlxdWU6CisJCQlzY2FsZVRlY2huaXF1 ZSA9IHN0YXRpY19jYXN0PFNjYWxlVGVjaG5pcXVlPih3UGFyYW0pOworCQkJSW52YWxpZGF0ZVN0 eWxlUmVkcmF3KCk7CisJCQlicmVhazsKKworCQljYXNlIE1lc3NhZ2U6OkdldFNjYWxlVGVjaG5p cXVlOgorCQkJcmV0dXJuIHN0YXRpY19jYXN0PHNwdHJfdD4oc2NhbGVUZWNobmlxdWUpOworCiAJ CWRlZmF1bHQ6CiAJCQlyZXR1cm4gU2NpbnRpbGxhQmFzZTo6V25kUHJvYyhpTWVzc2FnZSwgd1Bh cmFtLCBsUGFyYW0pOwogCQl9CkBAIC04MDUsMjAgKzgyMCw1NSBAQAogCXJldHVybiByZXR1cm5W YWx1ZTsKIH0KIAordm9pZCBTY2ludGlsbGFRdDo6U2V0U2NhbGVQcm9wZXJ0eSgpCit7CisJcXJl YWwgc2NhbGUgPSAwLjA7CisJaWYgKHNjYWxlVGVjaG5pcXVlID09IFNjYWxlVGVjaG5pcXVlOjpQ aXhlbEFsaWduZWQpIHsKKwkJUVdpZGdldCAqd2lkZ2V0ID0gd2luZG93KHdNYWluLkdldElEKCkp OworCQlzY2FsZSA9IHdpZGdldC0+ZGV2aWNlUGl4ZWxSYXRpb0YoKTsKKwl9CisJc2Nyb2xsQXJl YS0+dmlld3BvcnQoKS0+c2V0UHJvcGVydHkoIlNjaW50aWxsYVNjYWxlIiwgc2NhbGUpOworfQor CiAvLyBBZGRpdGlvbnMgdG8gbWVyZ2UgaW4gU2NpZW50aWZpYyBUb29sd29ya3Mgd2lkZ2V0IHN0 cnVjdHVyZQogCiB2b2lkIFNjaW50aWxsYVF0OjpQYXJ0aWFsUGFpbnQoY29uc3QgUFJlY3Rhbmds ZSAmcmVjdCkKIHsKLQlyY1BhaW50ID0gcmVjdDsKKwlTZXRTY2FsZVByb3BlcnR5KCk7CisJaWYg KHNjYWxlVGVjaG5pcXVlID09IFNjYWxlVGVjaG5pcXVlOjpQaXhlbEFsaWduZWQpIHsKKwkJUVdp ZGdldCAqd2lkZ2V0ID0gd2luZG93KHdNYWluLkdldElEKCkpOworCQlyY1BhaW50ID0gcmVjdCAq IHdpZGdldC0+ZGV2aWNlUGl4ZWxSYXRpb0YoKTsKKwl9IGVsc2UgeworCQlyY1BhaW50ID0gcmVj dDsKKwl9CiAJcGFpbnRTdGF0ZSA9IFBhaW50U3RhdGU6OnBhaW50aW5nOwogCVBSZWN0YW5nbGUg cmNDbGllbnQgPSBHZXRDbGllbnRSZWN0YW5nbGUoKTsKIAlwYWludGluZ0FsbFRleHQgPSByY1Bh aW50LkNvbnRhaW5zKHJjQ2xpZW50KTsKIAogCUF1dG9TdXJmYWNlIHN1cmZhY2VQYWludCh0aGlz KTsKLQlQYWludChzdXJmYWNlUGFpbnQsIHJjUGFpbnQpOworCWlmIChzY2FsZVRlY2huaXF1ZSA9 PSBTY2FsZVRlY2huaXF1ZTo6UGl4ZWxBbGlnbmVkKSB7CisJCS8vIENyZWF0ZSBCaXRtYXAgb2Yg ZXhhY3RseSB3aW5kb3cgc2l6ZSB0aGVuIGJsaXQgYWZ0ZXIgUGFpbnQgY2FsbAorCQlRV2lkZ2V0 ICp3aWRnZXQgPSB3aW5kb3cod01haW4uR2V0SUQoKSk7CisJCWNvbnN0IHFyZWFsIHNjYWxlID0g d2lkZ2V0LT5kZXZpY2VQaXhlbFJhdGlvRigpOworCQljb25zdCBRU2l6ZSBzeiA9IHdpZGdldC0+ c2l6ZSgpICogc2NhbGU7CisJCWNvbnN0IGludCB3ID0gc3oud2lkdGgoKTsKKwkJY29uc3QgaW50 IGggPSBzei5oZWlnaHQoKTsKKwkJc3RkOjp1bmlxdWVfcHRyPFN1cmZhY2U+IHN1cmZQaXggPSBT dXJmYWNlSW1wbF9BbGxvY2F0ZVBpeE1hcCh3LCBoLCBDdXJyZW50U3VyZmFjZU1vZGUoKSwgMC4w KTsKKwkJUFJlY3RhbmdsZSByY1NjYWxlZCA9IFBSZWN0YW5nbGU6OkZyb21JbnRzKDAsIDAsIHcs IGgpOworCQlQYWludChzdXJmUGl4LmdldCgpLCByY1NjYWxlZCk7CisJCXN1cmZhY2VQYWludC0+ Q29weShyY1NjYWxlZCwgUG9pbnQoMCwwKSwgKnN1cmZQaXgpOworCX0gZWxzZSB7CisJCVBhaW50 KHN1cmZhY2VQYWludCwgcmNQYWludCk7CisJfQogCXN1cmZhY2VQYWludC0+UmVsZWFzZSgpOwog CiAJaWYgKHBhaW50U3RhdGUgPT0gUGFpbnRTdGF0ZTo6YWJhbmRvbmVkKSB7CisJCWlmIChzY2Fs ZVRlY2huaXF1ZSA9PSBTY2FsZVRlY2huaXF1ZTo6UGl4ZWxBbGlnbmVkKSB7CisJCQkvLyBTaG91 bGQgdHJ5IG1vcmUgcmVwYWlyIGJ1dCBqdXN0IHF1ZXVlIGEgZnVsbCByZXBhaW50LgorCQkJc2Ny b2xsQXJlYS0+dmlld3BvcnQoKS0+dXBkYXRlKCk7CisJCQlwYWludFN0YXRlID0gUGFpbnRTdGF0 ZTo6bm90UGFpbnRpbmc7CisJCQlyZXR1cm47CisJCX0KIAkJLy8gRklYTUU6IEZhaWx1cmUgdG8g cGFpbnQgdGhlIHJlcXVlc3RlZCByZWN0YW5nbGUgaW4gZWFjaAogCQkvLyBwYWludCBldmVudCBj YXVzZXMgZmxpY2tlciBvbiBzb21lIHBsYXRmb3JtcyAoTWFjPykKIAkJLy8gUGFpbnQgcmVjdCBp bW1lZGlhdGVseS4KZGlmZiAtciAwMzNjMzQyZTY2NTYgcXQvU2NpbnRpbGxhRWRpdEJhc2UvU2Np bnRpbGxhUXQuaAotLS0gYS9xdC9TY2ludGlsbGFFZGl0QmFzZS9TY2ludGlsbGFRdC5oCVNhdCBK dW4gMTMgMTE6MDE6NTYgMjAyNiArMTAwMAorKysgYi9xdC9TY2ludGlsbGFFZGl0QmFzZS9TY2lu dGlsbGFRdC5oCVR1ZSBKdW4gMTYgMDk6MjQ6MzAgMjAyNiArMTAwMApAQCAtMTU2LDYgKzE1Niwx MSBAQAogCXN0YXRpYyBzcHRyX3QgRGlyZWN0U3RhdHVzRnVuY3Rpb24oc3B0cl90IHB0ciwKIAkJ CQkgICAgIHVuc2lnbmVkIGludCBpTWVzc2FnZSwgdXB0cl90IHdQYXJhbSwgc3B0cl90IGxQYXJh bSwgaW50ICpwU3RhdHVzKTsKIAorCXZvaWQgU2V0U2NhbGVQcm9wZXJ0eSgpOworCWJvb2wgSXNQ aXhlbEFsaWduZWRTY2FsZSgpIGNvbnN0IG5vZXhjZXB0IHsKKwkJcmV0dXJuIHNjYWxlVGVjaG5p cXVlID09IFNjYWxlVGVjaG5pcXVlOjpQaXhlbEFsaWduZWQ7CisJfQorCiBwcm90ZWN0ZWQ6CiAK IAl2b2lkIFBhcnRpYWxQYWludChjb25zdCBQUmVjdGFuZ2xlICZyZWN0KTsKQEAgLTE3OCw2ICsx ODMsOCBAQAogCWJvb2wgZHJhZ1dhc0Ryb3BwZWQ7CiAJaW50IHJlY3Rhbmd1bGFyU2VsZWN0aW9u TW9kaWZpZXI7CiAKKwlTY2FsZVRlY2huaXF1ZSBzY2FsZVRlY2huaXF1ZSA9IFNjYWxlVGVjaG5p cXVlOjpEZWZhdWx0OworCiAJZnJpZW5kIGNsYXNzIDo6U2NpbnRpbGxhRWRpdEJhc2U7CiB9Owog CmRpZmYgLXIgMDMzYzM0MmU2NjU2IHNyYy9HZW9tZXRyeS5oCi0tLSBhL3NyYy9HZW9tZXRyeS5o CVNhdCBKdW4gMTMgMTE6MDE6NTYgMjAyNiArMTAwMAorKysgYi9zcmMvR2VvbWV0cnkuaAlUdWUg SnVuIDE2IDA5OjI0OjMwIDIwMjYgKzEwMDAKQEAgLTQ1LDYgKzQ1LDEwIEBACiAJCXJldHVybiBQ b2ludCh4IC0gb3RoZXIueCwgeSAtIG90aGVyLnkpOwogCX0KIAorCWNvbnN0ZXhwciBQb2ludCBv cGVyYXRvciooWFlQT1NJVElPTiBtdWx0aXBsaWVyKSBjb25zdCBub2V4Y2VwdCB7CisJCXJldHVy biBQb2ludCh4ICogbXVsdGlwbGllciwgeSAqIG11bHRpcGxpZXIpOworCX0KKwogCS8vIE90aGVy IGF1dG9tYXRpY2FsbHkgZGVmaW5lZCBtZXRob2RzIChhc3NpZ25tZW50LCBjb3B5IGNvbnN0cnVj dG9yLCBkZXN0cnVjdG9yKSBhcmUgZmluZQogfTsKIApAQCAtMTAxLDYgKzEwNSwxNSBAQAogCQly ZXR1cm4gKHJjLmxlZnQgPT0gbGVmdCkgJiYgKHJjLnJpZ2h0ID09IHJpZ2h0KSAmJgogCQkJKHJj LnRvcCA9PSB0b3ApICYmIChyYy5ib3R0b20gPT0gYm90dG9tKTsKIAl9CisJCisJY29uc3RleHBy IFBSZWN0YW5nbGUgb3BlcmF0b3IqKFhZUE9TSVRJT04gbXVsdGlwbGllcikgY29uc3Qgbm9leGNl cHQgeworCQlyZXR1cm4gUFJlY3RhbmdsZShsZWZ0ICogbXVsdGlwbGllciwgdG9wICogbXVsdGlw bGllciwgcmlnaHQgKiBtdWx0aXBsaWVyLCBib3R0b20gKiBtdWx0aXBsaWVyKTsKKwl9CisKKwlj b25zdGV4cHIgUFJlY3RhbmdsZSBvcGVyYXRvci8oWFlQT1NJVElPTiBkaXZpc29yKSBjb25zdCBu b2V4Y2VwdCB7CisJCXJldHVybiBQUmVjdGFuZ2xlKGxlZnQgLyBkaXZpc29yLCB0b3AgLyBkaXZp c29yLCByaWdodCAvIGRpdmlzb3IsIGJvdHRvbSAvIGRpdmlzb3IpOworCX0KKwogCWNvbnN0ZXhw ciBib29sIENvbnRhaW5zKFBvaW50IHB0KSBjb25zdCBub2V4Y2VwdCB7CiAJCXJldHVybiAocHQu eCA+PSBsZWZ0KSAmJiAocHQueCA8PSByaWdodCkgJiYKIAkJCShwdC55ID49IHRvcCkgJiYgKHB0 LnkgPD0gYm90dG9tKTsK --000000000000ab1cfb0654539277--