From: marko.makela Date: April 17 2012 2:08pm Subject: bzr push into mysql-trunk-wl5545 branch (marko.makela:3890 to 3894) List-Archive: http://lists.mysql.com/commits/143566 Message-Id: <201204171408.q3HE8Yel023606@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4OTQgTWFya28gTcOka2Vsw6QJMjAxMi0wNC0xNwogICAgICByZWN2X3JlY292ZXJ5X2Zyb21f Y2hlY2twb2ludF9zdGFydF9mdW5jKCk6IFJlbW92ZSBhIGNvbXBpbGVyIHdhcm5pbmcuCgogICAg bW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzByZWN2LmNjCiAzODkzIE1h cmtvIE3DpGtlbMOkCTIwMTItMDQtMTcKICAgICAgV0wjNTU0NSBBbGxvdyBtdWx0aXBsZSBjb2x1 bW5zIHRvIGJlIHJlbmFtZWQgdG8gZWFjaCBvdGhlci4KICAgICAgRml4IGNsYXNoZXMgd2l0aCBG VFNfRE9DX0lELgogICAgICAKICAgICAgbWVyZ2VfaW5kZXhfZmllbGRfdDogUmVwbGFjZSBmaWVs ZF9uYW1lIHdpdGggY29sX25vLCBzbyB0aGF0CiAgICAgIGNvbHVtbiByZW5hbWluZyB3aWxsIG5v dCBpbnRlcmZlcmUgd2l0aCBpbmRleCBjcmVhdGlvbi4KICAgICAgCiAgICAgIGRpY3RfbWVtX3Rh YmxlX2NvbF9yZW5hbWUoKTogQWRkIHRoZSBwYXJhbWV0ZXIgbnRoX2NvbCwgYW5kIHJlbW92ZSB0 aGUKICAgICAgcmV0dXJuIHN0YXR1cy4KICAgICAgCiAgICAgIGlubm9iYXNlX2NyZWF0ZV9rZXlf ZGVmcygpLCBwcmVwYXJlX2lucGxhY2VfYWx0ZXJfdGFibGVfZGljdCgpOgogICAgICBBZGQgdGhl IHBhcmFtZXRlciBmdHNfZG9jX2lkX2NvbC4KICAgICAgCiAgICAgIGlubm9iYXNlX2Z1bGx0ZXh0 X2V4aXN0KCk6IE5ldyBwcmVkaWNhdGVkLCBmb3IgY2hlY2tpbmcgaWYgYSBmdWxsdGV4dAogICAg ICBpbmRleCBleGlzdHMgb24gYSB0YWJsZS4KICAgICAgCiAgICAgIGhhX2lubm9iYXNlOjpwcmVw YXJlX2lucGxhY2VfYWx0ZXJfdGFibGUoKTogUHJvaGliaXQgcmVuYW1pbmcgRlRTX0RPQ19JRAog ICAgICB3aGVuIGZ1bGx0ZXh0IGluZGV4ZXMgZXhpc3Qgb24gdGhlIHRhYmxlLiBQcm9oaWJpdCBy ZW5hbWluZyBjb2x1bW5zIHRvCiAgICAgIGludGVybmFsIGNvbHVtbiBuYW1lcyBkZWZpbmVkIGlu IHRoZSBJbm5vREIgdGFibGUgb2JqZWN0LgogICAgICAKICAgICAgaW5ub2Jhc2VfcmVuYW1lX2Nv bHVtbigpOiBBZGQgdGhlIHBhcmFtZXRlciBudGhfY29sLiBSZW5hbWUgdGhlIGNvbHVtbnMKICAg ICAgaW4gdGhlIGRhdGEgZGljdGlvbmFyeSBiYXNlZCBvbiBvbGQgbmFtZSBhbmQgcG9zaXRpb24u CiAgICAgIAogICAgICBoYV9pbm5vYmFzZTo6Y29tbWl0X2lucGxhY2VfYWx0ZXJfdGFibGUoKTog SWYgYW4gb3BlcmF0aW9uIGZhaWxzLCByb2xsCiAgICAgIGJhY2sgdGhlIGRhdGEgZGljdGlvbmFy eSB0cmFuc2FjdGlvbi4KICAgICAgCiAgICAgIGRpY3RfdGFibGVfZ2V0X2luZGV4X2J5X21heF9p ZCgpOiBNZXJnZSB3aXRoIHJvd19tZXJnZV9kaWN0X3RhYmxlX2dldF9pbmRleCgpLAogICAgICBh bmQgbG9vayB1cCB0aGUgY29sdW1ucyBieSBudW1iZXIsIG5vdCBieSBuYW1lLgoKICAgIG1vZGlm aWVkOgogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYi1hbHRlci5yZXN1bHQK ICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGItYWx0ZXIudGVzdAogICAgICBz dG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBkaWN0LmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv ZGljdC9kaWN0MG1lbS5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBh bHRlci5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGljdDBkaWN0LmgKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwbWVtLmgKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL3JvdzBtZXJnZS5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBtZXJn ZS5jYwogMzg5MiBNYXJrbyBNw6RrZWzDpAkyMDEyLTA0LTE3CiAgICAgIFJlbW92ZSBhbiBleHRy YSBpbml0aWFsaXphdGlvbiBhbmQgYWRkIGEgZGVidWcgYXNzZXJ0aW9uLgoKICAgIG1vZGlmaWVk OgogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVwZC5pYwogMzg5MSBNYXJrbyBN w6RrZWzDpAkyMDEyLTA0LTE3CiAgICAgIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gaW5ub2Jhc2Vf Y3JlYXRlX2Z0c19kb2NfaWRfaWR4KCkuCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCiAzODkwIE1hcmtvIE3DpGtlbMOkCTIwMTIt MDQtMTYKICAgICAgV0wjNTU0NTogVGVzdCByZW5hbWluZyB0byB0aGUgcmVzZXJ2ZWQgY29sdW1u IG5hbWVzCiAgICAgIERCX1JPV19JRCwgREJfVFJYX0lELCBEQl9ST0xMX1BUUi4KCiAgICBtb2Rp ZmllZDoKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGItYWx0ZXIucmVzdWx0 CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiLWFsdGVyLnRlc3QKPT09IG1v ZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLWFsdGVyLnJlc3Vs dCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGItYWx0ZXIucmVzdWx0CXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNDE2MTgyNDU3LWp3OTh2bGkzdWpvZGNt eDkKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGItYWx0ZXIucmVzdWx0CXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNDE3MTQwNjAxLXE0eHl1ODlra3M3a3Jo MjEKQEAgLTQ0MSwyNCArNDQxLDkzIEBAIEFMVEVSIFRBQkxFIHQxbiBDSEFOR0UgYzEgRnRzX0RP Q19JRCBJTlQKIEVSUk9SIDQyMDAwOiBJbmNvcnJlY3QgY29sdW1uIG5hbWUgJ0ZUU19ET0NfSUQn CiBBTFRFUiBUQUJMRSB0MW4gQ0hBTkdFIGMxIEZ0c19ET0NfSUQgSU5ULCBBTEdPUklUSE09Q09Q WTsKIEVSUk9SIDQyMDAwOiBJbmNvcnJlY3QgY29sdW1uIG5hbWUgJ0Z0c19ET0NfSUQnCitBTFRF UiBUQUJMRSB0MW4gQ0hBTkdFIEZUU19ET0NfSUQgYzExIElOVCwgQUxHT1JJVEhNPUlOUExBQ0U7 CitFUlJPUiA0MlMyMjogVW5rbm93biBjb2x1bW4gJ0ZUU19ET0NfSUQnIGluICd0MW4nCiBBTFRF UiBUQUJMRSB0MW4gQ0hBTkdFIGMxIEZUU19ET0Nfw69EIElOVCwgQUxHT1JJVEhNPUlOUExBQ0U7 CitBTFRFUiBUQUJMRSB0MW4gQ0hBTkdFIEZUU19ET0Nfw49EIGMxIElOVCwgQUxHT1JJVEhNPUlO UExBQ0U7CitBTFRFUiBUQUJMRSB0MW4gQ0hBTkdFIGMxIGMyIElOVCwgQ0hBTkdFIGMyIGN0IElO VCwgQ0hBTkdFIGN0IGMxIFRFWFQsCitBTEdPUklUSE09SU5QTEFDRTsKK1NIT1cgQ1JFQVRFIFRB QkxFIHQxbjsKK1RhYmxlCUNyZWF0ZSBUYWJsZQordDFuCUNSRUFURSBUQUJMRSBgdDFuYCAoCisg IGBjMmAgaW50KDExKSBOT1QgTlVMTCBERUZBVUxUICcwJywKKyAgYGN0YCBpbnQoMTEpIERFRkFV TFQgTlVMTCwKKyAgYGMxYCB0ZXh0LAorICBQUklNQVJZIEtFWSAoYGMyYCksCisgIEZVTExURVhU IEtFWSBgY3RgIChgYzFgKQorKSBFTkdJTkU9SW5ub0RCIERFRkFVTFQgQ0hBUlNFVD1sYXRpbjEK K0FMVEVSIFRBQkxFIHQxbiBDSEFOR0UgYzIgYzEgSU5ULCBDSEFOR0UgY3QgYzIgSU5ULCBDSEFO R0UgYzEgY3QgVEVYVCwKK0FMR09SSVRITT1DT1BZOworU0hPVyBDUkVBVEUgVEFCTEUgdDFuOwor VGFibGUJQ3JlYXRlIFRhYmxlCit0MW4JQ1JFQVRFIFRBQkxFIGB0MW5gICgKKyAgYGMxYCBpbnQo MTEpIE5PVCBOVUxMIERFRkFVTFQgJzAnLAorICBgYzJgIGludCgxMSkgREVGQVVMVCBOVUxMLAor ICBgY3RgIHRleHQsCisgIFBSSU1BUlkgS0VZIChgYzFgKSwKKyAgRlVMTFRFWFQgS0VZIGBjdGAg KGBjdGApCispIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPWxhdGluMQorQUxURVIgVEFC TEUgdDFuIEFERCBJTkRFWChjMiksIENIQU5HRSBjMiBjNCBJTlQsIEFMR09SSVRITT1JTlBMQUNF OworRVJST1IgNDIwMDA6IEtleSBjb2x1bW4gJ2MyJyBkb2Vzbid0IGV4aXN0IGluIHRhYmxlCitB TFRFUiBUQUJMRSB0MW4gQUREIElOREVYKGMyKSwgQ0hBTkdFIGMyIGM0IElOVCwgQUxHT1JJVEhN PUNPUFk7CitFUlJPUiA0MjAwMDogS2V5IGNvbHVtbiAnYzInIGRvZXNuJ3QgZXhpc3QgaW4gdGFi bGUKK0FMVEVSIFRBQkxFIHQxbiBBREQgSU5ERVgoYzQpLCBDSEFOR0UgYzIgYzQgSU5ULCBBTEdP UklUSE09SU5QTEFDRTsKK1NIT1cgQ1JFQVRFIFRBQkxFIHQxbjsKK1RhYmxlCUNyZWF0ZSBUYWJs ZQordDFuCUNSRUFURSBUQUJMRSBgdDFuYCAoCisgIGBjMWAgaW50KDExKSBOT1QgTlVMTCBERUZB VUxUICcwJywKKyAgYGM0YCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKKyAgYGN0YCB0ZXh0LAorICBQ UklNQVJZIEtFWSAoYGMxYCksCisgIEtFWSBgYzRgIChgYzRgKSwKKyAgRlVMTFRFWFQgS0VZIGBj dGAgKGBjdGApCispIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPWxhdGluMQorQUxURVIg VEFCTEUgdDFuIERST1AgSU5ERVggYzQ7CitBTFRFUiBUQUJMRSB0MW4gQ0hBTkdFIGM0IGMxIElO VCwgQUREIElOREVYKGMxKSwgQUxHT1JJVEhNPUlOUExBQ0U7CitFUlJPUiA0MlMyMTogRHVwbGlj YXRlIGNvbHVtbiBuYW1lICdjMScKK0FMVEVSIFRBQkxFIHQxbiBDSEFOR0UgYzQgYzExIElOVCwg QUREIElOREVYKGMxMSksIEFMR09SSVRITT1JTlBMQUNFOworU0hPVyBDUkVBVEUgVEFCTEUgdDFu OworVGFibGUJQ3JlYXRlIFRhYmxlCit0MW4JQ1JFQVRFIFRBQkxFIGB0MW5gICgKKyAgYGMxYCBp bnQoMTEpIE5PVCBOVUxMIERFRkFVTFQgJzAnLAorICBgYzExYCBpbnQoMTEpIERFRkFVTFQgTlVM TCwKKyAgYGN0YCB0ZXh0LAorICBQUklNQVJZIEtFWSAoYGMxYCksCisgIEtFWSBgYzExYCAoYGMx MWApLAorICBGVUxMVEVYVCBLRVkgYGN0YCAoYGN0YCkKKykgRU5HSU5FPUlubm9EQiBERUZBVUxU IENIQVJTRVQ9bGF0aW4xCiBEUk9QIFRBQkxFIHQxbjsKLUFMVEVSIFRBQkxFIHQxbyBNT0RJRlkg YzEgQklHSU5UIE5PVCBOVUxMOwotQUxURVIgVEFCTEUgdDFvIEFERCBGVUxMVEVYVCBJTkRFWChj dCksIENIQU5HRSBjMSBGVFNfRE9DX0lEIEJJR0lOVCwKK0FMVEVSIFRBQkxFIHQxbyBNT0RJRlkg YzEgQklHSU5UIFVOU0lHTkVEIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdDFvIEFERCBGVUxMVEVY VCBJTkRFWChjdCksCitDSEFOR0UgYzEgRlRTX0RPQ19JRCBCSUdJTlQgVU5TSUdORUQgTk9UIE5V TEwsCiBBTEdPUklUSE09SU5QTEFDRTsKLUVSUk9SIEhZMDAwOiBDb2x1bW4gJ0ZUU19ET0NfSUQn IGlzIG9mIHdyb25nIHR5cGUgZm9yIGFuIElubm9EQiBGVUxMVEVYVCBpbmRleAorQUxURVIgVEFC TEUgdDFvIENIQU5HRSBGVFNfRE9DX0lEIGZvb19pZCBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEw7 CitFUlJPUiBIWTAwMDogQ29sdW1uICdmb29faWQnIGlzIG9mIHdyb25nIHR5cGUgZm9yIGFuIElu bm9EQiBGVUxMVEVYVCBpbmRleAogU0VMRUNUIHNjLnBvcyBGUk9NIGluZm9ybWF0aW9uX3NjaGVt YS5pbm5vZGJfc3lzX2NvbHVtbnMgc2MKIElOTkVSIEpPSU4gaW5mb3JtYXRpb25fc2NoZW1hLmlu bm9kYl9zeXNfdGFibGVzIHN0CiBPTiBzYy5UQUJMRV9JRD1zdC5UQUJMRV9JRAogV0hFUkUgc3Qu TkFNRT0ndGVzdC90MW8nIEFORCBzYy5OQU1FPSdGVFNfRE9DX0lEJzsKIHBvcworMAorU0hPVyBD UkVBVEUgVEFCTEUgdDFvOworVGFibGUJQ3JlYXRlIFRhYmxlCit0MW8JQ1JFQVRFIFRBQkxFIGB0 MW9gICgKKyAgYEZUU19ET0NfSURgIGJpZ2ludCgyMCkgdW5zaWduZWQgTk9UIE5VTEwsCisgIGBj MmAgaW50KDExKSBERUZBVUxUIE5VTEwsCisgIGBjdGAgdGV4dCwKKyAgUFJJTUFSWSBLRVkgKGBG VFNfRE9DX0lEYCksCisgIEZVTExURVhUIEtFWSBgY3RgIChgY3RgKQorKSBFTkdJTkU9SW5ub0RC IERFRkFVTFQgQ0hBUlNFVD1sYXRpbjEKK0FMVEVSIFRBQkxFIHQxbyBDSEFOR0UgRlRTX0RPQ19J RCBmb29faWQgQklHSU5UIFVOU0lHTkVEIE5PVCBOVUxMLAorRFJPUCBJTkRFWCBjdCwgQUxHT1JJ VEhNPUlOUExBQ0U7CitjYWxsIG10ci5hZGRfc3VwcHJlc3Npb24oIklubm9EQjogVGFibGUgdGVz dC90MW8gY29udGFpbnMgMiBpbmRleGVzIGluc2lkZSBJbm5vREIsIHdoaWNoIGlzIGRpZmZlcmVu dCBmcm9tIHRoZSBudW1iZXIgb2YgaW5kZXhlcyAxIGRlZmluZWQgaW4gdGhlIE15U1FMIik7CiBT SE9XIENSRUFURSBUQUJMRSB0MW87CiBUYWJsZQlDcmVhdGUgVGFibGUKIHQxbwlDUkVBVEUgVEFC TEUgYHQxb2AgKAotICBgYzFgIGJpZ2ludCgyMCkgTk9UIE5VTEwsCisgIGBmb29faWRgIGJpZ2lu dCgyMCkgdW5zaWduZWQgTk9UIE5VTEwsCiAgIGBjMmAgaW50KDExKSBERUZBVUxUIE5VTEwsCiAg IGBjdGAgdGV4dCwKLSAgUFJJTUFSWSBLRVkgKGBjMWApCisgIFBSSU1BUlkgS0VZIChgZm9vX2lk YCkKICkgRU5HSU5FPUlubm9EQiBERUZBVUxUIENIQVJTRVQ9bGF0aW4xCiBEUk9QIFRBQkxFIHQx YywgdDFwLCBzeXNfdGFibGVzLCBzeXNfaW5kZXhlcywgc3lzX2ZvcmVpZ247CiBDUkVBVEUgVEFC TEUgc3lzX3RhYmxlcyBTRUxFQ1QgKiBGUk9NIElORk9STUFUSU9OX1NDSEVNQS5JTk5PREJfU1lT X1RBQkxFUwpAQCAtNDcxLDE0ICs1NDAsMjcgQEAgU0VMRUNUIGkuTkFNRSxpLlBPUyxpLk1UWVBF LGkuUFJUWVBFLGkuTAogRlJPTSBJTkZPUk1BVElPTl9TQ0hFTUEuSU5OT0RCX1NZU19DT0xVTU5T IGkKIElOTkVSIEpPSU4gc3lzX3RhYmxlcyBzdCBPTiBpLlRBQkxFX0lEPXN0LlRBQkxFX0lEOwog TkFNRQlQT1MJTVRZUEUJUFJUWVBFCUxFTgotYzEJMAk2CTEyODgJOAorZm9vX2lkCTAJNgkxODAw CTgKIGMyCTEJNgkxMDI3CTQKIGN0CTIJNQk1MjQ1NDAJMTAKIFNFTEVDVCBzaS5OQU1FLGkuUE9T LGkuTkFNRSBGUk9NIElORk9STUFUSU9OX1NDSEVNQS5JTk5PREJfU1lTX0ZJRUxEUyBpCiBJTk5F UiBKT0lOIHN5c19pbmRleGVzIHNpIE9OIGkuSU5ERVhfSUQ9c2kuSU5ERVhfSUQ7CiBOQU1FCVBP UwlOQU1FCi1QUklNQVJZCTAJYzEKK1BSSU1BUlkJMAlmb29faWQKK0ZUU19ET0NfSURfSU5ERVgJ MAlmb29faWQKIFNFTEVDVCBpLiogRlJPTSBJTkZPUk1BVElPTl9TQ0hFTUEuSU5OT0RCX1NZU19G T1JFSUdOX0NPTFMgaQogSU5ORVIgSk9JTiBzeXNfZm9yZWlnbiBzZiBPTiBpLklEID0gc2YuSUQ7 CiBJRAlGT1JfQ09MX05BTUUJUkVGX0NPTF9OQU1FCVBPUworQUxURVIgVEFCTEUgdDFvIEFERCBG VUxMVEVYVCBJTkRFWChjdCk7CitFUlJPUiBIWTAwMDogSW5kZXggJ0ZUU19ET0NfSURfSU5ERVgn IGlzIG9mIHdyb25nIHR5cGUgZm9yIGFuIElubm9EQiBGVUxMVEVYVCBpbmRleAorQUxURVIgVEFC TEUgdDFvIEFERCBGVUxMVEVYVCBJTkRFWChjdCksCitDSEFOR0UgZm9vX2lkIEZUU19ET0NfSUQg QklHSU5UIFVOU0lHTkVEIE5PVCBOVUxMOworRVJST1IgSFkwMDA6IEluZGV4ICdGVFNfRE9DX0lE X0lOREVYJyBpcyBvZiB3cm9uZyB0eXBlIGZvciBhbiBJbm5vREIgRlVMTFRFWFQgaW5kZXgKK0FM VEVSIFRBQkxFIHQxbyBDSEFOR0UgZm9vX2lkIEZUU19ET0NfSUQgQklHSU5UIFVOU0lHTkVEIE5P VCBOVUxMOworQUxURVIgVEFCTEUgdDFvIEFERCBVTklRVUUgSU5ERVggRlRTX0RPQ19JRF9JTkRF WChGVFNfRE9DX0lEKTsKK0VSUk9SIDQyMDAwOiBJbmNvcnJlY3QgaW5kZXggbmFtZSAnRlRTX0RP Q19JRF9JTkRFWCcKK0FMVEVSIFRBQkxFIHQxbyBBREQgVU5JUVVFIElOREVYIEZUU19ET0NfSURf SU5ERVgoRlRTX0RPQ19JRCksCitBTEdPUklUSE09Q09QWTsKK0FMVEVSIFRBQkxFIHQxbyBBREQg VU5JUVVFIElOREVYIEZUU19ET0NfSURfSU5ERVgoRlRTX0RPQ19JRCk7CitFUlJPUiA0MjAwMDog RHVwbGljYXRlIGtleSBuYW1lICdGVFNfRE9DX0lEX0lOREVYJwogRFJPUCBUQUJMRSB0dCwgdDFv LCBzeXNfdGFibGVzLCBzeXNfaW5kZXhlcywgc3lzX2ZvcmVpZ247Cgo9PT0gbW9kaWZpZWQgZmls ZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGItYWx0ZXIudGVzdCcKLS0tIGEvbXlz cWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGItYWx0ZXIudGVzdAlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDEyMDQxNjE4MjQ1Ny1qdzk4dmxpM3Vqb2RjbXg5CisrKyBiL215c3Fs LXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiLWFsdGVyLnRlc3QJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMjA0MTcxNDA2MDEtcTR4eXU4OWtrczdrcmgyMQpAQCAtMTk4LDE1ICsx OTgsNDEgQEAgQUxURVIgVEFCTEUgdDFuIEFERCBGVUxMVEVYVCBJTkRFWChjdCk7CiBBTFRFUiBU QUJMRSB0MW4gQ0hBTkdFIGMxIEZ0c19ET0NfSUQgSU5ULCBBTEdPUklUSE09SU5QTEFDRTsKIC0t ZXJyb3IgRVJfV1JPTkdfQ09MVU1OX05BTUUKIEFMVEVSIFRBQkxFIHQxbiBDSEFOR0UgYzEgRnRz X0RPQ19JRCBJTlQsIEFMR09SSVRITT1DT1BZOworLS1lcnJvciBFUl9CQURfRklFTERfRVJST1IK K0FMVEVSIFRBQkxFIHQxbiBDSEFOR0UgRlRTX0RPQ19JRCBjMTEgSU5ULCBBTEdPUklUSE09SU5Q TEFDRTsKIEFMVEVSIFRBQkxFIHQxbiBDSEFOR0UgYzEgRlRTX0RPQ1/Dr0QgSU5ULCBBTEdPUklU SE09SU5QTEFDRTsKKworQUxURVIgVEFCTEUgdDFuIENIQU5HRSBGVFNfRE9DX8OPRCBjMSBJTlQs IEFMR09SSVRITT1JTlBMQUNFOworQUxURVIgVEFCTEUgdDFuIENIQU5HRSBjMSBjMiBJTlQsIENI QU5HRSBjMiBjdCBJTlQsIENIQU5HRSBjdCBjMSBURVhULAorQUxHT1JJVEhNPUlOUExBQ0U7CitT SE9XIENSRUFURSBUQUJMRSB0MW47CitBTFRFUiBUQUJMRSB0MW4gQ0hBTkdFIGMyIGMxIElOVCwg Q0hBTkdFIGN0IGMyIElOVCwgQ0hBTkdFIGMxIGN0IFRFWFQsCitBTEdPUklUSE09Q09QWTsKK1NI T1cgQ1JFQVRFIFRBQkxFIHQxbjsKKworLS1lcnJvciBFUl9LRVlfQ09MVU1OX0RPRVNfTk9UX0VY SVRTCitBTFRFUiBUQUJMRSB0MW4gQUREIElOREVYKGMyKSwgQ0hBTkdFIGMyIGM0IElOVCwgQUxH T1JJVEhNPUlOUExBQ0U7CistLWVycm9yIEVSX0tFWV9DT0xVTU5fRE9FU19OT1RfRVhJVFMKK0FM VEVSIFRBQkxFIHQxbiBBREQgSU5ERVgoYzIpLCBDSEFOR0UgYzIgYzQgSU5ULCBBTEdPUklUSE09 Q09QWTsKK0FMVEVSIFRBQkxFIHQxbiBBREQgSU5ERVgoYzQpLCBDSEFOR0UgYzIgYzQgSU5ULCBB TEdPUklUSE09SU5QTEFDRTsKK1NIT1cgQ1JFQVRFIFRBQkxFIHQxbjsKK0FMVEVSIFRBQkxFIHQx biBEUk9QIElOREVYIGM0OworLS1lcnJvciBFUl9EVVBfRklFTEROQU1FCitBTFRFUiBUQUJMRSB0 MW4gQ0hBTkdFIGM0IGMxIElOVCwgQUREIElOREVYKGMxKSwgQUxHT1JJVEhNPUlOUExBQ0U7CitB TFRFUiBUQUJMRSB0MW4gQ0hBTkdFIGM0IGMxMSBJTlQsIEFERCBJTkRFWChjMTEpLCBBTEdPUklU SE09SU5QTEFDRTsKKworU0hPVyBDUkVBVEUgVEFCTEUgdDFuOwogRFJPUCBUQUJMRSB0MW47CiAK LUFMVEVSIFRBQkxFIHQxbyBNT0RJRlkgYzEgQklHSU5UIE5PVCBOVUxMOworQUxURVIgVEFCTEUg dDFvIE1PRElGWSBjMSBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEw7CiAKLS0tZXJyb3IgRVJfSU5O T0RCX0ZUX1dST05HX0RPQ0lEX0NPTFVNTgotQUxURVIgVEFCTEUgdDFvIEFERCBGVUxMVEVYVCBJ TkRFWChjdCksIENIQU5HRSBjMSBGVFNfRE9DX0lEIEJJR0lOVCwKK0FMVEVSIFRBQkxFIHQxbyBB REQgRlVMTFRFWFQgSU5ERVgoY3QpLAorQ0hBTkdFIGMxIEZUU19ET0NfSUQgQklHSU5UIFVOU0lH TkVEIE5PVCBOVUxMLAogQUxHT1JJVEhNPUlOUExBQ0U7CiAKKy0tZXJyb3IgRVJfSU5OT0RCX0ZU X1dST05HX0RPQ0lEX0NPTFVNTgorQUxURVIgVEFCTEUgdDFvIENIQU5HRSBGVFNfRE9DX0lEIGZv b19pZCBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEw7CisKICMgVGhpcyBzaG91bGQgbm90IHNob3cg ZHVwbGljYXRlcy4KIFNFTEVDVCBzYy5wb3MgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuaW5ub2Ri X3N5c19jb2x1bW5zIHNjCiBJTk5FUiBKT0lOIGluZm9ybWF0aW9uX3NjaGVtYS5pbm5vZGJfc3lz X3RhYmxlcyBzdApAQCAtMjE1LDYgKzI0MSwxMyBAQCBXSEVSRSBzdC5OQU1FPSd0ZXN0L3Qxbycg QU5EIHNjLk5BTUU9J0ZUCiAKIFNIT1cgQ1JFQVRFIFRBQkxFIHQxbzsKIAorIyBUaGlzIHdpbGwg bGVhdmUgYW4gb3JwaGFuIEZUU19ET0NfSURfSU5ERVggaW5zaWRlIElubm9EQi4KK0FMVEVSIFRB QkxFIHQxbyBDSEFOR0UgRlRTX0RPQ19JRCBmb29faWQgQklHSU5UIFVOU0lHTkVEIE5PVCBOVUxM LAorRFJPUCBJTkRFWCBjdCwgQUxHT1JJVEhNPUlOUExBQ0U7CitjYWxsIG10ci5hZGRfc3VwcHJl c3Npb24oIklubm9EQjogVGFibGUgdGVzdC90MW8gY29udGFpbnMgMiBpbmRleGVzIGluc2lkZSBJ bm5vREIsIHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBudW1iZXIgb2YgaW5kZXhlcyAxIGRl ZmluZWQgaW4gdGhlIE15U1FMIik7CisKK1NIT1cgQ1JFQVRFIFRBQkxFIHQxbzsKKwogRFJPUCBU QUJMRSB0MWMsIHQxcCwgc3lzX3RhYmxlcywgc3lzX2luZGV4ZXMsIHN5c19mb3JlaWduOwogCiAj IENoZWNrIHRoZSBpbnRlcm5hbCBzY2hlbWF0YSBvZiB0dCwgdDFvLgpAQCAtMjI4LDQgKzI2MSwz MCBAQCBGUk9NIElORk9STUFUSU9OX1NDSEVNQS5JTk5PREJfU1lTX0ZPUkVJCiAKIC0tIHNvdXJj ZSBzdWl0ZS9pbm5vZGIvaW5jbHVkZS9pbm5vZGJfZGljdC5pbmMKIAorIyBOb3csIHRoZXJlIGV4 aXN0cyBhIGhpZGRlbiBGVFNfRE9DX0lEX0lOREVYIG9uIGZvb19pZCwgbm90IEZUU19ET0NfSUQu CisjIFdlIG11c3QgcmVuYW1lIHRoZSBmb29faWQgdG8gRlRTX0RPQ19JRCBmaXJzdC4KKworLS0g ZXJyb3IgRVJfSU5OT0RCX0ZUX1dST05HX0RPQ0lEX0lOREVYCitBTFRFUiBUQUJMRSB0MW8gQURE IEZVTExURVhUIElOREVYKGN0KTsKKworIyBJZGVhbGx5LCB0aGUgcmVuYW1pbmcgc2hvdWxkIHdv cmsgaW4gdGhlIHNhbWUgc3RhdGVtZW50IHdpdGgKKyMgdGhlIEFERCBGVUxMVEVYVCBJTkRFWC4g VGhpcyBpcyB3aGF0IHdlIGdldCBieSBkZWZpbmluZyBGVFNfRE9DX0lECisjIGFzIGEgaGFsZi1o aWRkZW4gY29sdW1uLgorLS0gZXJyb3IgRVJfSU5OT0RCX0ZUX1dST05HX0RPQ0lEX0lOREVYCitB TFRFUiBUQUJMRSB0MW8gQUREIEZVTExURVhUIElOREVYKGN0KSwKK0NIQU5HRSBmb29faWQgRlRT X0RPQ19JRCBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEw7CisKK0FMVEVSIFRBQkxFIHQxbyBDSEFO R0UgZm9vX2lkIEZUU19ET0NfSUQgQklHSU5UIFVOU0lHTkVEIE5PVCBOVUxMOworCisjIElubm9E QiBjcmVhdGVkIEZUU19ET0NfSURfSU5ERVggaW50ZXJuYWxseSBhbHJlYWR5LgorLS0gZXJyb3Ig RVJfV1JPTkdfTkFNRV9GT1JfSU5ERVgKK0FMVEVSIFRBQkxFIHQxbyBBREQgVU5JUVVFIElOREVY IEZUU19ET0NfSURfSU5ERVgoRlRTX0RPQ19JRCk7CisKKyMgVGhlIEFMR09SSVRITT1DT1BZIGln bm9yZXMgdGhlIGludGVybmFsbHkgY3JlYXRlZCBpbmRleC4gKi8KK0FMVEVSIFRBQkxFIHQxbyBB REQgVU5JUVVFIElOREVYIEZUU19ET0NfSURfSU5ERVgoRlRTX0RPQ19JRCksCitBTEdPUklUSE09 Q09QWTsKKworLS0gZXJyb3IgRVJfRFVQX0tFWU5BTUUKK0FMVEVSIFRBQkxFIHQxbyBBREQgVU5J UVVFIElOREVYIEZUU19ET0NfSURfSU5ERVgoRlRTX0RPQ19JRCk7CisKIERST1AgVEFCTEUgdHQs IHQxbywgc3lzX3RhYmxlcywgc3lzX2luZGV4ZXMsIHN5c19mb3JlaWduOwoKPT09IG1vZGlmaWVk IGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MGRpY3QuY2MnCi0tLSBhL3N0b3JhZ2Uv aW5ub2Jhc2UvZGljdC9kaWN0MGRpY3QuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMjA0MTYxODI0NTctanc5OHZsaTN1am9kY214OQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2Rp Y3QvZGljdDBkaWN0LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNDE3MTQw NjAxLXE0eHl1ODlra3M3a3JoMjEKQEAgLTMxNTAsNjUgKzMxNTAsNiBAQCBuZXh0X3JlYzoKIH0K IAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCi1SZXR1cm5zIGFuIGluZGV4IG9iamVjdCBieSBtYXRjaGlu ZyBvbiB0aGUgbmFtZSBhbmQgY29sdW1uIG5hbWVzIGFuZAotaWYgbW9yZSB0aGFuIG9uZSBpbmRl eCBtYXRjaGVzIHJldHVybiB0aGUgaW5kZXggd2l0aCB0aGUgbWF4IGlkCi1AcmV0dXJuCW1hdGNo aW5nIGluZGV4LCBOVUxMIGlmIG5vdCBmb3VuZCAqLwotVU5JVl9JTlRFUk4KLWRpY3RfaW5kZXhf dCoKLWRpY3RfdGFibGVfZ2V0X2luZGV4X2J5X21heF9pZCgKLS8qPT09PT09PT09PT09PT09PT09 PT09PT09PT09Ki8KLQlkaWN0X3RhYmxlX3QqCXRhYmxlLAkvKiE8IGluOiB0YWJsZSAqLwotCWNv bnN0IGNoYXIqCW5hbWUsCS8qITwgaW46IHRoZSBpbmRleCBuYW1lIHRvIGZpbmQgKi8KLQljb25z dCBjaGFyKioJY29sdW1ucywvKiE8IGluOiBhcnJheSBvZiBjb2x1bW4gbmFtZXMgKi8KLQl1bGlu dAkJbl9jb2xzKQkvKiE8IGluOiBudW1iZXIgb2YgY29sdW1ucyAqLwotewotCWRpY3RfaW5kZXhf dCoJaW5kZXg7Ci0JZGljdF9pbmRleF90Kglmb3VuZDsKLQotCWZvdW5kID0gTlVMTDsKLQlpbmRl eCA9IGRpY3RfdGFibGVfZ2V0X2ZpcnN0X2luZGV4KHRhYmxlKTsKLQotCXdoaWxlIChpbmRleCAh PSBOVUxMKSB7Ci0JCWlmICh1dF9zdHJjbXAoaW5kZXgtPm5hbWUsIG5hbWUpID09IDAKLQkJICAg ICYmIGRpY3RfaW5kZXhfZ2V0X25fb3JkZXJpbmdfZGVmaW5lZF9ieV91c2VyKGluZGV4KQotCQkg ICAgPT0gbl9jb2xzKSB7Ci0KLQkJCXVsaW50CQlpOwotCi0JCQlmb3IgKGkgPSAwOyBpIDwgbl9j b2xzOyBpKyspIHsKLQkJCQlkaWN0X2ZpZWxkX3QqCWZpZWxkOwotCQkJCWNvbnN0IGNoYXIqCWNv bF9uYW1lOwotCi0JCQkJZmllbGQgPSBkaWN0X2luZGV4X2dldF9udGhfZmllbGQoaW5kZXgsIGkp OwotCi0JCQkJY29sX25hbWUgPSBkaWN0X3RhYmxlX2dldF9jb2xfbmFtZSgKLQkJCQkJdGFibGUs IGRpY3RfY29sX2dldF9ubyhmaWVsZC0+Y29sKSk7Ci0KLQkJCQlpZiAoMCAhPSBpbm5vYmFzZV9z dHJjYXNlY21wKAotCQkJCQkgICAgY29sdW1uc1tpXSwgY29sX25hbWUpKSB7Ci0KLQkJCQkJYnJl YWs7Ci0JCQkJfQotCQkJfQotCi0JCQlpZiAoaSA9PSBuX2NvbHMpIHsKLQkJCQkvKiBXZSBmb3Vu ZCBhIG1hdGNoaW5nIGluZGV4LCBzZWxlY3QKLQkJCQl0aGUgaW5kZXggd2l0aCB0aGUgaGlnaGVy IGlkKi8KLQotCQkJCWlmICghZm91bmQgfHwgaW5kZXgtPmlkID4gZm91bmQtPmlkKSB7Ci0KLQkJ CQkJZm91bmQgPSBpbmRleDsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlpbmRleCA9IGRpY3RfdGFi bGVfZ2V0X25leHRfaW5kZXgoaW5kZXgpOwotCX0KLQotCXJldHVybihmb3VuZCk7Ci19Ci0KLS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgogUmVwb3J0IGFuIGVycm9yIGluIGEgZm9yZWlnbiBrZXkgZGVmaW5p dGlvbi4gKi8KIHN0YXRpYwogdm9pZAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2UvZGljdC9kaWN0MG1lbS5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3QwbWVt LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNDE2MTgyNDU3LWp3OTh2bGkz dWpvZGNteDkKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3QwbWVtLmNjCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNDE3MTQwNjAxLXE0eHl1ODlra3M3a3JoMjEKQEAg LTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk2 LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVk LgorQ29weXJpZ2h0IChjKSAxOTk2LCAyMDEyLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVz LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUKQEAgLTI1MCwxMCArMjUwLDEwIEBAIHZvaWQKIGRpY3RfbWVtX3RhYmxlX2Nv bF9yZW5hbWVfbG93KAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJZGljdF90YWJs ZV90Kgl0YWJsZSwJLyohPCBpbi9vdXQ6IHRhYmxlICovCisJdW5zaWduZWQJaSwJLyohPCBpbjog Y29sdW1uIG9mZnNldCBjb3JyZXNwb25kaW5nIHRvIHMgKi8KIAljb25zdCBjaGFyKglmcm9tLAkv KiE8IGluOiBvbGQgY29sdW1uIG5hbWUgKi8KIAljb25zdCBjaGFyKgl0bywJLyohPCBpbjogbmV3 IGNvbHVtbiBuYW1lICovCi0JY29uc3QgY2hhcioJcywJLyohPCBpbjogcG9pbnRlciB0byB0YWJs ZS0+Y29sX25hbWVzICovCi0JdW5zaWduZWQJaSkJLyohPCBpbjogY29sdW1uIG9mZnNldCBjb3Jy ZXNwb25kaW5nIHRvIHMgKi8KKwljb25zdCBjaGFyKglzKQkvKiE8IGluOiBwb2ludGVyIHRvIHRh YmxlLT5jb2xfbmFtZXMgKi8KIHsKIAlzaXplX3QgZnJvbV9sZW4gPSBzdHJsZW4oZnJvbSksIHRv X2xlbiA9IHN0cmxlbih0byk7CiAKQEAgLTM1NywzMyArMzU3LDMxIEBAIGRpY3RfbWVtX3RhYmxl X2NvbF9yZW5hbWVfbG93KAogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVJlbmFtZXMgYSBjb2x1 bW4gb2YgYSB0YWJsZSBpbiB0aGUgZGF0YSBkaWN0aW9uYXJ5IGNhY2hlLgotQHJldHVybiB3aGV0 aGVyIHRoZSBvcGVyYXRpb24gc3VjY2VlZGVkICovCitSZW5hbWVzIGEgY29sdW1uIG9mIGEgdGFi bGUgaW4gdGhlIGRhdGEgZGljdGlvbmFyeSBjYWNoZS4gKi8KIFVOSVZfSU5URVJOCi1ib29sCit2 b2lkCiBkaWN0X21lbV90YWJsZV9jb2xfcmVuYW1lKAogLyo9PT09PT09PT09PT09PT09PT09PT09 Ki8KIAlkaWN0X3RhYmxlX3QqCXRhYmxlLAkvKiE8IGluL291dDogdGFibGUgKi8KKwl1bnNpZ25l ZAludGhfY29sLC8qITwgaW46IGNvbHVtbiBpbmRleCAqLwogCWNvbnN0IGNoYXIqCWZyb20sCS8q ITwgaW46IG9sZCBjb2x1bW4gbmFtZSAqLwogCWNvbnN0IGNoYXIqCXRvKQkvKiE8IGluOiBuZXcg Y29sdW1uIG5hbWUgKi8KIHsKLQl1bnNpZ25lZAlpOwogCWNvbnN0IGNoYXIqCXMgPSB0YWJsZS0+ Y29sX25hbWVzOwogCi0JaWYgKCFzKSB7Ci0JCXJldHVybihmYWxzZSk7Ci0JfQorCXV0X2FkKG50 aF9jb2wgPCB0YWJsZS0+bl9kZWYpOwogCi0JZm9yIChpID0gMDsgaSA8IHRhYmxlLT5uX2RlZjsg aSsrKSB7Ci0JCWlmICghc3RyY21wKGZyb20sIHMpKSB7Ci0JCQlkaWN0X21lbV90YWJsZV9jb2xf cmVuYW1lX2xvdyh0YWJsZSwgZnJvbSwgdG8sIHMsIGkpOwotCQkJcmV0dXJuKHRydWUpOwotCQl9 Ci0KLQkJcyArPSBzdHJsZW4ocykgKyAxOworCWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudGhf Y29sOyBpKyspIHsKKwkJc2l6ZV90CWxlbiA9IHN0cmxlbihzKTsKKwkJdXRfYWQobGVuID4gMCk7 CisJCXMgKz0gbGVuICsgMTsKIAl9CiAKLQlyZXR1cm4oZmFsc2UpOworCS8qIFRoaXMgY291bGQg ZmFpbCBpZiB0aGUgZGF0YSBkaWN0aW9uYXJpZXMgYXJlIG91dCBvZiBzeW5jLgorCVByb2NlZWQg d2l0aCB0aGUgcmVuYW1pbmcgYW55d2F5LiAqLworCXV0X2FkKCFzdHJjbXAoZnJvbSwgcykpOwor CisJZGljdF9tZW1fdGFibGVfY29sX3JlbmFtZV9sb3codGFibGUsIG50aF9jb2wsIGZyb20sIHRv LCBzKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTIwNDE2MTgyNDU3LWp3OTh2bGkzdWpvZGNteDkKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9o YW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MjA0MTcxNDA2MDEtcTR4eXU4OWtrczdrcmgyMQpAQCAtNjI2LDYgKzYyNiw4IEBAIGlubm9iYXNl X2NyZWF0ZV9pbmRleF9maWVsZF9kZWYoCiAJCToga2V5X3BhcnQtPmZpZWxkOwogCXV0X2EoZmll bGQpOwogCisJaW5kZXhfZmllbGQtPmNvbF9ubyA9IGtleV9wYXJ0LT5maWVsZG5yOworCiAJY29s X3R5cGUgPSBnZXRfaW5ub2Jhc2VfdHlwZV9mcm9tX215c3FsX3R5cGUoJmlzX3Vuc2lnbmVkLCBm aWVsZCk7CiAKIAlpZiAoREFUQV9CTE9CID09IGNvbF90eXBlCkBAIC02NDAsOCArNjQyLDYgQEAg aW5ub2Jhc2VfY3JlYXRlX2luZGV4X2ZpZWxkX2RlZigKIAkJaW5kZXhfZmllbGQtPnByZWZpeF9s ZW4gPSAwOwogCX0KIAotCWluZGV4X2ZpZWxkLT5maWVsZF9uYW1lID0gbWVtX2hlYXBfc3RyZHVw KGhlYXAsIGZpZWxkLT5maWVsZF9uYW1lKTsKLQogCURCVUdfVk9JRF9SRVRVUk47CiB9CiAKQEAg LTkzNSw2ICs5MzUsOCBAQCBpbm5vYmFzZV9jcmVhdGVfa2V5X2RlZnMoCiAJCQkvKiE8IGluL291 dDogbnVtYmVyIG9mIGluZGV4ZXMgdG8gYmUgY3JlYXRlZCAqLwogCWJvb2wJCQkJZ290X2RlZmF1 bHRfY2x1c3QsCiAJCQkvKiE8IGluOiB3aGV0aGVyIHRoZSB0YWJsZSBsYWNrcyBhIHByaW1hcnkg a2V5ICovCisJdWxpbnQJCQkJZnRzX2RvY19pZF9jb2wsCisJCQkvKiE8IGluOiBUaGUgY29sdW1u IG51bWJlciBmb3IgRG9jIElEICovCiAJYm9vbAkJCQlhZGRfZnRzX2RvY19pZCwKIAkJCS8qITwg aW46IHdoZXRoZXIgd2UgbmVlZCB0byBhZGQgbmV3IERPQyBJRAogCQkJY29sdW1uIGZvciBGVFMg aW5kZXggKi8KQEAgLTEwNTcsMTMgKzEwNTksMTQgQEAgY3JlYXRlZF9jbHVzdGVyZWQ6CiAJCWlu ZGV4LT5maWVsZHMgPSBzdGF0aWNfY2FzdDxtZXJnZV9pbmRleF9maWVsZF90Kj4oCiAJCQltZW1f aGVhcF9hbGxvYyhoZWFwLCBzaXplb2YgKmluZGV4LT5maWVsZHMpKTsKIAkJaW5kZXgtPm5fZmll bGRzID0gMTsKKwkJaW5kZXgtPmZpZWxkcy0+Y29sX25vID0gZnRzX2RvY19pZF9jb2w7CiAJCWlu ZGV4LT5maWVsZHMtPnByZWZpeF9sZW4gPSAwOwotCQlpbmRleC0+ZmllbGRzLT5maWVsZF9uYW1l ID0gbWVtX2hlYXBfc3RyZHVwKAotCQkJaGVhcCwgRlRTX0RPQ19JRF9DT0xfTkFNRSk7CiAJCWlu ZGV4LT5pbmRfdHlwZSA9IERJQ1RfVU5JUVVFOworCiAJCWlmIChuZXdfcHJpbWFyeSB8fCBhZGRf ZnRzX2RvY19pZCkgewogCQkJaW5kZXgtPm5hbWUgPSBtZW1faGVhcF9zdHJkdXAoCiAJCQkJaGVh cCwgRlRTX0RPQ19JRF9JTkRFWF9OQU1FKTsKKwkJCXV0X2FkKGZ0c19kb2NfaWRfY29sID09IGFs dGVyZWRfdGFibGUtPnMtPmZpZWxkcyk7CiAJCX0gZWxzZSB7CiAJCQljaGFyKglpbmRleF9uYW1l OwogCQkJaW5kZXgtPm5hbWUgPSBpbmRleF9uYW1lID0gc3RhdGljX2Nhc3Q8Y2hhcio+KApAQCAt MTIyOSw0OCArMTIzMiw2IEBAIG5vX21hdGNoOgogI2VuZGlmCiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK LVRoaXMgaXMgdG8gY3JlYXRlIEZUU19ET0NfSURfSU5ERVggZGVmaW5pdGlvbiBvbiB0aGUgbmV3 bHkgYWRkZWQgRG9jIElEIGZvcgotdGhlIEZUUyBpbmRleGVzIHRhYmxlCi1AcmV0dXJuCWRpY3Rf aW5kZXhfdCBmb3IgdGhlIEZUU19ET0NfSURfSU5ERVggKi8KLWRpY3RfaW5kZXhfdCoKLWlubm9i YXNlX2NyZWF0ZV9mdHNfZG9jX2lkX2lkeCgKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09 Ki8KLQlkaWN0X3RhYmxlX3QqCWluZGV4ZWRfdGFibGUsCS8qITwgaW46IFRhYmxlIHdoZXJlIGlu ZGV4ZXMgYXJlCi0JCQkJCWNyZWF0ZWQgKi8KLQl0cnhfdCoJCXRyeCwJCS8qITwgaW46IFRyYW5z YWN0aW9uICovCi0JYm9vbAkJbmV3X2NsdXN0ZXJlZCwJLyohPCBpbjogdHJ1ZSBpZiBjcmVhdGlu ZyBhCi0JCQkJCWNsdXN0ZXJlZCBpbmRleCAqLwotCW1lbV9oZWFwX3QqICAgICBoZWFwKQkJLyoh PCBIZWFwIGZvciBpbmRleCBkZWZpbml0aW9ucyAqLwotewotCWRpY3RfaW5kZXhfdCoJCWluZGV4 OwotCW1lcmdlX2luZGV4X2RlZl90CWZ0c19pbmRleF9kZWY7Ci0JY2hhcioJCQlpbmRleF9uYW1l OwotCi0JLyogQ3JlYXRlIHRoZSB0ZW1wIGluZGV4IG5hbWUgZm9yIEZUU19ET0NfSURfSU5ERVgg Ki8KLQlmdHNfaW5kZXhfZGVmLm5hbWUgPSBpbmRleF9uYW1lID0gc3RhdGljX2Nhc3Q8Y2hhcio+ KAotCQltZW1faGVhcF9hbGxvYygKLQkJCWhlYXAsIEZUU19ET0NfSURfSU5ERVhfTkFNRV9MRU4g KyAxICsgIW5ld19jbHVzdGVyZWQpKTsKLQlpZiAoIW5ld19jbHVzdGVyZWQpIHsKLQkJKmluZGV4 X25hbWUrKyA9IFRFTVBfSU5ERVhfUFJFRklYOwotCX0KLQltZW1jcHkoaW5kZXhfbmFtZSwgRlRT X0RPQ19JRF9JTkRFWF9OQU1FLAotCSAgICAgICBGVFNfRE9DX0lEX0lOREVYX05BTUVfTEVOKTsK LQlpbmRleF9uYW1lW0ZUU19ET0NfSURfSU5ERVhfTkFNRV9MRU5dID0gMDsKLQotCS8qIE9ubHkg dGhlIERvYyBJRCB3aWxsIGJlIGluZGV4ZWQgKi8KLQlmdHNfaW5kZXhfZGVmLm5fZmllbGRzID0g MTsKLQlmdHNfaW5kZXhfZGVmLmluZF90eXBlID0gRElDVF9VTklRVUU7Ci0JZnRzX2luZGV4X2Rl Zi5maWVsZHMgPSBzdGF0aWNfY2FzdDxtZXJnZV9pbmRleF9maWVsZF90Kj4oCi0JCW1lbV9oZWFw X2FsbG9jKGhlYXAsIHNpemVvZiAqZnRzX2luZGV4X2RlZi5maWVsZHMpKTsKLQlmdHNfaW5kZXhf ZGVmLmZpZWxkc1swXS5wcmVmaXhfbGVuID0gMDsKLQlmdHNfaW5kZXhfZGVmLmZpZWxkc1swXS5m aWVsZF9uYW1lID0gbWVtX2hlYXBfc3RyZHVwKAotCQloZWFwLCBGVFNfRE9DX0lEX0NPTF9OQU1F KTsKLQotCWluZGV4ID0gcm93X21lcmdlX2NyZWF0ZV9pbmRleCh0cngsIGluZGV4ZWRfdGFibGUs ICZmdHNfaW5kZXhfZGVmKTsKLQlyZXR1cm4oaW5kZXgpOwotfQotCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBEcm9wIGFueSBpbmRleGVzIHRoYXQgd2Ugd2VyZSBub3QgYWJsZSB0byBmcmVlIHByZXZpb3Vz bHkgZHVlIHRvCiBvcGVuIHRhYmxlIGhhbmRsZXMuICovCiBzdGF0aWMKQEAgLTEzNzEsNiArMTMz Miw3IEBAIHdoaWxlIHByZXBhcmluZyBBTFRFUiBUQUJMRS4KIEBwYXJhbSBkcm9wX2ZvcmVpZ24J Rm9yZWlnbiBrZXkgY29uc3RyYWludHMgdG8gYmUgZHJvcHBlZCwgb3IgTlVMTAogQHBhcmFtIG5f ZHJvcF9mb3JlaWduCU51bWJlciBvZiBmb3JlaWduIGtleSBjb25zdHJhaW50cyB0byBkcm9wCiBA cGFyYW0gbnVtX2Z0c19pbmRleAlOdW1iZXIgb2YgZnVsbC10ZXh0IGluZGV4ZXMgdG8gY3JlYXRl CitAcGFyYW0gZnRzX2RvY19pZF9jb2wJVGhlIGNvbHVtbiBudW1iZXIgb2YgRlRTX0RPQ19JRAog QHBhcmFtIGFkZF9mdHNfZG9jX2lkCUZsYWc6IGFkZCBjb2x1bW4gRlRTX0RPQ19JRD8KIEBwYXJh bSBhZGRfZnRzX2RvY19pZF9pZHggRmxhZzogYWRkIGluZGV4IChGVFNfRE9DX0lEKT8KIApAQCAt MTM5Miw2ICsxMzU0LDcgQEAgcHJlcGFyZV9pbnBsYWNlX2FsdGVyX3RhYmxlX2RpY3QoCiAJZGlj dF9mb3JlaWduX3QqKglkcm9wX2ZvcmVpZ24sCiAJdWxpbnQJCQluX2Ryb3BfZm9yZWlnbiwKIAl1 bnNpZ25lZAkJbnVtX2Z0c19pbmRleCwKKwl1bGludAkJCWZ0c19kb2NfaWRfY29sLAogCWJvb2wJ CQlhZGRfZnRzX2RvY19pZCwKIAlib29sCQkJYWRkX2Z0c19kb2NfaWRfaWR4KQogewpAQCAtMTQz Myw3ICsxMzk2LDcgQEAgcHJlcGFyZV9pbnBsYWNlX2FsdGVyX3RhYmxlX2RpY3QoCiAJaW5kZXhf ZGVmcyA9IGlubm9iYXNlX2NyZWF0ZV9rZXlfZGVmcygKIAkJaGVhcCwgaGFfYWx0ZXJfaW5mbywg YWx0ZXJlZF90YWJsZSwgbl9hZGRfaW5kZXgsCiAJCXJvd190YWJsZV9nb3RfZGVmYXVsdF9jbHVz dF9pbmRleChpbmRleGVkX3RhYmxlKSwKLQkJYWRkX2Z0c19kb2NfaWQsIGFkZF9mdHNfZG9jX2lk X2lkeCk7CisJCWZ0c19kb2NfaWRfY29sLCBhZGRfZnRzX2RvY19pZCwgYWRkX2Z0c19kb2NfaWRf aWR4KTsKIAogCW5ld19jbHVzdGVyZWQgPSBESUNUX0NMVVNURVJFRCAmIGluZGV4X2RlZnNbMF0u aW5kX3R5cGU7CiAKQEAgLTE2MDgsNyArMTU3MSw4IEBAIGNvbF9mYWlsOgogCiAJCWlmIChhZGRf ZnRzX2RvY19pZCkgewogCQkJZnRzX2FkZF9kb2NfaWRfY29sdW1uKGluZGV4ZWRfdGFibGUsIGhl YXApOwotCQkJaW5kZXhlZF90YWJsZS0+ZnRzLT5kb2NfY29sID0gYWx0ZXJlZF90YWJsZS0+cy0+ ZmllbGRzOworCQkJaW5kZXhlZF90YWJsZS0+ZnRzLT5kb2NfY29sID0gZnRzX2RvY19pZF9jb2w7 CisJCQl1dF9hZChmdHNfZG9jX2lkX2NvbCA9PSBhbHRlcmVkX3RhYmxlLT5zLT5maWVsZHMpOwog CQl9CiAKIAkJZXJyb3IgPSByb3dfY3JlYXRlX3RhYmxlX2Zvcl9teXNxbChpbmRleGVkX3RhYmxl LCB0cngpOwpAQCAtMTg3NSw2ICsxODM5LDI0IEBAIGlubm9iYXNlX2Ryb3BwaW5nX2ZvcmVpZ24o CiAJcmV0dXJuKGZhbHNlKTsKIH0KIAorLyoqIERldGVybWluZSBpZiBmdWxsdGV4dCBpbmRleGVz IGV4aXN0IGluIGEgZ2l2ZW4gdGFibGUuCitAcGFyYW0gdGFibGVfc2hhcmUJTXlTUUwgdGFibGUK K0ByZXR1cm4JCQl3aGV0aGVyIGZ1bGx0ZXh0IGluZGV4ZXMgZXhpc3Qgb24gdGhlIHRhYmxlICov CitzdGF0aWMKK2Jvb2wKK2lubm9iYXNlX2Z1bGx0ZXh0X2V4aXN0KAorLyo9PT09PT09PT09PT09 PT09PT09PSovCisJY29uc3QgVEFCTEVfU0hBUkUqCXRhYmxlX3NoYXJlKQoreworCWZvciAodWlu dCBpID0gMDsgaSA8IHRhYmxlX3NoYXJlLT5rZXlzOyBpKyspIHsKKwkJaWYgKHRhYmxlX3NoYXJl LT5rZXlfaW5mb1tpXS5mbGFncyAmIEhBX0ZVTExURVhUKSB7CisJCQlyZXR1cm4odHJ1ZSk7CisJ CX0KKwl9CisKKwlyZXR1cm4oZmFsc2UpOworfQorCiAvKiogQWxsb3dzIElubm9EQiB0byB1cGRh dGUgaW50ZXJuYWwgc3RydWN0dXJlcyB3aXRoIGNvbmN1cnJlbnQKIHdyaXRlcyBibG9ja2VkLiBJ bnZva2VkIGJlZm9yZSBpbnBsYWNlX2FsdGVyX3RhYmxlKCkuCiAKQEAgLTE5MDAsNiArMTg4Miw3 IEBAIGhhX2lubm9iYXNlOjpwcmVwYXJlX2lucGxhY2VfYWx0ZXJfdGFibGUKIAltZW1faGVhcF90 KiAgICAgaGVhcDsKIAlpbnQJCWVycm9yOwogCXVsaW50CQludW1fZnRzX2luZGV4OworCXVsaW50 CQlmdHNfZG9jX2NvbF9ubzsKIAlib29sCQlhZGRfZnRzX2RvY19pZAkJPSBmYWxzZTsKIAlib29s CQlhZGRfZnRzX2RvY19pZF9pZHgJPSBmYWxzZTsKIApAQCAtMTk2Myw4ICsxOTQ2LDcgQEAgZXJy X2V4aXRfbm9faGVhcDoKIAogCQkJY29uc3QgY2hhciogbmFtZSA9IDA7CiAKLQkJCWNmX2l0Lmlu aXQoaGFfYWx0ZXJfaW5mby0+YWx0ZXJfaW5mbwotCQkJCSAgIC0+Y3JlYXRlX2xpc3QpOworCQkJ Y2ZfaXQuaW5pdChoYV9hbHRlcl9pbmZvLT5hbHRlcl9pbmZvLT5jcmVhdGVfbGlzdCk7CiAJCQl3 aGlsZSAoQ3JlYXRlX2ZpZWxkKiBjZiA9IGNmX2l0KyspIHsKIAkJCQlpZiAoY2YtPmZpZWxkID09 ICpmcCkgewogCQkJCQluYW1lID0gY2YtPmZpZWxkX25hbWU7CkBAIC0xOTc0LDkgKzE5NTYsMjgg QEAgZXJyX2V4aXRfbm9faGVhcDoKIAogCQkJdXRfZXJyb3I7CiBjaGVja19pZl9va190b19yZW5h bWU6CisJCQkvKiBQcm9oaWJpdCByZW5hbWluZyBhIGNvbHVtbiBmcm9tIEZUU19ET0NfSUQKKwkJ CWlmIGZ1bGwtdGV4dCBpbmRleGVzIGV4aXN0LiAqLworCQkJaWYgKCFteV9zdHJjYXNlY21wKHN5 c3RlbV9jaGFyc2V0X2luZm8sCisJCQkJCSAgICgqZnApLT5maWVsZF9uYW1lLAorCQkJCQkgICBG VFNfRE9DX0lEX0NPTF9OQU1FKQorCQkJICAgICYmIGlubm9iYXNlX2Z1bGx0ZXh0X2V4aXN0KGFs dGVyZWRfdGFibGUtPnMpKSB7CisJCQkJbXlfZXJyb3IoRVJfSU5OT0RCX0ZUX1dST05HX0RPQ0lE X0NPTFVNTiwKKwkJCQkJIE1ZRigwKSwgbmFtZSk7CisJCQkJZ290byBlcnJfZXhpdF9ub19oZWFw OworCQkJfQorCisJCQkvKiBQcm9oaWJpdCByZW5hbWluZyBhIGNvbHVtbiB0byBhbiBpbnRlcm5h bCBjb2x1bW4uICovCiAJCQljb25zdCBjaGFyKglzID0gcHJlYnVpbHQtPnRhYmxlLT5jb2xfbmFt ZXM7CisJCQl1bnNpZ25lZCBqOworCQkJLyogU2tpcCB1c2VyIGNvbHVtbnMuCisJCQlNeVNRTCBz aG91bGQgaGF2ZSBjaGVja2VkIHRoZXNlIGFscmVhZHkuCisJCQlXZSB3YW50IHRvIGFsbG93IHJl bmFtaW5nIG9mIGMxIHRvIGMyLCBjMiB0byBjMS4gKi8KKwkJCWZvciAoaiA9IDA7IGogPCB0YWJs ZS0+cy0+ZmllbGRzOyBqKyspIHsKKwkJCQlzICs9IHN0cmxlbihzKSArIDE7CisJCQl9CiAKLQkJ CWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcmVidWlsdC0+dGFibGUtPm5fZGVmOyBpKyspIHsK KwkJCWZvciAoOyBqIDwgcHJlYnVpbHQtPnRhYmxlLT5uX2RlZjsgaisrKSB7CiAJCQkJaWYgKCFt eV9zdHJjYXNlY21wKAogCQkJCQkgICAgc3lzdGVtX2NoYXJzZXRfaW5mbywgbmFtZSwgcykpIHsK IAkJCQkJbXlfZXJyb3IoRVJfV1JPTkdfQ09MVU1OX05BTUUsIE1ZRigwKSwKQEAgLTIyMjYsMTAg KzIyMjcsMTAgQEAgZXJyX2V4aXQ6CiAJYWRkIGEgRG9jIElEIGhpZGRlbiBjb2x1bW4gYW5kIHJl YnVpbGQgdGhlIHByaW1hcnkgaW5kZXggKi8KIAlpZiAobnVtX2Z0c19pbmRleCkgewogCQl1bGlu dAlkb2NfY29sX25vOwotCQl1bGludAlmdHNfZG9jX2NvbF9ubzsKIAogCQlpZiAoIWlubm9iYXNl X2Z0c19jaGVja19kb2NfaWRfY29sKAogCQkJICAgIHByZWJ1aWx0LT50YWJsZSwgYWx0ZXJlZF90 YWJsZSwgJmZ0c19kb2NfY29sX25vKSkgeworCQkJZnRzX2RvY19jb2xfbm8gPSBhbHRlcmVkX3Rh YmxlLT5zLT5maWVsZHM7CiAJCQlhZGRfZnRzX2RvY19pZCA9IHRydWU7CiAJCQlhZGRfZnRzX2Rv Y19pZF9pZHggPSB0cnVlOwogCkBAIC0yMjcwLDYgKzIyNzEsNyBAQCBlcnJfZXhpdDoKIAkJCSAg ICBwcmVidWlsdC0+dHJ4LCB0YWJsZV9zaGFyZS0+dGFibGVfbmFtZS5zdHIsCiAJCQkgICAgaGVh cCwgZHJvcF9pbmRleCwgbl9kcm9wX2luZGV4LAogCQkJICAgIGRyb3BfZmssIG5fZHJvcF9maywg bnVtX2Z0c19pbmRleCwKKwkJCSAgICBmdHNfZG9jX2NvbF9ubywKIAkJCSAgICBhZGRfZnRzX2Rv Y19pZCwgYWRkX2Z0c19kb2NfaWRfaWR4KSk7CiB9CiAKQEAgLTI1MDksNiArMjUxMSw3IEBAIGlu bm9iYXNlX2Ryb3BfZm9yZWlnbigKIC8qKiBSZW5hbWUgYSBjb2x1bW4uCiBAcGFyYW0gcHJlYnVp bHQJCXRoZSBwcmVidWlsdCBzdHJ1Y3QKIEBwYXJhbSB0cngJCWRhdGEgZGljdGlvbmFyeSB0cmFu c2FjdGlvbgorQHBhcmFtIG50aF9jb2wJCTAtYmFzZWQgaW5kZXggb2YgdGhlIGNvbHVtbgogQHBh cmFtIGZyb20JCW9sZCBjb2x1bW4gbmFtZQogQHBhcmFtIHRvCQluZXcgY29sdW1uIG5hbWUKIEBy ZXR2YWwgdHJ1ZQkJRmFpbHVyZQpAQCAtMjUxOSw5ICsyNTIyLDEzIEBAIGlubm9iYXNlX3JlbmFt ZV9jb2x1bW4oCiAvKj09PT09PT09PT09PT09PT09PT0qLwogCXJvd19wcmVidWlsdF90KglwcmVi dWlsdCwKIAl0cnhfdCoJCXRyeCwKKwl1bGludAkJbnRoX2NvbCwKIAljb25zdCBjaGFyKglmcm9t LAogCWNvbnN0IGNoYXIqCXRvKQogeworCXBhcnNfaW5mb190KglpbmZvOworCWRiZXJyX3QJCWVy cm9yOworCiAJREJVR19FTlRFUigiaW5ub2Jhc2VfcmVuYW1lX2NvbHVtbiIpOwogCiAJREJVR19B U1NFUlQodHJ4X2dldF9kaWN0X29wZXJhdGlvbih0cngpID09IFRSWF9ESUNUX09QX0lOREVYKTsK QEAgLTI1MzEsOTQgKzI1MzgsMTU2IEBAIGlubm9iYXNlX3JlbmFtZV9jb2x1bW4oCiAJdXRfYWQo cndfbG9ja19vd24oJmRpY3Rfb3BlcmF0aW9uX2xvY2ssIFJXX0xPQ0tfRVgpKTsKICNlbmRpZiAv KiBVTklWX1NZTkNfREVCVUcgKi8KIAotCS8qIFJlbmFtZSB0aGUgY29sdW1uIGluIHRoZSBkYXRh IGRpY3Rpb25hcnkuICovCi0Jc3RhdGljIGNvbnN0IGNoYXIgc3FsW10gPQotCQkiUFJPQ0VEVVJF IFJFTkFNRV9DT0xVTU5fUFJPQyAoKSBJU1xuIgotCQkiZmlkIENIQVI7XG4iCi0JCSJmb3VuZCBJ TlQ7XG4iCi0KLQkJIkRFQ0xBUkUgQ1VSU09SIGluZGV4X2N1ciBJU1xuIgotCQkiIFNFTEVDVCBJ RCBGUk9NIFNZU19JTkRFWEVTXG4iCi0JCSIgV0hFUkUgVEFCTEVfSUQ9OnRhYmxlaWQ7XG4iCi0K LQkJIkRFQ0xBUkUgQ1VSU09SIGZvcl9jdXIgSVNcbiIKLQkJIiBTRUxFQ1QgSUQgRlJPTSBTWVNf Rk9SRUlHTlxuIgotCQkiIFdIRVJFIEZPUl9OQU1FPTp0YWJsZTtcbiIKLQotCQkiREVDTEFSRSBD VVJTT1IgcmVmX2N1ciBJU1xuIgotCQkiIFNFTEVDVCBJRCBGUk9NIFNZU19GT1JFSUdOXG4iCi0J CSIgV0hFUkUgUkVGX05BTUU9OnRhYmxlO1xuIgotCi0JCSJCRUdJTlxuIgotCQkiZm91bmQgOj0g MTtcbiIKLQkJIk9QRU4gaW5kZXhfY3VyO1xuIgotCQkiV0hJTEUgZm91bmQgPSAxIExPT1BcbiIK LQkJIiAgRkVUQ0ggaW5kZXhfY3VyIElOVE8gZmlkO1xuIgotCQkiICBJRiAoU1FMICUgTk9URk9V TkQpIFRIRU5cbiIKLQkJIiAgICBmb3VuZCA6PSAwO1xuIgotCQkiICBFTFNFXG4iCi0JCSIgICAg VVBEQVRFIFNZU19GSUVMRFMgU0VUIENPTF9OQU1FPTpuZXdcbiIKLQkJIiAgICBXSEVSRSBJTkRF WF9JRD1maWQgQU5EIENPTF9OQU1FPTpvbGQ7XG4iCi0JCSIgIEVORCBJRjtcbiIKLQkJIkVORCBM T09QO1xuIgotCQkiQ0xPU0UgaW5kZXhfY3VyO1xuIgotCi0JCSJVUERBVEUgU1lTX0NPTFVNTlMg U0VUIE5BTUU9Om5ld1xuIgotCQkiV0hFUkUgVEFCTEVfSUQ9OnRhYmxlaWQgQU5EIE5BTUU9Om9s ZDtcbiIKLQotCQkiZm91bmQgOj0gMTtcbiIKLQkJIk9QRU4gZm9yX2N1cjtcbiIKLQkJIldISUxF IGZvdW5kID0gMSBMT09QXG4iCi0JCSIgIEZFVENIIGZvcl9jdXIgSU5UTyBmaWQ7XG4iCi0JCSIg IElGIChTUUwgJSBOT1RGT1VORCkgVEhFTlxuIgotCQkiICAgIGZvdW5kIDo9IDA7XG4iCi0JCSIg IEVMU0VcbiIKLQkJIiAgICBVUERBVEUgU1lTX0ZPUkVJR05fQ09MUyBTRVQgRk9SX0NPTF9OQU1F PTpuZXdcbiIKLQkJIiAgICBXSEVSRSBJRD1maWQgQU5EIEZPUl9DT0xfTkFNRT06b2xkO1xuIgot CQkiICBFTkQgSUY7XG4iCi0JCSJFTkQgTE9PUDtcbiIKLQkJIkNMT1NFIGZvcl9jdXI7XG4iCi0K LQkJImZvdW5kIDo9IDE7XG4iCi0JCSJPUEVOIHJlZl9jdXI7XG4iCi0JCSJXSElMRSBmb3VuZCA9 IDEgTE9PUFxuIgotCQkiICBGRVRDSCByZWZfY3VyIElOVE8gZmlkO1xuIgotCQkiICBJRiAoU1FM ICUgTk9URk9VTkQpIFRIRU5cbiIKLQkJIiAgICBmb3VuZCA6PSAwO1xuIgotCQkiICBFTFNFXG4i Ci0JCSIgICAgVVBEQVRFIFNZU19GT1JFSUdOX0NPTFMgU0VUIFJFRl9DT0xfTkFNRT06bmV3XG4i Ci0JCSIgICAgV0hFUkUgSUQ9ZmlkIEFORCBSRUZfQ09MX05BTUU9Om9sZDtcbiIKLQkJIiAgRU5E IElGO1xuIgotCQkiRU5EIExPT1A7XG4iCi0JCSJDTE9TRSByZWZfY3VyO1xuIgotCi0JCSJFTkQ7 XG4iOwotCXBhcnNfaW5mb190KglpbmZvCT0gcGFyc19pbmZvX2NyZWF0ZSgpOwotCWRiZXJyX3QJ CWVycm9yOworCWluZm8gPSBwYXJzX2luZm9fY3JlYXRlKCk7CiAKIAlwYXJzX2luZm9fYWRkX3Vs bF9saXRlcmFsKGluZm8sICJ0YWJsZWlkIiwgcHJlYnVpbHQtPnRhYmxlLT5pZCk7Ci0JcGFyc19p bmZvX2FkZF9zdHJfbGl0ZXJhbChpbmZvLCAidGFibGUiLCBwcmVidWlsdC0+dGFibGUtPm5hbWUp OworCXBhcnNfaW5mb19hZGRfaW50NF9saXRlcmFsKGluZm8sICJudGgiLCBudGhfY29sKTsKIAlw YXJzX2luZm9fYWRkX3N0cl9saXRlcmFsKGluZm8sICJvbGQiLCBmcm9tKTsKIAlwYXJzX2luZm9f YWRkX3N0cl9saXRlcmFsKGluZm8sICJuZXciLCB0byk7CiAKLQl0cngtPm9wX2luZm8gPSAicmVu YW1pbmcgY29sdW1uIjsKKwl0cngtPm9wX2luZm8gPSAicmVuYW1pbmcgY29sdW1uIGluIFNZU19D T0xVTU5TIjsKIAotCWVycm9yID0gcXVlX2V2YWxfc3FsKGluZm8sIHNxbCwgRkFMU0UsIHRyeCk7 Ci0JdHJ4LT5vcF9pbmZvID0gIiI7CisJZXJyb3IgPSBxdWVfZXZhbF9zcWwoCisJCWluZm8sCisJ CSJQUk9DRURVUkUgUkVOQU1FX1NZU19DT0xVTU5TX1BST0MgKCkgSVNcbiIKKwkJIkJFR0lOXG4i CisJCSJVUERBVEUgU1lTX0NPTFVNTlMgU0VUIE5BTUU9Om5ld1xuIgorCQkiV0hFUkUgVEFCTEVf SUQ9OnRhYmxlaWQgQU5EIE5BTUU9Om9sZFxuIgorCQkiQU5EIFBPUz06bnRoO1xuIgorCisJCS8q IFRyeSBhZ2FpbiwgaW4gY2FzZSB0aGVyZSBpcyBhIHByZWZpeF9sZW4KKwkJZW5jb2RlZCBpbiBT WVNfQ09MVU1OUy5QT1MgKi8KKworCQkiVVBEQVRFIFNZU19DT0xVTU5TIFNFVCBOQU1FPTpuZXdc biIKKwkJIldIRVJFIFRBQkxFX0lEPTp0YWJsZWlkIEFORCBOQU1FPTpvbGRcbiIKKwkJIkFORCBQ T1M+PTY1NTM2KjpudGggQU5EIFBPUzw2NTUzNiooOm50aCsxKTtcbiIKKworCQkiRU5EO1xuIiwK KwkJRkFMU0UsIHRyeCk7CiAKIAlpZiAoZXJyb3IgIT0gREJfU1VDQ0VTUykgeworZXJyX2V4aXQ6 CiAJCW15X2Vycm9yX2lubm9kYihlcnJvciwgcHJlYnVpbHQtPnRhYmxlLT5uYW1lLCAwKTsKIAkJ dHJ4LT5lcnJvcl9zdGF0ZSA9IERCX1NVQ0NFU1M7CisJCXRyeC0+b3BfaW5mbyA9ICIiOwogCQlE QlVHX1JFVFVSTih0cnVlKTsKIAl9CiAKLQkvKiBSZW5hbWUgdGhlIGNvbHVtbiBpbiB0aGUgZGF0 YSBkaWN0aW9uYXJ5IGNhY2hlLiAqLwotCWlmICghZGljdF9tZW1fdGFibGVfY29sX3JlbmFtZShw cmVidWlsdC0+dGFibGUsIGZyb20sIHRvKSkgewotCQlEQlVHX0FTU0VSVCgwKTsKLQkJbXlfZXJy b3IoRVJfTk9UX0tFWUZJTEUsIE1ZRigwKSwgcHJlYnVpbHQtPnRhYmxlLT5uYW1lKTsKLQkJREJV R19SRVRVUk4odHJ1ZSk7CisJdHJ4LT5vcF9pbmZvID0gInJlbmFtaW5nIGNvbHVtbiBpbiBTWVNf RklFTERTIjsKKworCWZvciAoZGljdF9pbmRleF90KiBpbmRleCA9IGRpY3RfdGFibGVfZ2V0X2Zp cnN0X2luZGV4KHByZWJ1aWx0LT50YWJsZSk7CisJICAgICBpbmRleCAhPSBOVUxMOworCSAgICAg aW5kZXggPSBkaWN0X3RhYmxlX2dldF9uZXh0X2luZGV4KGluZGV4KSkgeworCisJCWZvciAodWxp bnQgaSA9IDA7IGkgPCBkaWN0X2luZGV4X2dldF9uX2ZpZWxkcyhpbmRleCk7IGkrKykgeworCQkJ aWYgKHN0cmNtcChkaWN0X2luZGV4X2dldF9udGhfZmllbGQoaW5kZXgsIGkpLT5uYW1lLAorCQkJ CSAgIGZyb20pKSB7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCWluZm8gPSBwYXJzX2luZm9f Y3JlYXRlKCk7CisKKwkJCXBhcnNfaW5mb19hZGRfdWxsX2xpdGVyYWwoaW5mbywgImluZGV4aWQi LCBpbmRleC0+aWQpOworCQkJcGFyc19pbmZvX2FkZF9pbnQ0X2xpdGVyYWwoaW5mbywgIm50aCIs IGkpOworCQkJcGFyc19pbmZvX2FkZF9zdHJfbGl0ZXJhbChpbmZvLCAib2xkIiwgZnJvbSk7CisJ CQlwYXJzX2luZm9fYWRkX3N0cl9saXRlcmFsKGluZm8sICJuZXciLCB0byk7CisKKwkJCWVycm9y ID0gcXVlX2V2YWxfc3FsKAorCQkJCWluZm8sCisJCQkJIlBST0NFRFVSRSBSRU5BTUVfU1lTX0ZJ RUxEU19QUk9DICgpIElTXG4iCisJCQkJIkJFR0lOXG4iCisKKwkJCQkiVVBEQVRFIFNZU19GSUVM RFMgU0VUIENPTF9OQU1FPTpuZXdcbiIKKwkJCQkiV0hFUkUgSU5ERVhfSUQ9OmluZGV4aWQgQU5E IENPTF9OQU1FPTpvbGRcbiIKKwkJCQkiQU5EIFBPUz06bnRoO1xuIgorCisJCQkJLyogVHJ5IGFn YWluLCBpbiBjYXNlIHRoZXJlIGlzIGEgcHJlZml4X2xlbgorCQkJCWVuY29kZWQgaW4gU1lTX0ZJ RUxEUy5QT1MgKi8KKworCQkJCSJVUERBVEUgU1lTX0ZJRUxEUyBTRVQgQ09MX05BTUU9Om5ld1xu IgorCQkJCSJXSEVSRSBJTkRFWF9JRD06aW5kZXhpZCBBTkQgQ09MX05BTUU9Om9sZFxuIgorCQkJ CSJBTkQgUE9TPj02NTUzNio6bnRoIEFORCBQT1M8NjU1MzYqKDpudGgrMSk7XG4iCisKKwkJCQki RU5EO1xuIiwKKwkJCQlGQUxTRSwgdHJ4KTsKKworCQkJaWYgKGVycm9yICE9IERCX1NVQ0NFU1Mp IHsKKwkJCQlnb3RvIGVycl9leGl0OworCQkJfQorCQl9CiAJfQogCisJdHJ4LT5vcF9pbmZvID0g InJlbmFtaW5nIGNvbHVtbiBpbiBTWVNfRk9SRUlHTl9DT0xTIjsKKworCWZvciAoZGljdF9mb3Jl aWduX3QqIGZvcmVpZ24gPSBVVF9MSVNUX0dFVF9GSVJTVCgKKwkJICAgICBwcmVidWlsdC0+dGFi bGUtPmZvcmVpZ25fbGlzdCk7CisJICAgICBmb3JlaWduICE9IE5VTEw7CisJICAgICBmb3JlaWdu ID0gVVRfTElTVF9HRVRfTkVYVChmb3JlaWduX2xpc3QsIGZvcmVpZ24pKSB7CisJCWZvciAodW5z aWduZWQgaSA9IDA7IGkgPCBmb3JlaWduLT5uX2ZpZWxkczsgaSsrKSB7CisJCQlpZiAoc3RyY21w KGZvcmVpZ24tPmZvcmVpZ25fY29sX25hbWVzW2ldLCBmcm9tKSkgeworCQkJCWNvbnRpbnVlOwor CQkJfQorCisJCQlpbmZvID0gcGFyc19pbmZvX2NyZWF0ZSgpOworCisJCQlwYXJzX2luZm9fYWRk X3N0cl9saXRlcmFsKGluZm8sICJpZCIsIGZvcmVpZ24tPmlkKTsKKwkJCXBhcnNfaW5mb19hZGRf aW50NF9saXRlcmFsKGluZm8sICJudGgiLCBpKTsKKwkJCXBhcnNfaW5mb19hZGRfc3RyX2xpdGVy YWwoaW5mbywgIm9sZCIsIGZyb20pOworCQkJcGFyc19pbmZvX2FkZF9zdHJfbGl0ZXJhbChpbmZv LCAibmV3IiwgdG8pOworCisJCQllcnJvciA9IHF1ZV9ldmFsX3NxbCgKKwkJCQlpbmZvLAorCQkJ CSJQUk9DRURVUkUgUkVOQU1FX1NZU19GT1JFSUdOX0ZfUFJPQyAoKSBJU1xuIgorCQkJCSJCRUdJ TlxuIgorCQkJCSJVUERBVEUgU1lTX0ZPUkVJR05fQ09MU1xuIgorCQkJCSJTRVQgRk9SX0NPTF9O QU1FPTpuZXdcbiIKKwkJCQkiV0hFUkUgSUQ9OmlkIEFORCBQT1M9Om50aFxuIgorCQkJCSJBTkQg Rk9SX0NPTF9OQU1FPTpvbGQ7XG4iCisJCQkJIkVORDtcbiIsCisJCQkJRkFMU0UsIHRyeCk7CisK KwkJCWlmIChlcnJvciAhPSBEQl9TVUNDRVNTKSB7CisJCQkJZ290byBlcnJfZXhpdDsKKwkJCX0K KwkJfQorCX0KKworCWZvciAoZGljdF9mb3JlaWduX3QqIGZvcmVpZ24gPSBVVF9MSVNUX0dFVF9G SVJTVCgKKwkJICAgICBwcmVidWlsdC0+dGFibGUtPnJlZmVyZW5jZWRfbGlzdCk7CisJICAgICBm b3JlaWduICE9IE5VTEw7CisJICAgICBmb3JlaWduID0gVVRfTElTVF9HRVRfTkVYVChyZWZlcmVu Y2VkX2xpc3QsIGZvcmVpZ24pKSB7CisJCWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3JlaWdu LT5uX2ZpZWxkczsgaSsrKSB7CisJCQlpZiAoc3RyY21wKGZvcmVpZ24tPnJlZmVyZW5jZWRfY29s X25hbWVzW2ldLCBmcm9tKSkgeworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlpbmZvID0gcGFy c19pbmZvX2NyZWF0ZSgpOworCisJCQlwYXJzX2luZm9fYWRkX3N0cl9saXRlcmFsKGluZm8sICJp ZCIsIGZvcmVpZ24tPmlkKTsKKwkJCXBhcnNfaW5mb19hZGRfaW50NF9saXRlcmFsKGluZm8sICJu dGgiLCBpKTsKKwkJCXBhcnNfaW5mb19hZGRfc3RyX2xpdGVyYWwoaW5mbywgIm9sZCIsIGZyb20p OworCQkJcGFyc19pbmZvX2FkZF9zdHJfbGl0ZXJhbChpbmZvLCAibmV3IiwgdG8pOworCisJCQll cnJvciA9IHF1ZV9ldmFsX3NxbCgKKwkJCQlpbmZvLAorCQkJCSJQUk9DRURVUkUgUkVOQU1FX1NZ U19GT1JFSUdOX1JfUFJPQyAoKSBJU1xuIgorCQkJCSJCRUdJTlxuIgorCQkJCSJVUERBVEUgU1lT X0ZPUkVJR05fQ09MU1xuIgorCQkJCSJTRVQgUkVGX0NPTF9OQU1FPTpuZXdcbiIKKwkJCQkiV0hF UkUgSUQ9OmlkIEFORCBQT1M9Om50aFxuIgorCQkJCSJBTkQgUkVGX0NPTF9OQU1FPTpvbGQ7XG4i CisJCQkJIkVORDtcbiIsCisJCQkJRkFMU0UsIHRyeCk7CisKKwkJCWlmIChlcnJvciAhPSBEQl9T VUNDRVNTKSB7CisJCQkJZ290byBlcnJfZXhpdDsKKwkJCX0KKwkJfQorCX0KKworCXRyeC0+b3Bf aW5mbyA9ICIiOworCS8qIFJlbmFtZSB0aGUgY29sdW1uIGluIHRoZSBkYXRhIGRpY3Rpb25hcnkg Y2FjaGUuICovCisJZGljdF9tZW1fdGFibGVfY29sX3JlbmFtZShwcmVidWlsdC0+dGFibGUsIG50 aF9jb2wsIGZyb20sIHRvKTsKIAlEQlVHX1JFVFVSTihmYWxzZSk7CiB9CiAKQEAgLTI4MDksMzMg KzI4NzgsMzcgQEAgaGFfaW5ub2Jhc2U6OmNvbW1pdF9pbnBsYWNlX2FsdGVyX3RhYmxlKAogCSAg ICAmJiAoaGFfYWx0ZXJfaW5mby0+aGFuZGxlcl9mbGFncwogCQkmIEFsdGVyX2lucGxhY2VfaW5m bzo6QUxURVJfQ09MVU1OX05BTUUpKSB7CiAJCUxpc3RfaXRlcmF0b3JfZmFzdDxDcmVhdGVfZmll bGQ+IGNmX2l0OworCQl1aW50IGkgPSAwOworCisJCWZvciAoRmllbGQqKiBmcCA9IHRhYmxlLT5m aWVsZDsgKmZwICYmIGVyciA9PSAwOyBmcCsrLCBpKyspIHsKKwkJCWlmICghKCgqZnApLT5mbGFn cyAmIEZJRUxEX0lTX1JFTkFNRUQpKSB7CisJCQkJY29udGludWU7CisJCQl9CiAKLQkJZm9yIChG aWVsZCoqIGZwID0gdGFibGUtPmZpZWxkOyBlcnIgPT0gMCAmJiAqZnA7IGZwKyspIHsKLQkJCWlm ICgoKmZwKS0+ZmxhZ3MgJiBGSUVMRF9JU19SRU5BTUVEKSB7Ci0JCQkJY2ZfaXQuaW5pdChoYV9h bHRlcl9pbmZvLT5hbHRlcl9pbmZvCi0JCQkJCSAgIC0+Y3JlYXRlX2xpc3QpOwotCQkJCXdoaWxl IChDcmVhdGVfZmllbGQqIGNmID0gY2ZfaXQrKykgewotCQkJCQlpZiAoY2YtPmZpZWxkID09ICpm cCkgewotCQkJCQkJaWYgKGlubm9iYXNlX3JlbmFtZV9jb2x1bW4oCi0JCQkJCQkJICAgIHByZWJ1 aWx0LAotCQkJCQkJCSAgICB0cngsCi0JCQkJCQkJICAgIGNmLT5maWVsZAotCQkJCQkJCSAgICAt PmZpZWxkX25hbWUsCi0JCQkJCQkJICAgIGNmLT5maWVsZF9uYW1lKSkgewotCQkJCQkJCWVyciA9 IC0xOwotCQkJCQkJfQotCQkJCQkJZ290byBwcm9jZXNzZWRfZmllbGQ7CisJCQljZl9pdC5pbml0 KGhhX2FsdGVyX2luZm8tPmFsdGVyX2luZm8tPmNyZWF0ZV9saXN0KTsKKwkJCXdoaWxlIChDcmVh dGVfZmllbGQqIGNmID0gY2ZfaXQrKykgeworCQkJCWlmIChjZi0+ZmllbGQgPT0gKmZwKSB7CisJ CQkJCWlmIChpbm5vYmFzZV9yZW5hbWVfY29sdW1uKAorCQkJCQkJICAgIHByZWJ1aWx0LCB0cngs IGksCisJCQkJCQkgICAgY2YtPmZpZWxkLT5maWVsZF9uYW1lLAorCQkJCQkJICAgIGNmLT5maWVs ZF9uYW1lKSkgeworCQkJCQkJZXJyID0gLTE7CiAJCQkJCX0KKwkJCQkJZ290byBwcm9jZXNzZWRf ZmllbGQ7CiAJCQkJfQotCi0JCQkJdXRfZXJyb3I7CiAJCQl9CisKKwkJCXV0X2Vycm9yOwogcHJv Y2Vzc2VkX2ZpZWxkOgogCQkJY29udGludWU7CiAJCX0KIAl9CiAKLQl0cnhfY29tbWl0X2Zvcl9t eXNxbCh0cngpOworCWlmIChlcnIgPT0gMCkgeworCQl0cnhfY29tbWl0X2Zvcl9teXNxbCh0cngp OworCX0gZWxzZSB7CisJCXRyeF9yb2xsYmFja19mb3JfbXlzcWwodHJ4KTsKKwl9CiAKIAlpZiAo ZXJyID09IDAgJiYgY3R4KSB7CiAJCS8qIFRoZSBjaGFuZ2VzIHdlcmUgc3VjY2Vzc2Z1bGx5IHBl cmZvcm1lZC4gKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv ZGljdDBkaWN0LmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MGRpY3QuaAly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDQxNjE4MjQ1Ny1qdzk4dmxpM3Vqb2Rj bXg5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MGRpY3QuaAlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDQxNzE0MDYwMS1xNHh5dTg5a2tzN2tyaDIxCkBAIC01 NDIsMTkgKzU0Miw2IEBAIGRpY3RfZm9yZWlnbl9maW5kX2luZGV4KAogCQkJCQlOT1QgTlVMTCAq LwogCV9fYXR0cmlidXRlX18oKG5vbm51bGwoMSwyKSwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKLVJldHVybnMgYW4gaW5kZXggb2JqZWN0IGJ5IG1hdGNoaW5nIG9u IHRoZSBuYW1lIGFuZCBjb2x1bW4gbmFtZXMgYW5kCi1pZiBtb3JlIHRoYW4gb25lIGluZGV4IG1h dGNoZXMgcmV0dXJuIHRoZSBpbmRleCB3aXRoIHRoZSBtYXggaWQKLUByZXR1cm4JbWF0Y2hpbmcg aW5kZXgsIE5VTEwgaWYgbm90IGZvdW5kICovCi1VTklWX0lOVEVSTgotZGljdF9pbmRleF90Kgot ZGljdF90YWJsZV9nZXRfaW5kZXhfYnlfbWF4X2lkKAotLyo9PT09PT09PT09PT09PT09PT09PT09 PT09PT0qLwotCWRpY3RfdGFibGVfdCoJdGFibGUsCS8qITwgaW46IHRhYmxlICovCi0JY29uc3Qg Y2hhcioJbmFtZSwJLyohPCBpbjogdGhlIGluZGV4IG5hbWUgdG8gZmluZCAqLwotCWNvbnN0IGNo YXIqKgljb2x1bW5zLC8qITwgaW46IGFycmF5IG9mIGNvbHVtbiBuYW1lcyAqLwotCXVsaW50CQlu X2NvbHMpCS8qITwgaW46IG51bWJlciBvZiBjb2x1bW5zICovCi0JX19hdHRyaWJ1dGVfXygobm9u bnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJldHVybnMg YSBjb2x1bW4ncyBuYW1lLgogQHJldHVybiBjb2x1bW4gbmFtZS4gTk9URTogbm90IGd1YXJhbnRl ZWQgdG8gc3RheSB2YWxpZCBpZiB0YWJsZSBpcwogbW9kaWZpZWQgaW4gYW55IHdheSAoY29sdW1u cyBhZGRlZCwgZXRjLikuICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2RpY3QwbWVtLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MG1l bS5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNDE2MTgyNDU3LWp3OTh2bGkz dWpvZGNteDkKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwbWVtLmgJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA0MTcxNDA2MDEtcTR4eXU4OWtrczdrcmgyMQpA QCAtMjUzLDEzICsyNTMsMTMgQEAgZGljdF9tZW1fdGFibGVfYWRkX2NvbCgKIAl1bGludAkJbGVu KQkvKiE8IGluOiBwcmVjaXNpb24gKi8KIAlfX2F0dHJpYnV0ZV9fKChub25udWxsKDEpKSk7CiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKLVJlbmFtZXMgYSBjb2x1bW4gb2YgYSB0YWJsZSBpbiB0aGUgZGF0 YSBkaWN0aW9uYXJ5IGNhY2hlLgotQHJldHVybiB3aGV0aGVyIHRoZSBvcGVyYXRpb24gc3VjY2Vl ZGVkICovCitSZW5hbWVzIGEgY29sdW1uIG9mIGEgdGFibGUgaW4gdGhlIGRhdGEgZGljdGlvbmFy eSBjYWNoZS4gKi8KIFVOSVZfSU5URVJOCi1ib29sCit2b2lkCiBkaWN0X21lbV90YWJsZV9jb2xf cmVuYW1lKAogLyo9PT09PT09PT09PT09PT09PT09PT09Ki8KIAlkaWN0X3RhYmxlX3QqCXRhYmxl LAkvKiE8IGluL291dDogdGFibGUgKi8KKwl1bnNpZ25lZAludGhfY29sLC8qITwgaW46IGNvbHVt biBpbmRleCAqLwogCWNvbnN0IGNoYXIqCWZyb20sCS8qITwgaW46IG9sZCBjb2x1bW4gbmFtZSAq LwogCWNvbnN0IGNoYXIqCXRvKQkvKiE8IGluOiBuZXcgY29sdW1uIG5hbWUgKi8KIAlfX2F0dHJp YnV0ZV9fKChub25udWxsKSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL3JvdzBtZXJnZS5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MG1l cmdlLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA0MTYxODI0NTctanc5OHZs aTN1am9kY214OQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MG1lcmdlLmgJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA0MTcxNDA2MDEtcTR4eXU4OWtrczdrcmgy MQpAQCAtOTYsOSArOTYsOSBAQCB0eXBlZGVmIHN0cnVjdCBtZXJnZV9maWxlX3N0cnVjdAltZXJn ZV9mCiAKIC8qKiBJbmRleCBmaWVsZCBkZWZpbml0aW9uICovCiBzdHJ1Y3QgbWVyZ2VfaW5kZXhf ZmllbGRfc3RydWN0IHsKKwl1bGludAkJY29sX25vOwkJLyohPCBjb2x1bW4gb2Zmc2V0ICovCiAJ dWxpbnQJCXByZWZpeF9sZW47CS8qITwgY29sdW1uIHByZWZpeCBsZW5ndGgsIG9yIDAKIAkJCQkJ aWYgaW5kZXhpbmcgdGhlIHdob2xlIGNvbHVtbiAqLwotCWNvbnN0IGNoYXIqCWZpZWxkX25hbWU7 CS8qITwgZmllbGQgbmFtZSAqLwogfTsKIAogLyoqIEluZGV4IGZpZWxkIGRlZmluaXRpb24gKi8K Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVwZC5pYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB1cGQuaWMJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMjA0MTYxODI0NTctanc5OHZsaTN1am9kY214OQorKysgYi9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVwZC5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDEyMDQxNzE0MDYwMS1xNHh5dTg5a2tzN2tyaDIxCkBAIC0xLDYgKzEsNiBAQAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NiwgMjAxMSwgT3JhY2xlIGFu ZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykg MTk5NiwgMjAxMiwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNl cnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC00 NSw3ICs0NSw2IEBAIHVwZF9jcmVhdGUoCiAKIAl1cGRhdGUgPSAodXBkX3QqKSBtZW1faGVhcF96 YWxsb2MoaGVhcCwgc2l6ZW9mKHVwZF90KSk7CiAKLQl1cGRhdGUtPmluZm9fYml0cyA9IDA7CiAJ dXBkYXRlLT5uX2ZpZWxkcyA9IG47CiAJdXBkYXRlLT5maWVsZHMgPSAodXBkX2ZpZWxkX3QqKQog CQltZW1faGVhcF96YWxsb2MoaGVhcCwgc2l6ZW9mKHVwZF9maWVsZF90KSAqIG4pOwpAQCAtMTEw LDYgKzEwOSw3IEBAIHVwZF9maWVsZF9zZXRfZmllbGRfbm8oCiAJCWZwcmludGYoc3RkZXJyLCAi XG4iCiAJCQkiSW5ub0RCOiBidXQgaW5kZXggb25seSBoYXMgJWx1IGZpZWxkc1xuIiwKIAkJCSh1 bG9uZykgZGljdF9pbmRleF9nZXRfbl9maWVsZHMoaW5kZXgpKTsKKwkJdXRfYWQoMCk7CiAJfQog CiAJZGljdF9jb2xfY29weV90eXBlKGRpY3RfaW5kZXhfZ2V0X250aF9jb2woaW5kZXgsIGZpZWxk X25vKSwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2xvZy9sb2cwcmVjdi5j YycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9sb2cvbG9nMHJlY3YuY2MJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMjA0MTYxODI0NTctanc5OHZsaTN1am9kY214OQorKysgYi9zdG9y YWdlL2lubm9iYXNlL2xvZy9sb2cwcmVjdi5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEyMDQxNzE0MDYwMS1xNHh5dTg5a2tzN2tyaDIxCkBAIC0yODk0LDcgKzI4OTQsNyBAQCBy ZWN2X3JlY292ZXJ5X2Zyb21fY2hlY2twb2ludF9zdGFydF9mdW5jCiAJbHNuX3QJCWNoZWNrcG9p bnRfbHNuOwogCWliX3VpbnQ2NF90CWNoZWNrcG9pbnRfbm87CiAJbHNuX3QJCW9sZF9zY2FubmVk X2xzbjsKLQlsc25fdAkJZ3JvdXBfc2Nhbm5lZF9sc247CisJbHNuX3QJCWdyb3VwX3NjYW5uZWRf bHNuID0gMDsKIAlsc25fdAkJY29udGlndW91c19sc247CiAjaWZkZWYgVU5JVl9MT0dfQVJDSElW RQogCWxzbl90CQlhcmNoaXZlZF9sc247Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MG1lcmdlLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVy Z2UuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA0MTYxODI0NTctanc5OHZs aTN1am9kY214OQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuY2MJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA0MTcxNDA2MDEtcTR4eXU4OWtrczdrcmgyMQpA QCAtNzk4LDMwICs3OTgsNDcgQEAgcm93X21lcmdlX2hlYXBfY3JlYXRlKAogU2VhcmNoIGFuIGlu ZGV4IG9iamVjdCBieSBuYW1lIGFuZCBjb2x1bW4gbmFtZXMuICBJZiBzZXZlcmFsIGluZGV4ZXMg bWF0Y2gsCiByZXR1cm4gdGhlIGluZGV4IHdpdGggdGhlIG1heCBpZC4KIEByZXR1cm4JbWF0Y2hp bmcgaW5kZXgsIE5VTEwgaWYgbm90IGZvdW5kICovCi1zdGF0aWMKK3N0YXRpYyBfX2F0dHJpYnV0 ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKQogZGljdF9pbmRleF90Kgogcm93X21l cmdlX2RpY3RfdGFibGVfZ2V0X2luZGV4KAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT0q LwogCWRpY3RfdGFibGVfdCoJCXRhYmxlLAkJLyohPCBpbjogdGFibGUgKi8KIAljb25zdCBtZXJn ZV9pbmRleF9kZWZfdCppbmRleF9kZWYpCS8qITwgaW46IGluZGV4IGRlZmluaXRpb24gKi8KIHsK LQl1bGludAkJaTsKLQlkaWN0X2luZGV4X3QqCWluZGV4OwotCWNvbnN0IGNoYXIqKgljb2x1bW5f bmFtZXM7CisJZGljdF9pbmRleF90Kglmb3VuZAk9IE5VTEw7CiAKLQljb2x1bW5fbmFtZXMgPSBz dGF0aWNfY2FzdDxjb25zdCBjaGFyKio+KAotCQltZW1fYWxsb2MoaW5kZXhfZGVmLT5uX2ZpZWxk cyAqIHNpemVvZiAqY29sdW1uX25hbWVzKSk7CisJZm91bmQgPSBOVUxMOworCWZvciAoZGljdF9p bmRleF90KiBpbmRleCA9IGRpY3RfdGFibGVfZ2V0X2ZpcnN0X2luZGV4KHRhYmxlKTsKKwkgICAg IGluZGV4ICE9IE5VTEw7CisJICAgICBpbmRleCA9IGRpY3RfdGFibGVfZ2V0X25leHRfaW5kZXgo aW5kZXgpKSB7CisKKwkJaWYgKHV0X3N0cmNtcChpbmRleC0+bmFtZSwgaW5kZXhfZGVmLT5uYW1l KSA9PSAwCisJCSAgICAmJiBkaWN0X2luZGV4X2dldF9uX29yZGVyaW5nX2RlZmluZWRfYnlfdXNl cihpbmRleCkKKwkJICAgID09IGluZGV4X2RlZi0+bl9maWVsZHMpIHsKKworCQkJZm9yICh1bGlu dCBpID0gMDsgaSA8IGluZGV4X2RlZi0+bl9maWVsZHM7IGkrKykgeworCQkJCWNvbnN0IGRpY3Rf ZmllbGRfdCoJZmllbGQKKwkJCQkJPSBkaWN0X2luZGV4X2dldF9udGhfZmllbGQoaW5kZXgsIGkp OworCisJCQkJaWYgKGRpY3RfY29sX2dldF9ubyhmaWVsZC0+Y29sKSAhPQorCQkJCSAgICBpbmRl eF9kZWYtPmZpZWxkc1tpXS5jb2xfbm8pIHsKKwkJCQkJZ290byBuZXh0X2luZGV4OworCQkJCX0K KwkJCX0KIAotCWZvciAoaSA9IDA7IGkgPCBpbmRleF9kZWYtPm5fZmllbGRzOyArK2kpIHsKLQkJ Y29sdW1uX25hbWVzW2ldID0gaW5kZXhfZGVmLT5maWVsZHNbaV0uZmllbGRfbmFtZTsKLQl9CisJ CQkvKiBXZSBmb3VuZCBhIG1hdGNoaW5nIGluZGV4LCBzZWxlY3QKKwkJCXRoZSBpbmRleCB3aXRo IHRoZSBoaWdoZXIgaWQqLwogCi0JaW5kZXggPSBkaWN0X3RhYmxlX2dldF9pbmRleF9ieV9tYXhf aWQoCi0JCXRhYmxlLCBpbmRleF9kZWYtPm5hbWUsIGNvbHVtbl9uYW1lcywgaW5kZXhfZGVmLT5u X2ZpZWxkcyk7CisJCQlpZiAoIWZvdW5kIHx8IGluZGV4LT5pZCA+IGZvdW5kLT5pZCkgewogCi0J bWVtX2ZyZWUoKHZvaWQqKSBjb2x1bW5fbmFtZXMpOworCQkJCWZvdW5kID0gaW5kZXg7CisJCQl9 CisJCX0KK25leHRfaW5kZXg6CisJCWNvbnRpbnVlOworCX0KIAotCXJldHVybihpbmRleCk7CisJ cmV0dXJuKGZvdW5kKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMzA5NSw4ICszMTEyLDkg QEAgcm93X21lcmdlX2NyZWF0ZV9pbmRleCgKIAlmb3IgKGkgPSAwOyBpIDwgbl9maWVsZHM7IGkr KykgewogCQltZXJnZV9pbmRleF9maWVsZF90KglpZmllbGQgPSAmaW5kZXhfZGVmLT5maWVsZHNb aV07CiAKLQkJZGljdF9tZW1faW5kZXhfYWRkX2ZpZWxkKGluZGV4LCBpZmllbGQtPmZpZWxkX25h bWUsCi0JCQkJCSBpZmllbGQtPnByZWZpeF9sZW4pOworCQlkaWN0X21lbV9pbmRleF9hZGRfZmll bGQoCisJCQlpbmRleCwgZGljdF90YWJsZV9nZXRfY29sX25hbWUodGFibGUsIGlmaWVsZC0+Y29s X25vKSwKKwkJCWlmaWVsZC0+cHJlZml4X2xlbik7CiAJfQogCiAJLyogQWRkIHRoZSBpbmRleCB0 byBTWVNfSU5ERVhFUywgdXNpbmcgdGhlIGluZGV4IHByb3RvdHlwZS4gKi8KCk5vIGJ1bmRsZSAo cmVhc29uOiB1c2VsZXNzIGZvciBwdXNoIGVtYWlscyku