From: marko.makela Date: June 19 2012 1:57pm Subject: bzr push into mysql-trunk-wl6255 branch (marko.makela:3996 to 3999) WL#6255 List-Archive: http://lists.mysql.com/commits/144268 Message-Id: <20120619135745.17849.95799.3999@x220> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM5OTkgTWFya28gTcOka2Vsw6QJMjAxMi0wNi0xOQogICAgICBXTCM2MjU1IG1lbW9yeSBsZWFr IGZpeC4KICAgICAgCiAgICAgIEZyZWUgdGhlIGluZGV4ZWRfdGFibGUgaWYgYSBjb2x1bW4gaXMg b2YgaW5jb3JyZWN0IG5hbWUgb3IgdHlwZS4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MKIDM5OTggTWFya28gTcOka2Vsw6QJMjAx Mi0wNi0xOQogICAgICBXTCM2MjU1OiBSZS1lbmFibGUgb25saW5lIHNlY29uZGFyeSBpbmRleCBj cmVhdGlvbi4KICAgICAgCiAgICAgIElmIGEgdGFibGUgY29udGFpbmVkIGZ1bGx0ZXh0IGluZGV4 ZXMsIHdlIGRpZCBub3QgYWxsb3cgb25saW5lIG9wZXJhdGlvbi4KICAgICAgV2Ugc2hvdWxkIG9u bHkgZGVueSBvbmxpbmUgcmVidWlsZCBpbiB0aGUgcHJlc2VuY2Ugb2YgZnVsbHRleHQgaW5kZXhl cy4KICAgICAgSW4gc2Vjb25kYXJ5IEItdHJlZSBpbmRleCBjcmVhdGlvbiwgdGhlIGZ1bGx0ZXh0 IGluZGV4ZXMgYXJlIG5vdCBhZmZlY3RlZC4KCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVz dC9zdWl0ZS9pbm5vZGJfZnRzL3IvaW5ub2RiLWZ0cy1kZGwucmVzdWx0CiAgICAgIG15c3FsLXRl c3Qvc3VpdGUvaW5ub2RiX2Z0cy90L2lubm9kYi1mdHMtZGRsLnRlc3QKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MKIDM5OTcgTWFya28gTcOka2Vsw6QJMjAx Mi0wNi0xOQogICAgICBXTCM2MjU1IHJiOjExMDUgUHJvYmxlbSAzMC4KICAgICAgCiAgICAgIFdo ZW4gcmVidWlsZGluZyBhIHRhYmxlIHRoYXQgaGFzIGEgZ2VuZXJhdGVkIGNsdXN0ZXJlZCBpbmRl eCAoREJfUk9XX0lEKSwKICAgICAgdHJlYXQgdGhlIERCX1JPV19JRCBhcyBhIHVuaXF1ZSBjb2x1 bW4gd2hlbiBhcHBseWluZyBtZXJnZWQgcm93cy4KICAgICAgCiAgICAgIHJvd19pbnNfY2x1c3Rf aW5kZXhfZW50cnlfbG93KCk6IEFkZCB0aGUgcGFyYW1ldGVyIG5fdW5pcS4KCiAgICBtb2RpZmll ZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBpbnMuaAogICAgICBzdG9yYWdl L2lubm9iYXNlL3Jvdy9yb3cwaW5zLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBs b2cuY2MKIDM5OTYgTWFya28gTcOka2Vsw6QJMjAxMi0wNi0xOQogICAgICBXTCM2MjU1IHJiOjEx MDUgUHJvYmxlbSAzMi4KICAgICAgCiAgICAgIHJvd19sb2dfdGFibGVfYXBwbHlfdXBkYXRlKCk6 IERvIG5vdCBwYXNzIGNvbF9tYXBbXSBhbmQgZnJpZW5kcyB0bwogICAgICByb3dfYnVpbGQoKSwg YmVjYXVzZSB0aGUgcmVjb3JkIGlzIGFscmVhZHkgaW4gdGhlIHJlYnVpbHQgdGFibGUuCgogICAg bW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBsb2cuY2MKPT09IG1vZGlm aWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX2Z0cy9yL2lubm9kYi1mdHMtZGRsLnJl c3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfZnRzL3IvaW5ub2RiLWZ0cy1kZGwu cmVzdWx0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNjE5MTA1NjI4LTVsNWVw Zms2MzRxc2FjOTAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfZnRzL3IvaW5ub2RiLWZ0 cy1kZGwucmVzdWx0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNjE5MTM1NTA1 LWZpY3Z1MWdyMHVlbHB2eGQKQEAgLTE2Nyw2ICsxNjcsOCBAQCBBREQgRlVMTFRFWFQgSU5ERVgg aWR4NSAodGl0bGUpOwogRVJST1IgSFkwMDA6IElubm9EQiBwcmVzZW50bHkgc3VwcG9ydHMgb25l IEZVTExURVhUIGluZGV4IGNyZWF0aW9uIGF0IGEgdGltZQogQ1JFQVRFIEZVTExURVhUIElOREVY IGlkeCBvbiBhcnRpY2xlcyAodGl0bGUpOwogQUxURVIgVEFCTEUgYXJ0aWNsZXMgQUREIEZVTExU RVhUIElOREVYIGlkeDMgKHRpdGxlKTsKK0FMVEVSIFRBQkxFIGFydGljbGVzIEFERCBJTkRFWCB0 MjAgKHRpdGxlKDIwKSksIExPQ0s9Tk9ORTsKK0FMVEVSIFRBQkxFIGFydGljbGVzIERST1AgSU5E RVggdDIwOwogSU5TRVJUIElOVE8gYXJ0aWNsZXMgKEZUU19ET0NfSUQsIHRpdGxlLCBib2R5KSBW QUxVRVMKICgyOSwgJ015U1FMIFR1dG9yaWFsJywnREJNUyBzdGFuZHMgZm9yIERhdGFCYXNlIC4u LicpLAogKDMwLCAnSG93IFRvIFVzZSBNeVNRTCBXZWxsJywnQWZ0ZXIgeW91IHdlbnQgdGhyb3Vn aCBhIC4uLicpLAoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX2Z0 cy90L2lubm9kYi1mdHMtZGRsLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX2Z0 cy90L2lubm9kYi1mdHMtZGRsLnRlc3QJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MjA2MTkxMDU2MjgtNWw1ZXBmazYzNHFzYWM5MAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9k Yl9mdHMvdC9pbm5vZGItZnRzLWRkbC50ZXN0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTIwNjE5MTM1NTA1LWZpY3Z1MWdyMHVlbHB2eGQKQEAgLTIwMiw2ICsyMDIsOSBAQCBBTFRF UiBUQUJMRSBhcnRpY2xlcyBBREQgRlVMTFRFWFQgSU5ERVgKIENSRUFURSBGVUxMVEVYVCBJTkRF WCBpZHggb24gYXJ0aWNsZXMgKHRpdGxlKTsKIEFMVEVSIFRBQkxFIGFydGljbGVzIEFERCBGVUxM VEVYVCBJTkRFWCBpZHgzICh0aXRsZSk7CiAKK0FMVEVSIFRBQkxFIGFydGljbGVzIEFERCBJTkRF WCB0MjAgKHRpdGxlKDIwKSksIExPQ0s9Tk9ORTsKK0FMVEVSIFRBQkxFIGFydGljbGVzIERST1Ag SU5ERVggdDIwOworCiBJTlNFUlQgSU5UTyBhcnRpY2xlcyAoRlRTX0RPQ19JRCwgdGl0bGUsIGJv ZHkpIFZBTFVFUwogICAgICAgICAoMjksICdNeVNRTCBUdXRvcmlhbCcsJ0RCTVMgc3RhbmRzIGZv ciBEYXRhQmFzZSAuLi4nKSwKICAgICAgICAgKDMwLCAnSG93IFRvIFVzZSBNeVNRTCBXZWxsJywn QWZ0ZXIgeW91IHdlbnQgdGhyb3VnaCBhIC4uLicpLAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3Jh Z2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjJwotLS0gYS9zdG9yYWdlL2lubm9i YXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEyMDYxOTEwNTYyOC01bDVlcGZrNjM0cXNhYzkwCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv aGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTIwNjE5MTM1NTA1LWZpY3Z1MWdyMHVlbHB2eGQKQEAgLTIzNDgsNyArMjM0OCw5IEBAIHByZXBh cmVfaW5wbGFjZV9hbHRlcl90YWJsZV9kaWN0KAogCXVsb25nCQkJYXV0b2luY19pbmMJPSAwOwog CiAJY29uc3QgYm9vbCBsb2NrZWQgPQotCQlpbm5vYmFzZV9mdWxsdGV4dF9leGlzdChhbHRlcmVk X3RhYmxlLT5zKQorCQludW1fZnRzX2luZGV4ID4gMAorCQl8fCAoaW5ub2Jhc2VfbmVlZF9yZWJ1 aWxkKGhhX2FsdGVyX2luZm8pCisJCSAgICAmJiBpbm5vYmFzZV9mdWxsdGV4dF9leGlzdChhbHRl cmVkX3RhYmxlLT5zKSkKIAkJfHwgKGFkZF9hdXRvaW5jX2NvbCAhPSBVTElOVF9VTkRFRklORUQp CiAJCXx8IGhhX2FsdGVyX2luZm8tPmFsdGVyX2luZm8tPnJlcXVlc3RlZF9sb2NrCiAJCT09IEFs dGVyX2luZm86OkFMVEVSX1RBQkxFX0xPQ0tfRVhDTFVTSVZFCkBAIC0yNTEyLDYgKzI1MTQsNyBA QCBwcmVwYXJlX2lucGxhY2VfYWx0ZXJfdGFibGVfZGljdCgKIAogCQkJaWYgKCFjb2xfdHlwZSkg ewogY29sX2ZhaWw6CisJCQkJZGljdF9tZW1fdGFibGVfZnJlZShpbmRleGVkX3RhYmxlKTsKIAkJ CQlteV9lcnJvcihFUl9XUk9OR19LRVlfQ09MVU1OLCBNWUYoMCksCiAJCQkJCSBmaWVsZC0+Zmll bGRfbmFtZSk7CiAJCQkJZ290byBuZXdfY2x1c3RlcmVkX2ZhaWxlZDsKQEAgLTI1NjQsNiArMjU2 Nyw3IEBAIGNvbF9mYWlsOgogCQkJfQogCiAJCQlpZiAoZGljdF9jb2xfbmFtZV9pc19yZXNlcnZl ZChmaWVsZC0+ZmllbGRfbmFtZSkpIHsKKwkJCQlkaWN0X21lbV90YWJsZV9mcmVlKGluZGV4ZWRf dGFibGUpOwogCQkJCW15X2Vycm9yKEVSX1dST05HX0NPTFVNTl9OQU1FLCBNWUYoMCksCiAJCQkJ CSBmaWVsZC0+ZmllbGRfbmFtZSk7CiAJCQkJZ290byBuZXdfY2x1c3RlcmVkX2ZhaWxlZDsKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MGlucy5oJwotLS0g YS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MGlucy5oCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTIwNjE5MTA1NjI4LTVsNWVwZms2MzRxc2FjOTAKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL3JvdzBpbnMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDEyMDYxOTEzNTUwNS1maWN2dTFncjB1ZWxwdnhkCkBAIC05NCw2ICs5NCw3IEBAIHJvd19pbnNf Y2x1c3RfaW5kZXhfZW50cnlfbG93KAogCQkJCWRlcGVuZGluZyBvbiB3aGV0aGVyIHdlIHdpc2gg b3B0aW1pc3RpYyBvcgogCQkJCXBlc3NpbWlzdGljIGRlc2NlbnQgZG93biB0aGUgaW5kZXggdHJl ZSAqLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGNsdXN0ZXJlZCBpbmRleCAqLwor CXVsaW50CQluX3VuaXEsCS8qITwgaW46IDAgb3IgaW5kZXgtPm5fdW5pcSAqLwogCWR0dXBsZV90 KgllbnRyeSwJLyohPCBpbi9vdXQ6IGluZGV4IGVudHJ5IHRvIGluc2VydCAqLwogCXVsaW50CQlu X2V4dCwJLyohPCBpbjogbnVtYmVyIG9mIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMgKi8KIAlx dWVfdGhyX3QqCXRocikJLyohPCBpbjogcXVlcnkgdGhyZWFkIG9yIE5VTEwgKi8KCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmNjJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL3Jvdy9yb3cwaW5zLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTIwNjE5MTA1NjI4LTVsNWVwZms2MzRxc2FjOTAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cv cm93MGlucy5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDYxOTEzNTUwNS1m aWN2dTFncjB1ZWxwdnhkCkBAIC0yMTg2LDYgKzIxODYsNyBAQCByb3dfaW5zX2NsdXN0X2luZGV4 X2VudHJ5X2xvdygKIAkJCQlkZXBlbmRpbmcgb24gd2hldGhlciB3ZSB3aXNoIG9wdGltaXN0aWMg b3IKIAkJCQlwZXNzaW1pc3RpYyBkZXNjZW50IGRvd24gdGhlIGluZGV4IHRyZWUgKi8KIAlkaWN0 X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXggKi8KKwl1bGludAkJbl91 bmlxLAkvKiE8IGluOiAwIG9yIGluZGV4LT5uX3VuaXEgKi8KIAlkdHVwbGVfdCoJZW50cnksCS8q ITwgaW4vb3V0OiBpbmRleCBlbnRyeSB0byBpbnNlcnQgKi8KIAl1bGludAkJbl9leHQsCS8qITwg aW46IG51bWJlciBvZiBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zICovCiAJcXVlX3Rocl90Kgl0 aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwpAQCAtMjE5MywxMiArMjE5NCwxNCBAQCByb3df aW5zX2NsdXN0X2luZGV4X2VudHJ5X2xvdygKIAlidHJfY3VyX3QJY3Vyc29yOwogCXVsaW50KgkJ b2Zmc2V0cwkJPSBOVUxMOwogCWRiZXJyX3QJCWVycjsKLQl1bGludAkJbl91bmlxdWU7CiAJYmln X3JlY190KgliaWdfcmVjCQk9IE5VTEw7CiAJbXRyX3QJCW10cjsKIAltZW1faGVhcF90KglvZmZz ZXRzX2hlYXAJPSBOVUxMOwogCiAJdXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOwor CXV0X2FkKCFkaWN0X2luZGV4X2lzX3VuaXF1ZShpbmRleCkKKwkgICAgICB8fCBuX3VuaXEgPT0g ZGljdF9pbmRleF9nZXRfbl91bmlxdWUoaW5kZXgpKTsKKwl1dF9hZCghbl91bmlxIHx8IG5fdW5p cSA9PSBkaWN0X2luZGV4X2dldF9uX3VuaXF1ZShpbmRleCkpOwogCiAJbXRyX3N0YXJ0KCZtdHIp OwogCkBAIC0yMjI4LDEwICsyMjMxLDggQEAgcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9sb3co CiAJfQogI2VuZGlmCiAKLQluX3VuaXF1ZSA9IGRpY3RfaW5kZXhfZ2V0X25fdW5pcXVlKGluZGV4 KTsKLQotCWlmIChkaWN0X2luZGV4X2lzX3VuaXF1ZShpbmRleCkgJiYgKGN1cnNvci51cF9tYXRj aCA+PSBuX3VuaXF1ZQotCQkJCQkgICAgfHwgY3Vyc29yLmxvd19tYXRjaCA+PSBuX3VuaXF1ZSkp IHsKKwlpZiAobl91bmlxICYmIChjdXJzb3IudXBfbWF0Y2ggPj0gbl91bmlxCisJCSAgICAgICB8 fCBjdXJzb3IubG93X21hdGNoID49IG5fdW5pcSkpIHsKIAogCQkvKiBOb3RlIHRoYXQgdGhlIGZv bGxvd2luZyBtYXkgcmV0dXJuIGFsc28KIAkJREJfTE9DS19XQUlUICovCkBAIC0yNTg1LDYgKzI1 ODYsNyBAQCByb3dfaW5zX2NsdXN0X2luZGV4X2VudHJ5KAogCXVsaW50CQluX2V4dCkJLyohPCBp bjogbnVtYmVyIG9mIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMgKi8KIHsKIAlkYmVycl90CWVy cjsKKwl1bGludAluX3VuaXE7CiAKIAlpZiAoVVRfTElTVF9HRVRfRklSU1QoaW5kZXgtPnRhYmxl LT5mb3JlaWduX2xpc3QpKSB7CiAJCWVyciA9IHJvd19pbnNfY2hlY2tfZm9yZWlnbl9jb25zdHJh aW50cygKQEAgLTI1OTUsMTIgKzI1OTcsMTQgQEAgcm93X2luc19jbHVzdF9pbmRleF9lbnRyeSgK IAkJfQogCX0KIAorCW5fdW5pcSA9IGRpY3RfaW5kZXhfaXNfdW5pcXVlKGluZGV4KSA/IGluZGV4 LT5uX3VuaXEgOiAwOworCiAJLyogVHJ5IGZpcnN0IG9wdGltaXN0aWMgZGVzY2VudCB0byB0aGUg Qi10cmVlICovCiAKIAlsb2dfZnJlZV9jaGVjaygpOwogCi0JZXJyID0gcm93X2luc19jbHVzdF9p bmRleF9lbnRyeV9sb3coMCwgQlRSX01PRElGWV9MRUFGLCBpbmRleCwgZW50cnksCi0JCQkJCSAg ICBuX2V4dCwgdGhyKTsKKwllcnIgPSByb3dfaW5zX2NsdXN0X2luZGV4X2VudHJ5X2xvdygKKwkJ MCwgQlRSX01PRElGWV9MRUFGLCBpbmRleCwgbl91bmlxLCBlbnRyeSwgbl9leHQsIHRocik7CiAJ aWYgKGVyciAhPSBEQl9GQUlMKSB7CiAKIAkJcmV0dXJuKGVycik7CkBAIC0yNjEwLDggKzI2MTQs OCBAQCByb3dfaW5zX2NsdXN0X2luZGV4X2VudHJ5KAogCiAJbG9nX2ZyZWVfY2hlY2soKTsKIAot CXJldHVybihyb3dfaW5zX2NsdXN0X2luZGV4X2VudHJ5X2xvdygwLCBCVFJfTU9ESUZZX1RSRUUs IGluZGV4LCBlbnRyeSwKLQkJCQkJICAgICBuX2V4dCwgdGhyKSk7CisJcmV0dXJuKHJvd19pbnNf Y2x1c3RfaW5kZXhfZW50cnlfbG93KAorCQkgICAgICAgMCwgQlRSX01PRElGWV9UUkVFLCBpbmRl eCwgbl91bmlxLCBlbnRyeSwgbl9leHQsIHRocikpOwogfQogCiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBsb2cuY2MnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2Uvcm93L3JvdzBsb2cuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMjA2MTkxMDU2MjgtNWw1ZXBmazYzNHFzYWM5MAorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jv dy9yb3cwbG9nLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNjE5MTM1NTA1 LWZpY3Z1MWdyMHVlbHB2eGQKQEAgLTExODYsNyArMTE4Niw3IEBAIHJvd19sb2dfdGFibGVfYXBw bHlfaW5zZXJ0X2xvdygKIAllbnRyeSA9IHJvd19idWlsZF9pbmRleF9lbnRyeShyb3csIE5VTEws IGluZGV4LCBoZWFwKTsKIAogCWVycm9yID0gcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9sb3co Ci0JCWZsYWdzLCBCVFJfTU9ESUZZX1RSRUUsIGluZGV4LCBlbnRyeSwgMCwgdGhyKTsKKwkJZmxh Z3MsIEJUUl9NT0RJRllfVFJFRSwgaW5kZXgsIGluZGV4LT5uX3VuaXEsIGVudHJ5LCAwLCB0aHIp OwogCiAJc3dpdGNoIChlcnJvcikgewogCWNhc2UgREJfU1VDQ0VTUzoKCk5vIGJ1bmRsZSAocmVh c29uOiB1c2VsZXNzIGZvciBwdXNoIGVtYWlscyku