--f46d04138a6f6c03c2050477cd19
Content-Type: multipart/alternative; boundary=f46d04138a6f6c03be050477cd17
--f46d04138a6f6c03be050477cd17
Content-Type: text/plain; charset=UTF-8
The attached patch file is derived from OpenLDAP Software. All of the
modifications to OpenLDAP Software represented in the following patch(es)
were developed by Leonid Yuriev <leo(a)yuriev.ru>. I have not assigned rights
and/or interest in this work to any party.
The attached modifications to OpenLDAP Software are subject to the
following notice:
Copyright 2014 Leonid Yuriev.
Copyright 2014 Peter-Service LLC, Moscow, Russia.
Redistribution and use in source and binary forms, with or without
modification, are permitted only as authorized by the OpenLDAP Public
License.
--f46d04138a6f6c03be050477cd17
Content-Type: text/html; charset=UTF-8
<div dir="ltr"><span style="color:rgb(0,0,0);font-family:Arial,Verdana,Helvetica;font-size:medium">The
attached patch file is derived from OpenLDAP Software. All of the
modifications to OpenLDAP Software represented in the following
patch(es) were developed by Leonid Yuriev <<a href="mailto:leo@yuriev.ru">leo(a)yuriev.ru</a>>. I have
not assigned rights and/or interest in this work to any party.<br>
<br>
</span><span style="color:rgb(0,0,0);font-family:Arial,Verdana,Helvetica;font-size:medium">The attached modifications to OpenLDAP Software are subject to the following notice:</span>
<p style="color:rgb(0,0,0);font-family:Arial,Verdana,Helvetica;font-size:medium">Copyright 2014 Leonid Yuriev.<br>Copyright 2014 Peter-Service LLC, Moscow, Russia.<br>
Redistribution and use in source and binary forms, with or without
modification, are permitted only as authorized by the OpenLDAP Public
License.</p><p style="color:rgb(0,0,0);font-family:Arial,Verdana,Helvetica;font-size:medium"><br></p></div>
--f46d04138a6f6c03be050477cd17--
--f46d04138a6f6c03c2050477cd19
Content-Type: text/x-patch; charset=US-ASCII;
name="0001-TRIVIA-lmdb-clean-testdb-dir-while-make-test.patch"
Content-Disposition: attachment;
filename="0001-TRIVIA-lmdb-clean-testdb-dir-while-make-test.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0snhdsc0
RnJvbSBjY2M3ZGE2OTBmZmJmZjQ0MDY0MzI5NWI5NDVmZGY3ODg2ZjQ4Yzk3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWXVyaWV2IDxsZW9AeXVyaWV2LnJ1PgpEYXRlOiBGcmks
IDUgU2VwIDIwMTQgMDA6MTk6MTYgKzA0MDAKU3ViamVjdDogW1BBVENIIDAxLzExXSAgVFJJVklB
IC0gbG1kYjogY2xlYW4gdGVzdGRiLWRpciB3aGlsZSAibWFrZSB0ZXN0Ii4KCi0tLQogbGlicmFy
aWVzL2xpYmxtZGIvTWFrZWZpbGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o
KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9saWJyYXJpZXMvbGlibG1kYi9NYWtlZmls
ZSBiL2xpYnJhcmllcy9saWJsbWRiL01ha2VmaWxlCmluZGV4IDI1YzEwOTUuLjAyZmE1NWUgMTAw
NjQ0Ci0tLSBhL2xpYnJhcmllcy9saWJsbWRiL01ha2VmaWxlCisrKyBiL2xpYnJhcmllcy9saWJs
bWRiL01ha2VmaWxlCkBAIC00NCw3ICs0NCw3IEBAIGNsZWFuOgogCXJtIC1yZiAkKFBST0dTKSAq
Llthb10gKi5zbyAqfiB0ZXN0ZGIKIAogdGVzdDoJYWxsCi0JbWtkaXIgdGVzdGRiCisJcm0gLXJm
IHRlc3RkYiAmJiBta2RpciB0ZXN0ZGIKIAkuL210ZXN0ICYmIC4vbWRiX3N0YXQgdGVzdGRiCiAK
IGxpYmxtZGIuYToJbWRiLm8gbWlkbC5vCi0tIAoyLjEuMAoK
--f46d04138a6f6c03c2050477cd19
Content-Type: text/x-patch; charset=US-ASCII;
name="0002-EXTENSION-lmdb-more-usefull-info-from-mdb_stat-tool.patch"
Content-Disposition: attachment;
filename="0002-EXTENSION-lmdb-more-usefull-info-from-mdb_stat-tool.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0snhdsu1
RnJvbSBmYzQwOWQ4OWUwZDlkZGUyMGY2MTJlMzRjMmE0NjNjOGE4MWVhMDAwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWXVyaWV2IDxsZW9AeXVyaWV2LnJ1PgpEYXRlOiBTYXQs
IDIwIFNlcCAyMDE0IDA2OjUxOjA0ICswNDAwClN1YmplY3Q6IFtQQVRDSCAwMi8xMV0gIEVYVEVO
U0lPTiAtIGxtZGI6IG1vcmUgdXNlZnVsbCBpbmZvIGZyb20gbWRiX3N0YXQKIHRvb2wuCgotLS0K
IGxpYnJhcmllcy9saWJsbWRiL2xtZGIuaCAgICAgfCAgMSArCiBsaWJyYXJpZXMvbGlibG1kYi9t
ZGIuYyAgICAgIHwgMTQgKysrKysrKysrKysrKysKIGxpYnJhcmllcy9saWJsbWRiL21kYl9zdGF0
LmMgfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAzIGZpbGVzIGNoYW5n
ZWQsIDQ4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9saWJyYXJp
ZXMvbGlibG1kYi9sbWRiLmggYi9saWJyYXJpZXMvbGlibG1kYi9sbWRiLmgKaW5kZXggYmRiYjBi
OS4uZGEwMmM4MCAxMDA2NDQKLS0tIGEvbGlicmFyaWVzL2xpYmxtZGIvbG1kYi5oCisrKyBiL2xp
YnJhcmllcy9saWJsbWRiL2xtZGIuaApAQCAtNDQ0LDYgKzQ0NCw3IEBAIHR5cGVkZWYgc3RydWN0
IE1EQl9lbnZpbmZvIHsKIAlzaXplX3QJbWVfbWFwc2l6ZTsJCQkJLyoqPCBTaXplIG9mIHRoZSBk
YXRhIG1lbW9yeSBtYXAgKi8KIAlzaXplX3QJbWVfbGFzdF9wZ25vOwkJCS8qKjwgSUQgb2YgdGhl
IGxhc3QgdXNlZCBwYWdlICovCiAJc2l6ZV90CW1lX2xhc3RfdHhuaWQ7CQkJLyoqPCBJRCBvZiB0
aGUgbGFzdCBjb21taXR0ZWQgdHJhbnNhY3Rpb24gKi8KKwlzaXplX3QJbWVfdGFpbF90eG5pZDsJ
CQkvKio8IElEIG9mIHRoZSBsYXN0IHJlYWRlciB0cmFuc2FjdGlvbiAqLwogCXVuc2lnbmVkIGlu
dCBtZV9tYXhyZWFkZXJzOwkJLyoqPCBtYXggcmVhZGVyIHNsb3RzIGluIHRoZSBlbnZpcm9ubWVu
dCAqLwogCXVuc2lnbmVkIGludCBtZV9udW1yZWFkZXJzOwkJLyoqPCBtYXggcmVhZGVyIHNsb3Rz
IHVzZWQgaW4gdGhlIGVudmlyb25tZW50ICovCiB9IE1EQl9lbnZpbmZvOwpkaWZmIC0tZ2l0IGEv
bGlicmFyaWVzL2xpYmxtZGIvbWRiLmMgYi9saWJyYXJpZXMvbGlibG1kYi9tZGIuYwppbmRleCA2
Y2MzNDMzLi5jMzBiYzNmIDEwMDY0NAotLS0gYS9saWJyYXJpZXMvbGlibG1kYi9tZGIuYworKysg
Yi9saWJyYXJpZXMvbGlibG1kYi9tZGIuYwpAQCAtODkyMyw2ICs4OTIzLDIwIEBAIG1kYl9lbnZf
aW5mbyhNREJfZW52ICplbnYsIE1EQl9lbnZpbmZvICphcmcpCiAKIAlhcmctPm1lX2xhc3RfcGdu
byA9IGVudi0+bWVfbWV0YXNbdG9nZ2xlXS0+bW1fbGFzdF9wZzsKIAlhcmctPm1lX2xhc3RfdHhu
aWQgPSBlbnYtPm1lX21ldGFzW3RvZ2dsZV0tPm1tX3R4bmlkOworCWFyZy0+bWVfdGFpbF90eG5p
ZCA9IDA7CisKKwlpZiAoZW52LT5tZV90eG5zKSB7CisJCU1EQl9yZWFkZXIgKnIgPSBlbnYtPm1l
X3R4bnMtPm10aV9yZWFkZXJzOworCQlpbnQgaTsKKwkJYXJnLT5tZV90YWlsX3R4bmlkID0gYXJn
LT5tZV9sYXN0X3R4bmlkOworCQlmb3IgKGkgPSBhcmctPm1lX251bXJlYWRlcnM7IC0taSA+PSAw
OyApIHsKKwkJCWludCBwaWQgPSByW2ldLm1yX3BpZDsKKwkJCXR4bmlkX3QgcG9zID0gcltpXS5t
cl90eG5pZDsKKwkJCWlmIChwaWQgJiYgYXJnLT5tZV90YWlsX3R4bmlkID4gcG9zKQorCQkJCWFy
Zy0+bWVfdGFpbF90eG5pZCA9IHBvczsKKwkJfQorCX0KKwogCXJldHVybiBNREJfU1VDQ0VTUzsK
IH0KIApkaWZmIC0tZ2l0IGEvbGlicmFyaWVzL2xpYmxtZGIvbWRiX3N0YXQuYyBiL2xpYnJhcmll
cy9saWJsbWRiL21kYl9zdGF0LmMKaW5kZXggMWU5MjI5Mi4uZjI1OGM0OSAxMDA2NDQKLS0tIGEv
bGlicmFyaWVzL2xpYmxtZGIvbWRiX3N0YXQuYworKysgYi9saWJyYXJpZXMvbGlibG1kYi9tZGJf
c3RhdC5jCkBAIC0xMzAsNiArMTMwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb
XSkKIAkJcHJpbnRmKCIgIE1heCBwYWdlczogJSJaInVcbiIsIG1laS5tZV9tYXBzaXplIC8gbXN0
Lm1zX3BzaXplKTsKIAkJcHJpbnRmKCIgIE51bWJlciBvZiBwYWdlcyB1c2VkOiAlIloidVxuIiwg
bWVpLm1lX2xhc3RfcGdubysxKTsKIAkJcHJpbnRmKCIgIExhc3QgdHJhbnNhY3Rpb24gSUQ6ICUi
WiJ1XG4iLCBtZWkubWVfbGFzdF90eG5pZCk7CisJCXByaW50ZigiICBUYWlsIHRyYW5zYWN0aW9u
IElEOiAlIloidVxuIiwgbWVpLm1lX3RhaWxfdHhuaWQpOwogCQlwcmludGYoIiAgTWF4IHJlYWRl
cnM6ICV1XG4iLCBtZWkubWVfbWF4cmVhZGVycyk7CiAJCXByaW50ZigiICBOdW1iZXIgb2YgcmVh
ZGVycyB1c2VkOiAldVxuIiwgbWVpLm1lX251bXJlYWRlcnMpOwogCX0KQEAgLTE1Nyw2ICsxNTgs
NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlNREJfY3Vyc29yICpjdXJz
b3I7CiAJCU1EQl92YWwga2V5LCBkYXRhOwogCQlzaXplX3QgcGFnZXMgPSAwLCAqaXB0cjsKKwkJ
c2l6ZV90IHJlY2xhaW1hYmxlID0gMDsKIAogCQlwcmludGYoIkZyZWVsaXN0IFN0YXR1c1xuIik7
CiAJCWRiaSA9IDA7CkBAIC0xNzQsNiArMTc2LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
KmFyZ3ZbXSkKIAkJd2hpbGUgKChyYyA9IG1kYl9jdXJzb3JfZ2V0KGN1cnNvciwgJmtleSwgJmRh
dGEsIE1EQl9ORVhUKSkgPT0gMCkgewogCQkJaXB0ciA9IGRhdGEubXZfZGF0YTsKIAkJCXBhZ2Vz
ICs9ICppcHRyOworCQkJaWYgKGVudmluZm8gJiYgbWVpLm1lX3RhaWxfdHhuaWQgPiAqKHNpemVf
dCAqKWtleS5tdl9kYXRhKQorCQkJCXJlY2xhaW1hYmxlICs9ICppcHRyOwogCQkJaWYgKGZyZWlu
Zm8gPiAxKSB7CiAJCQkJY2hhciAqYmFkID0gIiI7CiAJCQkJc2l6ZV90IHBnLCBwcmV2OwpAQCAt
MjAwLDcgKzIwNCwzNSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJfQog
CQl9CiAJCW1kYl9jdXJzb3JfY2xvc2UoY3Vyc29yKTsKLQkJcHJpbnRmKCIgIEZyZWUgcGFnZXM6
ICUiWiJ1XG4iLCBwYWdlcyk7CisJCWlmIChlbnZpbmZvKSB7CisJCQlzaXplX3QgdmFsdWUgPSBt
ZWkubWVfbWFwc2l6ZSAvIG1zdC5tc19wc2l6ZTsKKwkJCWRvdWJsZSBwZXJjZW50ID0gdmFsdWUg
LyAxMDAuMDsKKwkJCXByaW50ZigiUGFnZSBBbGxvY2F0aW9uIEluZm9cbiIpOworCQkJcHJpbnRm
KCIgIE1heCBwYWdlczogJTkiWiJ1IDEwMCUlXG4iLCB2YWx1ZSk7CisKKwkJCXZhbHVlID0gbWVp
Lm1lX2xhc3RfcGdubysxOworCQkJcHJpbnRmKCIgIE51bWJlciBvZiBwYWdlcyB1c2VkOiAlIloi
dSAlLjFmJSVcbiIsIHZhbHVlLCB2YWx1ZSAvIHBlcmNlbnQpOworCisJCQl2YWx1ZSA9IG1laS5t
ZV9tYXBzaXplIC8gbXN0Lm1zX3BzaXplIC0gKG1laS5tZV9sYXN0X3Bnbm8rMSk7CisJCQlwcmlu
dGYoIiAgUmVtYWluZWQ6ICUiWiJ1ICUuMWYlJVxuIiwgdmFsdWUsIHZhbHVlIC8gcGVyY2VudCk7
CisKKwkJCXZhbHVlID0gbWVpLm1lX2xhc3RfcGdubysxIC0gcGFnZXM7CisJCQlwcmludGYoIiAg
VXNlZCBub3c6ICUiWiJ1ICUuMWYlJVxuIiwgdmFsdWUsIHZhbHVlIC8gcGVyY2VudCk7CisKKwkJ
CXZhbHVlID0gcGFnZXM7CisJCQlwcmludGYoIiAgRnJlZSBwYWdlczogJSJaInUgJS4xZiUlXG4i
LCB2YWx1ZSwgdmFsdWUgLyBwZXJjZW50KTsKKworCQkJdmFsdWUgPSBwYWdlcyAtIHJlY2xhaW1h
YmxlOworCQkJcHJpbnRmKCIgIFJlYWRpbmc6ICUiWiJ1ICUuMWYlJVxuIiwgdmFsdWUsIHZhbHVl
IC8gcGVyY2VudCk7CisKKwkJCXZhbHVlID0gcmVjbGFpbWFibGU7CisJCQlwcmludGYoIiAgUmVj
bGFpbWFibGU6ICUiWiJ1ICUuMWYlJVxuIiwgdmFsdWUsIHZhbHVlIC8gcGVyY2VudCk7CisKKwkJ
CXZhbHVlID0gbWVpLm1lX21hcHNpemUgLyBtc3QubXNfcHNpemUgLSAobWVpLm1lX2xhc3RfcGdu
bysxKSArIHJlY2xhaW1hYmxlOworCQkJcHJpbnRmKCIgIEF2YWlsYWJsZTogJSJaInUgJS4xZiUl
XG4iLCB2YWx1ZSwgdmFsdWUgLyBwZXJjZW50KTsKKwkJfSBlbHNlCisJCQlwcmludGYoIiAgRnJl
ZSBwYWdlczogJSJaInVcbiIsIHBhZ2VzKTsKKwogCX0KIAogCXJjID0gbWRiX29wZW4odHhuLCBz
dWJuYW1lLCAwLCAmZGJpKTsKLS0gCjIuMS4wCgo=
--f46d04138a6f6c03c2050477cd19
Content-Type: text/x-patch; charset=US-ASCII;
name="0003-CHANGE-lmdb-backend-checkpoint-interval-in-seconds-i.patch"
Content-Disposition: attachment;
filename="0003-CHANGE-lmdb-backend-checkpoint-interval-in-seconds-i.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0snhdt42
RnJvbSBmYjgyYTBiNjg4ZjRjMzEzMTNkMDc5MDQxNWZlZGE4YWFhMTg2NTFjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWXVyaWV2IDxsZW9AeXVyaWV2LnJ1PgpEYXRlOiBUaHUs
IDQgU2VwIDIwMTQgMTU6MTg6MTYgKzA0MDAKU3ViamVjdDogW1BBVENIIDAzLzExXSAgQ0hBTkdF
IC0gbG1kYi1iYWNrZW5kOiBjaGVja3BvaW50LWludGVydmFsIGluIHNlY29uZHMKIGluc3RlYWQg
b2YgbWludXRlcy4KCi0tLQogZG9jL21hbi9tYW41L3NsYXBkLW1kYi41ICAgICAgICAgIHwgIDgg
KysrKy0tLS0KIHNlcnZlcnMvc2xhcGQvYmFjay1tZGIvYmFjay1tZGIuaCB8ICAyICstCiBzZXJ2
ZXJzL3NsYXBkL2JhY2stbWRiL2NvbmZpZy5jICAgfCAxNyArKysrKysrKystLS0tLS0tLQogMyBm
aWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9kb2MvbWFuL21hbjUvc2xhcGQtbWRiLjUgYi9kb2MvbWFuL21hbjUvc2xhcGQtbWRiLjUK
aW5kZXggNThiYTY2OC4uNjRhNmIzNiAxMDA2NDQKLS0tIGEvZG9jL21hbi9tYW41L3NsYXBkLW1k
Yi41CisrKyBiL2RvYy9tYW4vbWFuNS9zbGFwZC1tZGIuNQpAQCAtMjksMTQgKzI5LDE0IEBAIE90
aGVyIGRhdGFiYXNlIG9wdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUKIC5CUiBzbGFwZC5jb25m
ICg1KQogbWFudWFsIHBhZ2UuCiAuVFAKLS5CSSBjaGVja3BvaW50IFwgPGtieXRlPlwgPG1pbj4K
Ky5CSSBjaGVja3BvaW50IFwgPGtieXRlPlwgPHNlYz4KIFNwZWNpZnkgdGhlIGZyZXF1ZW5jeSBm
b3IgZmx1c2hpbmcgdGhlIGRhdGFiYXNlIGRpc2sgYnVmZmVycy4KIFRoaXMgc2V0dGluZyBpcyBv
bmx5IG5lZWRlZCBpZiB0aGUgXGZCZGJub3N5bmNcZlAgb3B0aW9uIGlzIHVzZWQuCiBUaGUgY2hl
Y2twb2ludCB3aWxsIG9jY3VyIGlmIGVpdGhlciBcZkk8a2J5dGU+XGZQIGRhdGEgaGFzIGJlZW4g
d3JpdHRlbiBvcgotXGZJPG1pbj5cZlAgbWludXRlcyBoYXZlIHBhc3NlZCBzaW5jZSB0aGUgbGFz
dCBjaGVja3BvaW50LgorXGZJPHNlYz5cZlAgc2Vjb25kcyBoYXZlIHBhc3NlZCBzaW5jZSB0aGUg
bGFzdCBjaGVja3BvaW50LgogQm90aCBhcmd1bWVudHMgZGVmYXVsdCB0byB6ZXJvLCBpbiB3aGlj
aCBjYXNlIHRoZXkgYXJlIGlnbm9yZWQuIFdoZW4KLXRoZSBcZkk8bWluPlxmUCBhcmd1bWVudCBp
cyBub24temVybywgYW4gaW50ZXJuYWwgdGFzayB3aWxsIHJ1biBldmVyeSAKLVxmSTxtaW4+XGZQ
IG1pbnV0ZXMgdG8gcGVyZm9ybSB0aGUgY2hlY2twb2ludC4KK3RoZSBcZkk8c2VjPlxmUCBhcmd1
bWVudCBpcyBub24temVybywgYW4gaW50ZXJuYWwgdGFzayB3aWxsIHJ1biBldmVyeQorXGZJPHNl
Yz5cZlAgc2Vjb25kcyB0byBwZXJmb3JtIHRoZSBjaGVja3BvaW50LgogTm90ZTogY3VycmVudGx5
IHRoZSBcZkk8a2J5dGU+XGZQIHNldHRpbmcgaXMgdW5pbXBsZW1lbnRlZC4KIC5UUAogLkIgZGJu
b3N5bmMKZGlmZiAtLWdpdCBhL3NlcnZlcnMvc2xhcGQvYmFjay1tZGIvYmFjay1tZGIuaCBiL3Nl
cnZlcnMvc2xhcGQvYmFjay1tZGIvYmFjay1tZGIuaAppbmRleCA5ZDVkNGIxLi5jM2FlNzJkIDEw
MDY0NAotLS0gYS9zZXJ2ZXJzL3NsYXBkL2JhY2stbWRiL2JhY2stbWRiLmgKKysrIGIvc2VydmVy
cy9zbGFwZC9iYWNrLW1kYi9iYWNrLW1kYi5oCkBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBtZGJf
aW5mbyB7CiAJaW50CQkJbWlfcmVhZGVyczsKIAogCWludAkJCW1pX3R4bl9jcDsKLQl1aW50MzJf
dAltaV90eG5fY3BfbWluOworCXVpbnQzMl90CW1pX3R4bl9jcF9zZWM7CiAJdWludDMyX3QJbWlf
dHhuX2NwX2tieXRlOwogCXN0cnVjdCByZV9zCQkqbWlfdHhuX2NwX3Rhc2s7CiAJc3RydWN0IHJl
X3MJCSptaV9pbmRleF90YXNrOwpkaWZmIC0tZ2l0IGEvc2VydmVycy9zbGFwZC9iYWNrLW1kYi9j
b25maWcuYyBiL3NlcnZlcnMvc2xhcGQvYmFjay1tZGIvY29uZmlnLmMKaW5kZXggNWI0MDJjNS4u
OTc5ZDRhZCAxMDA2NDQKLS0tIGEvc2VydmVycy9zbGFwZC9iYWNrLW1kYi9jb25maWcuYworKysg
Yi9zZXJ2ZXJzL3NsYXBkL2JhY2stbWRiL2NvbmZpZy5jCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRp
YyBDb25maWdUYWJsZSBtZGJjZmdbXSA9IHsKIAkJCSJTWU5UQVggT01zRGlyZWN0b3J5U3RyaW5n
IFNJTkdMRS1WQUxVRSApIiwgTlVMTCwgTlVMTCB9LAogCXsgImNoZWNrcG9pbnQiLCAia2J5dGU+
IDxtaW4iLCAzLCAzLCAwLCBBUkdfTUFHSUN8TURCX0NIS1BULAogCQltZGJfY2ZfZ2VuLCAiKCBP
TGNmZ0RiQXQ6MS4yIE5BTUUgJ29sY0RiQ2hlY2twb2ludCcgIgotCQkJIkRFU0MgJ0RhdGFiYXNl
IGNoZWNrcG9pbnQgaW50ZXJ2YWwgaW4ga2J5dGVzIGFuZCBtaW51dGVzJyAiCisJCQkiREVTQyAn
RGF0YWJhc2UgY2hlY2twb2ludCBpbnRlcnZhbCBpbiBrYnl0ZXMgYW5kIHNlY29uZHMnICIKIAkJ
CSJTWU5UQVggT01zRGlyZWN0b3J5U3RyaW5nIFNJTkdMRS1WQUxVRSApIixOVUxMLCBOVUxMIH0s
CiAJeyAiZGJub3N5bmMiLCBOVUxMLCAxLCAyLCAwLCBBUkdfT05fT0ZGfEFSR19NQUdJQ3xNREJf
REJOT1NZTkMsCiAJCW1kYl9jZl9nZW4sICIoIE9MY2ZnRGJBdDoxLjQgTkFNRSAnb2xjRGJOb1N5
bmMnICIKQEAgLTExNiw3ICsxMTYsOCBAQCBtZGJfY2hlY2twb2ludCggdm9pZCAqY3R4LCB2b2lk
ICphcmcgKQogCXN0cnVjdCByZV9zICpydGFzayA9IGFyZzsKIAlzdHJ1Y3QgbWRiX2luZm8gKm1k
YiA9IHJ0YXNrLT5hcmc7CiAKLQltZGJfZW52X3N5bmMoIG1kYi0+bWlfZGJlbnYsIDEgKTsKKwlp
ZiAoIG1kYi0+bWlfZmxhZ3MgJiBNREJfSVNfT1BFTiApCisJCW1kYl9lbnZfc3luYyggbWRiLT5t
aV9kYmVudiwgMSApOwogCWxkYXBfcHZ0X3RocmVhZF9tdXRleF9sb2NrKCAmc2xhcGRfcnEucnFf
bXV0ZXggKTsKIAlsZGFwX3B2dF9ydW5xdWV1ZV9zdG9wdGFzayggJnNsYXBkX3JxLCBydGFzayAp
OwogCWxkYXBfcHZ0X3RocmVhZF9tdXRleF91bmxvY2soICZzbGFwZF9ycS5ycV9tdXRleCApOwpA
QCAtMjg4LDcgKzI4OSw3IEBAIG1kYl9jZl9nZW4oIENvbmZpZ0FyZ3MgKmMgKQogCQkJCWNoYXIg
YnVmWzY0XTsKIAkJCQlzdHJ1Y3QgYmVydmFsIGJ2OwogCQkJCWJ2LmJ2X2xlbiA9IHNucHJpbnRm
KCBidWYsIHNpemVvZihidWYpLCAiJWxkICVsZCIsCi0JCQkJCShsb25nKSBtZGItPm1pX3R4bl9j
cF9rYnl0ZSwgKGxvbmcpIG1kYi0+bWlfdHhuX2NwX21pbiApOworCQkJCQkobG9uZykgbWRiLT5t
aV90eG5fY3Bfa2J5dGUsIChsb25nKSBtZGItPm1pX3R4bl9jcF9zZWMgKTsKIAkJCQlpZiAoIGJ2
LmJ2X2xlbiA+IDAgJiYgYnYuYnZfbGVuIDwgc2l6ZW9mKGJ1ZikgKSB7CiAJCQkJCWJ2LmJ2X3Zh
bCA9IGJ1ZjsKIAkJCQkJdmFsdWVfYWRkX29uZSggJmMtPnJ2YWx1ZV92YWxzLCAmYnYgKTsKQEAg
LTUyMiwxOCArNTIzLDE4IEBAIG1kYl9jZl9nZW4oIENvbmZpZ0FyZ3MgKmMgKQogCQltZGItPm1p
X3R4bl9jcF9rYnl0ZSA9IGw7CiAJCWlmICggbHV0aWxfYXRvbHgoICZsLCBjLT5hcmd2WzJdLCAw
ICkgIT0gMCApIHsKIAkJCWZwcmludGYoIHN0ZGVyciwgIiVzOiAiCi0JCQkJImludmFsaWQgbWlu
dXRlcyBcIiVzXCIgaW4gXCJjaGVja3BvaW50XCIuXG4iLAorCQkJCSJpbnZhbGlkIHNlY29uZHMg
XCIlc1wiIGluIFwiY2hlY2twb2ludFwiLlxuIiwKIAkJCQljLT5sb2csIGMtPmFyZ3ZbMl0gKTsK
IAkJCXJldHVybiAxOwogCQl9Ci0JCW1kYi0+bWlfdHhuX2NwX21pbiA9IGw7CisJCW1kYi0+bWlf
dHhuX2NwX3NlYyA9IGw7CiAJCS8qIElmIHdlJ3JlIGluIHNlcnZlciBtb2RlIGFuZCB0aW1lLWJh
c2VkIGNoZWNrcG9pbnRpbmcgaXMgZW5hYmxlZCwKIAkJICogc3VibWl0IGEgdGFzayB0byBwZXJm
b3JtIHBlcmlvZGljIGNoZWNrcG9pbnRzLgogCQkgKi8KLQkJaWYgKChzbGFwTW9kZSAmIFNMQVBf
U0VSVkVSX01PREUpICYmIG1kYi0+bWlfdHhuX2NwX21pbiApIHsKKwkJaWYgKChzbGFwTW9kZSAm
IFNMQVBfU0VSVkVSX01PREUpICYmIG1kYi0+bWlfdHhuX2NwX3NlYyApIHsKIAkJCXN0cnVjdCBy
ZV9zICpyZSA9IG1kYi0+bWlfdHhuX2NwX3Rhc2s7CiAJCQlpZiAoIHJlICkgewotCQkJCXJlLT5p
bnRlcnZhbC50dl9zZWMgPSBtZGItPm1pX3R4bl9jcF9taW4gKiA2MDsKKwkJCQlyZS0+aW50ZXJ2
YWwudHZfc2VjID0gbWRiLT5taV90eG5fY3Bfc2VjOwogCQkJfSBlbHNlIHsKIAkJCQlpZiAoIGMt
PmJlLT5iZV9zdWZmaXggPT0gTlVMTCB8fCBCRVJfQlZJU05VTEwoICZjLT5iZS0+YmVfc3VmZml4
WzBdICkgKSB7CiAJCQkJCWZwcmludGYoIHN0ZGVyciwgIiVzOiAiCkBAIC01NDMsNyArNTQ0LDcg
QEAgbWRiX2NmX2dlbiggQ29uZmlnQXJncyAqYyApCiAJCQkJfQogCQkJCWxkYXBfcHZ0X3RocmVh
ZF9tdXRleF9sb2NrKCAmc2xhcGRfcnEucnFfbXV0ZXggKTsKIAkJCQltZGItPm1pX3R4bl9jcF90
YXNrID0gbGRhcF9wdnRfcnVucXVldWVfaW5zZXJ0KCAmc2xhcGRfcnEsCi0JCQkJCW1kYi0+bWlf
dHhuX2NwX21pbiAqIDYwLCBtZGJfY2hlY2twb2ludCwgbWRiLAorCQkJCQltZGItPm1pX3R4bl9j
cF9zZWMsIG1kYl9jaGVja3BvaW50LCBtZGIsCiAJCQkJCUxEQVBfWFNUUklORyhtZGJfY2hlY2tw
b2ludCksIGMtPmJlLT5iZV9zdWZmaXhbMF0uYnZfdmFsICk7CiAJCQkJbGRhcF9wdnRfdGhyZWFk
X211dGV4X3VubG9jayggJnNsYXBkX3JxLnJxX211dGV4ICk7CiAJCQl9Ci0tIAoyLjEuMAoK
--f46d04138a6f6c03c2050477cd19
Content-Type: text/x-patch; charset=US-ASCII;
name="0004-FEATURE-lmdb-implementation-of-checkpoint-kbytes.patch"
Content-Disposition: attachment;
filename="0004-FEATURE-lmdb-implementation-of-checkpoint-kbytes.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0snhdtc3
RnJvbSAxNDdmNDFhODExMGYyODQ1NmJjMzIxMjNiZGU4NmQ0NzE4M2Y5YzBhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWXVyaWV2IDxsZW9AeXVyaWV2LnJ1PgpEYXRlOiBUaHUs
IDQgU2VwIDIwMTQgMTY6MDE6MTUgKzA0MDAKU3ViamVjdDogW1BBVENIIDA0LzExXSAgRkVBVFVS
RSAtIGxtZGI6IGltcGxlbWVudGF0aW9uIG9mICJjaGVja3BvaW50IGtieXRlcyIuCgogRm9yY2Ug
Zmx1c2ggd2hlbiB2b2x1bWUgb2YgdGhlIGNoYW5nZXMgcmVhY2hlZCBhIGNvbmZpZ3VyYWJsZSB0
aHJlc2hvbGQuCi0tLQogbGlicmFyaWVzL2xpYmxtZGIvbG1kYi5oIHwgMTkgKysrKysrKysrKysr
KysrKysrKwogbGlicmFyaWVzL2xpYmxtZGIvbWRiLmMgIHwgNDIgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMo
KyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYnJhcmllcy9saWJsbWRiL2xtZGIu
aCBiL2xpYnJhcmllcy9saWJsbWRiL2xtZGIuaAppbmRleCBkYTAyYzgwLi5jNWYzYTc5IDEwMDY0
NAotLS0gYS9saWJyYXJpZXMvbGlibG1kYi9sbWRiLmgKKysrIGIvbGlicmFyaWVzL2xpYmxtZGIv
bG1kYi5oCkBAIC05MDMsNiArOTAzLDI1IEBAIHR5cGVkZWYgdm9pZCBNREJfYXNzZXJ0X2Z1bmMo
TURCX2VudiAqZW52LCBjb25zdCBjaGFyICptc2cpOwogCSAqLwogaW50ICBtZGJfZW52X3NldF9h
c3NlcnQoTURCX2VudiAqZW52LCBNREJfYXNzZXJ0X2Z1bmMgKmZ1bmMpOwogCisJLyoqIEBicmll
ZiBTZXQgdGhyZXNob2xkIHRvIGZvcmNlIGZsdXNoIHRoZSBkYXRhIGJ1ZmZlcnMgdG8gZGlzaywK
KwkgKiBldmVuIG9mICNNREJfTk9TWU5DLCAjTURCX05PTUVUQVNZTkMgYW5kICNNREJfTUFQQVNZ
TkMgZmxhZ3MKKwkgKiBpbiB0aGUgZW52aXJvbm1lbnQuCisJICoKKwkgKiBEYXRhIGlzIGFsd2F5
cyB3cml0dGVuIHRvIGRpc2sgd2hlbiAjbWRiX3R4bl9jb21taXQoKSBpcyBjYWxsZWQsCisJICog
YnV0IHRoZSBvcGVyYXRpbmcgc3lzdGVtIG1heSBrZWVwIGl0IGJ1ZmZlcmVkLiBMTURCIGFsd2F5
cyBmbHVzaGVzCisJICogdGhlIE9TIGJ1ZmZlcnMgdXBvbiBjb21taXQgYXMgd2VsbCwgdW5sZXNz
IHRoZSBlbnZpcm9ubWVudCB3YXMKKwkgKiBvcGVuZWQgd2l0aCAjTURCX05PU1lOQyBvciBpbiBw
YXJ0ICNNREJfTk9NRVRBU1lOQy4KKwkgKgorCSAqIFRoZSBkZWZhdWx0IGlzIDAsIHRoYW4gbWVh
biBubyBhbnkgdGhyZXNob2xkIGNoZWNrZWQsCisJICogYW5kIG5vIGFkZGl0aW9uYWwgZmx1c2gg
d2lsbCBiZSBtYWRlLgorCSAqCisJICogQHBhcmFtW2luXSBlbnYgQW4gZW52aXJvbm1lbnQgaGFu
ZGxlIHJldHVybmVkIGJ5ICNtZGJfZW52X2NyZWF0ZSgpCisJICogQHBhcmFtW2luXSBieXRlcyBU
aGUgc2l6ZSBpbiBieXRlcyBvZiBzdW1tYXJ5IGNoYW5nZXMKKwkgKiB3aGVuIGEgc3luY2hyb25v
dXMgZmx1c2ggd291bGQgYmUgbWFkZS4KKwkgKiBAcmV0dXJuIEEgbm9uLXplcm8gZXJyb3IgdmFs
dWUgb24gZmFpbHVyZSBhbmQgMCBvbiBzdWNjZXNzLgorCSAqLworaW50ICBtZGJfZW52X3NldF9z
eW5jYnl0ZXMoTURCX2VudiAqZW52LCBzaXplX3QgYnl0ZXMpOworCiAJLyoqIEBicmllZiBDcmVh
dGUgYSB0cmFuc2FjdGlvbiBmb3IgdXNlIHdpdGggdGhlIGVudmlyb25tZW50LgogCSAqCiAJICog
VGhlIHRyYW5zYWN0aW9uIGhhbmRsZSBtYXkgYmUgZGlzY2FyZGVkIHVzaW5nICNtZGJfdHhuX2Fi
b3J0KCkgb3IgI21kYl90eG5fY29tbWl0KCkuCmRpZmYgLS1naXQgYS9saWJyYXJpZXMvbGlibG1k
Yi9tZGIuYyBiL2xpYnJhcmllcy9saWJsbWRiL21kYi5jCmluZGV4IGMzMGJjM2YuLmI4YmZkMmUg
MTAwNjQ0Ci0tLSBhL2xpYnJhcmllcy9saWJsbWRiL21kYi5jCisrKyBiL2xpYnJhcmllcy9saWJs
bWRiL21kYi5jCkBAIC0xMTQ1LDYgKzExNDUsOCBAQCBzdHJ1Y3QgTURCX2VudiB7CiAjZW5kaWYK
IAl2b2lkCQkqbWVfdXNlcmN0eDsJIC8qKjwgVXNlci1zZXR0YWJsZSBjb250ZXh0ICovCiAJTURC
X2Fzc2VydF9mdW5jICptZV9hc3NlcnRfZnVuYzsgLyoqPCBDYWxsYmFjayBmb3IgYXNzZXJ0aW9u
IGZhaWx1cmVzICovCisJdWludDY0X3QJbWVfc3luY19wZW5kaW5nOwkvKio8IFRvdGFsIGRpcnR5
L2NvbW1pdGVkIGJ5dGVzIHNpbmNlIHRoZSBsYXN0IG1kYl9lbnZfc3luYygpICovCisJdWludDY0
X3QJbWVfc3luY190aHJlc2hvbGQ7CS8qKjwgVHJlc2hvbGQgb2YgYWJvdmUgdG8gZm9yY2Ugc3lu
Y2hyb25vdXMgZmx1c2ggKi8KIH07CiAKIAkvKiogTmVzdGVkIHRyYW5zYWN0aW9uICovCkBAIC0x
MTkyLDcgKzExOTQsNyBAQCBzdGF0aWMgaW50CW1kYl9wYWdlX3NwbGl0KE1EQl9jdXJzb3IgKm1j
LCBNREJfdmFsICpuZXdrZXksIE1EQl92YWwgKm5ld2RhdGEsCiAKIHN0YXRpYyBpbnQgIG1kYl9l
bnZfcmVhZF9oZWFkZXIoTURCX2VudiAqZW52LCBNREJfbWV0YSAqbWV0YSk7CiBzdGF0aWMgaW50
ICBtZGJfZW52X3BpY2tfbWV0YShjb25zdCBNREJfZW52ICplbnYpOwotc3RhdGljIGludCAgbWRi
X2Vudl93cml0ZV9tZXRhKE1EQl90eG4gKnR4bik7CitzdGF0aWMgaW50ICBtZGJfZW52X3dyaXRl
X21ldGEoTURCX3R4biAqdHhuLCBpbnQgZm9yY2UpOwogI2lmICEoZGVmaW5lZChfV0lOMzIpIHx8
IGRlZmluZWQoTURCX1VTRV9QT1NJWF9TRU0pKSAvKiBEcm9wIHVudXNlZCBleGNsIGFyZyAqLwog
IyBkZWZpbmUgbWRiX2Vudl9jbG9zZTAoZW52LCBleGNsKSBtZGJfZW52X2Nsb3NlMShlbnYpCiAj
ZW5kaWYKQEAgLTIyOTgsMTMgKzIzMDAsMTYgQEAgZmFpbDoKIAlyZXR1cm4gcmM7CiB9CiAKLWlu
dAotbWRiX2Vudl9zeW5jKE1EQl9lbnYgKmVudiwgaW50IGZvcmNlKQorc3RhdGljIGludAorbWRi
X2Vudl9zeW5jMihNREJfZW52ICplbnYsIGludCAqZm9yY2UpCiB7CiAJaW50IHJjID0gMDsKLQlp
ZiAoZm9yY2UgfHwgIUZfSVNTRVQoZW52LT5tZV9mbGFncywgTURCX05PU1lOQykpIHsKKwlpZiAo
ZW52LT5tZV9zeW5jX3RocmVzaG9sZCAmJiBlbnYtPm1lX3N5bmNfcGVuZGluZyA+PSBlbnYtPm1l
X3N5bmNfdGhyZXNob2xkKQorCQkqZm9yY2UgPSAxOworCWlmICgqZm9yY2UgfHwgIUZfSVNTRVQo
ZW52LT5tZV9mbGFncywgTURCX05PU1lOQykpIHsKKwkJZW52LT5tZV9zeW5jX3BlbmRpbmcgPSAw
OwogCQlpZiAoZW52LT5tZV9mbGFncyAmIE1EQl9XUklURU1BUCkgewotCQkJaW50IGZsYWdzID0g
KChlbnYtPm1lX2ZsYWdzICYgTURCX01BUEFTWU5DKSAmJiAhZm9yY2UpCisJCQlpbnQgZmxhZ3Mg
PSAoKGVudi0+bWVfZmxhZ3MgJiBNREJfTUFQQVNZTkMpICYmICpmb3JjZSA9PSAwKQogCQkJCT8g
TVNfQVNZTkMgOiBNU19TWU5DOwogCQkJaWYgKE1EQl9NU1lOQyhlbnYtPm1lX21hcCwgZW52LT5t
ZV9tYXBzaXplLCBmbGFncykpCiAJCQkJcmMgPSBFcnJDb2RlKCk7CkBAIC0yMzIwLDYgKzIzMjUs
MTIgQEAgbWRiX2Vudl9zeW5jKE1EQl9lbnYgKmVudiwgaW50IGZvcmNlKQogCXJldHVybiByYzsK
IH0KIAoraW50CittZGJfZW52X3N5bmMoTURCX2VudiAqZW52LCBpbnQgZm9yY2UpCit7CisJcmV0
dXJuIG1kYl9lbnZfc3luYzIoZW52LCAmZm9yY2UpOworfQorCiAvKiogQmFjayB1cCBwYXJlbnQg
dHhuJ3MgY3Vyc29ycywgdGhlbiBncmFiIHRoZSBvcmlnaW5hbHMgZm9yIHRyYWNraW5nICovCiBz
dGF0aWMgaW50CiBtZGJfY3Vyc29yX3NoYWRvdyhNREJfdHhuICpzcmMsIE1EQl90eG4gKmRzdCkK
QEAgLTMwNjIsNiArMzA3Myw3IEBAIG1kYl9wYWdlX2ZsdXNoKE1EQl90eG4gKnR4biwgaW50IGtl
ZXApCiAJCQkJY29udGludWU7CiAJCQl9CiAJCQlkcC0+bXBfZmxhZ3MgJj0gflBfRElSVFk7CisJ
CQllbnYtPm1lX3N5bmNfcGVuZGluZyArPSBJU19PVkVSRkxPVyhkcCkgPyBwc2l6ZSAqIGRwLT5t
cF9wYWdlcyA6IHBzaXplOwogCQl9CiAJCWdvdG8gZG9uZTsKIAl9CkBAIC0zMDgyLDYgKzMwOTQs
NyBAQCBtZGJfcGFnZV9mbHVzaChNREJfdHhuICp0eG4sIGludCBrZWVwKQogCQkJcG9zID0gcGdu
byAqIHBzaXplOwogCQkJc2l6ZSA9IHBzaXplOwogCQkJaWYgKElTX09WRVJGTE9XKGRwKSkgc2l6
ZSAqPSBkcC0+bXBfcGFnZXM7CisJCQllbnYtPm1lX3N5bmNfcGVuZGluZyArPSBzaXplOwogCQl9
CiAjaWZkZWYgX1dJTjMyCiAJCWVsc2UgYnJlYWs7CkBAIC0zMzY3LDkgKzMzODAsMTAgQEAgbWRi
X3R4bl9jb21taXQoTURCX3R4biAqdHhuKQogCW1kYl9hdWRpdCh0eG4pOwogI2VuZGlmCiAKKwlp
bnQgZm9yY2UgPSAwOwogCWlmICgocmMgPSBtZGJfcGFnZV9mbHVzaCh0eG4sIDApKSB8fAotCQko
cmMgPSBtZGJfZW52X3N5bmMoZW52LCAwKSkgfHwKLQkJKHJjID0gbWRiX2Vudl93cml0ZV9tZXRh
KHR4bikpKQorCQkocmMgPSBtZGJfZW52X3N5bmMyKGVudiwgJmZvcmNlKSkgfHwKKwkJKHJjID0g
bWRiX2Vudl93cml0ZV9tZXRhKHR4biwgZm9yY2UpKSkKIAkJZ290byBmYWlsOwogCiAJLyogRnJl
ZSBQX0xPT1NFIHBhZ2VzIGxlZnQgYmVoaW5kIGluIGRpcnR5X2xpc3QgKi8KQEAgLTMzOTMsNiAr
MzQwNywxMiBAQCBmYWlsOgogCXJldHVybiByYzsKIH0KIAoraW50CittZGJfZW52X3NldF9zeW5j
Ynl0ZXMoTURCX2VudiAqZW52LCBzaXplX3QgYnl0ZXMpIHsKKwllbnYtPm1lX3N5bmNfdGhyZXNo
b2xkID0gYnl0ZXM7CisJcmV0dXJuIGVudi0+bWVfbWFwID8gbWRiX2Vudl9zeW5jKGVudiwgMCkg
OiAwOworfQorCiAvKiogUmVhZCB0aGUgZW52aXJvbm1lbnQgcGFyYW1ldGVycyBvZiBhIERCIGVu
dmlyb25tZW50IGJlZm9yZQogICogbWFwcGluZyBpdCBpbnRvIG1lbW9yeS4KICAqIEBwYXJhbVtp
bl0gZW52IHRoZSBlbnZpcm9ubWVudCBoYW5kbGUKQEAgLTM1MjgsNyArMzU0OCw3IEBAIG1kYl9l
bnZfaW5pdF9tZXRhKE1EQl9lbnYgKmVudiwgTURCX21ldGEgKm1ldGEpCiAgKiBAcmV0dXJuIDAg
b24gc3VjY2Vzcywgbm9uLXplcm8gb24gZmFpbHVyZS4KICAqLwogc3RhdGljIGludAotbWRiX2Vu
dl93cml0ZV9tZXRhKE1EQl90eG4gKnR4bikKK21kYl9lbnZfd3JpdGVfbWV0YShNREJfdHhuICp0
eG4sIGludCBmb3JjZSkKIHsKIAlNREJfZW52ICplbnY7CiAJTURCX21ldGEJbWV0YSwgbWV0YWIs
ICptcDsKQEAgLTM1NjAsOSArMzU4MCw5IEBAIG1kYl9lbnZfd3JpdGVfbWV0YShNREJfdHhuICp0
eG4pCiAJCW1wLT5tbV9kYnNbMV0gPSB0eG4tPm10X2Ric1sxXTsKIAkJbXAtPm1tX2xhc3RfcGcg
PSB0eG4tPm10X25leHRfcGdubyAtIDE7CiAJCW1wLT5tbV90eG5pZCA9IHR4bi0+bXRfdHhuaWQ7
Ci0JCWlmICghKGVudi0+bWVfZmxhZ3MgJiAoTURCX05PTUVUQVNZTkN8TURCX05PU1lOQykpKSB7
CisJCWlmIChmb3JjZSB8fCAhKGVudi0+bWVfZmxhZ3MgJiAoTURCX05PTUVUQVNZTkN8TURCX05P
U1lOQykpKSB7CiAJCQl1bnNpZ25lZCBtZXRhX3NpemUgPSBlbnYtPm1lX3BzaXplOwotCQkJcmMg
PSAoZW52LT5tZV9mbGFncyAmIE1EQl9NQVBBU1lOQykgPyBNU19BU1lOQyA6IE1TX1NZTkM7CisJ
CQlyYyA9ICghZm9yY2UgJiYgKGVudi0+bWVfZmxhZ3MgJiBNREJfTUFQQVNZTkMpKSA/IE1TX0FT
WU5DIDogTVNfU1lOQzsKIAkJCXB0ciA9IGVudi0+bWVfbWFwOwogCQkJaWYgKHRvZ2dsZSkgewog
I2lmbmRlZiBfV0lOMzIJLyogUE9TSVggbXN5bmMoKSByZXF1aXJlcyBwdHIgPSBzdGFydCBvZiBP
UyBwYWdlICovCkBAIC0zNTk2LDcgKzM2MTYsNyBAQCBtZGJfZW52X3dyaXRlX21ldGEoTURCX3R4
biAqdHhuKQogCW9mZiArPSBQQUdFSERSU1o7CiAKIAkvKiBXcml0ZSB0byB0aGUgU1lOQyBmZCAq
LwotCW1mZCA9IGVudi0+bWVfZmxhZ3MgJiAoTURCX05PU1lOQ3xNREJfTk9NRVRBU1lOQykgPwor
CW1mZCA9ICghZm9yY2UgfHwgKGVudi0+bWVfZmxhZ3MgJiAoTURCX05PU1lOQ3xNREJfTk9NRVRB
U1lOQykpKSA/CiAJCWVudi0+bWVfZmQgOiBlbnYtPm1lX21mZDsKICNpZmRlZiBfV0lOMzIKIAl7
Ci0tIAoyLjEuMAoK
--f46d04138a6f6c03c2050477cd19
Content-Type: text/x-patch; charset=US-ASCII;
name="0005-FEATURE-lmdb-backend-support-for-checkpoint-kbytes-c.patch"
Content-Disposition: attachment;
filename="0005-FEATURE-lmdb-backend-support-for-checkpoint-kbytes-c.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0snhdtm4
RnJvbSA5MDg2NzdmOTg5NTg4ZDA2YjlmMDA2MjA1NzZkZWEzYzVjODY3NWQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWXVyaWV2IDxsZW9AeXVyaWV2LnJ1PgpEYXRlOiBUaHUs
IDQgU2VwIDIwMTQgMTY6MTA6MDUgKzA0MDAKU3ViamVjdDogW1BBVENIIDA1LzExXSAgRkVBVFVS
RSAtIGxtZGItYmFja2VuZDogc3VwcG9ydCBmb3IgImNoZWNrcG9pbnQKIGtieXRlcyIgY29uZmln
LW9wdGlvbi4KCi0tLQogZG9jL21hbi9tYW41L3NsYXBkLW1kYi41ICAgICAgICB8IDEgLQogc2Vy
dmVycy9zbGFwZC9iYWNrLW1kYi9jb25maWcuYyB8IDIgKysKIHNlcnZlcnMvc2xhcGQvYmFjay1t
ZGIvaW5pdC5jICAgfCA5ICsrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25z
KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL21hbi9tYW41L3NsYXBkLW1kYi41
IGIvZG9jL21hbi9tYW41L3NsYXBkLW1kYi41CmluZGV4IDY0YTZiMzYuLmY2ZDI0ZGUgMTAwNjQ0
Ci0tLSBhL2RvYy9tYW4vbWFuNS9zbGFwZC1tZGIuNQorKysgYi9kb2MvbWFuL21hbjUvc2xhcGQt
bWRiLjUKQEAgLTM3LDcgKzM3LDYgQEAgVGhlIGNoZWNrcG9pbnQgd2lsbCBvY2N1ciBpZiBlaXRo
ZXIgXGZJPGtieXRlPlxmUCBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4gb3IKIEJvdGggYXJndW1lbnRz
IGRlZmF1bHQgdG8gemVybywgaW4gd2hpY2ggY2FzZSB0aGV5IGFyZSBpZ25vcmVkLiBXaGVuCiB0
aGUgXGZJPHNlYz5cZlAgYXJndW1lbnQgaXMgbm9uLXplcm8sIGFuIGludGVybmFsIHRhc2sgd2ls
bCBydW4gZXZlcnkKIFxmSTxzZWM+XGZQIHNlY29uZHMgdG8gcGVyZm9ybSB0aGUgY2hlY2twb2lu
dC4KLU5vdGU6IGN1cnJlbnRseSB0aGUgXGZJPGtieXRlPlxmUCBzZXR0aW5nIGlzIHVuaW1wbGVt
ZW50ZWQuCiAuVFAKIC5CIGRibm9zeW5jCiBTcGVjaWZ5IHRoYXQgb24tZGlzayBkYXRhYmFzZSBj
b250ZW50cyBzaG91bGQgbm90IGJlIGltbWVkaWF0ZWx5CmRpZmYgLS1naXQgYS9zZXJ2ZXJzL3Ns
YXBkL2JhY2stbWRiL2NvbmZpZy5jIGIvc2VydmVycy9zbGFwZC9iYWNrLW1kYi9jb25maWcuYwpp
bmRleCA5NzlkNGFkLi45Zjg3ZmQ5IDEwMDY0NAotLS0gYS9zZXJ2ZXJzL3NsYXBkL2JhY2stbWRi
L2NvbmZpZy5jCisrKyBiL3NlcnZlcnMvc2xhcGQvYmFjay1tZGIvY29uZmlnLmMKQEAgLTUyMSw2
ICs1MjEsOCBAQCBtZGJfY2ZfZ2VuKCBDb25maWdBcmdzICpjICkKIAkJCXJldHVybiAxOwogCQl9
CiAJCW1kYi0+bWlfdHhuX2NwX2tieXRlID0gbDsKKwkJaWYgKCBtZGItPm1pX2ZsYWdzICYgTURC
X0lTX09QRU4gKQorCQkJbWRiX2Vudl9zZXRfc3luY2J5dGVzKCBtZGItPm1pX2RiZW52LCBtZGIt
Pm1pX3R4bl9jcF9rYnl0ZSAqIDEwMjR1bGwpOwogCQlpZiAoIGx1dGlsX2F0b2x4KCAmbCwgYy0+
YXJndlsyXSwgMCApICE9IDAgKSB7CiAJCQlmcHJpbnRmKCBzdGRlcnIsICIlczogIgogCQkJCSJp
bnZhbGlkIHNlY29uZHMgXCIlc1wiIGluIFwiY2hlY2twb2ludFwiLlxuIiwKZGlmZiAtLWdpdCBh
L3NlcnZlcnMvc2xhcGQvYmFjay1tZGIvaW5pdC5jIGIvc2VydmVycy9zbGFwZC9iYWNrLW1kYi9p
bml0LmMKaW5kZXggMWM1YWI4My4uMmE3Y2Y2MiAxMDA2NDQKLS0tIGEvc2VydmVycy9zbGFwZC9i
YWNrLW1kYi9pbml0LmMKKysrIGIvc2VydmVycy9zbGFwZC9iYWNrLW1kYi9pbml0LmMKQEAgLTE1
MCw2ICsxNTAsMTUgQEAgbWRiX2RiX29wZW4oIEJhY2tlbmREQiAqYmUsIENvbmZpZ1JlcGx5ICpj
ciApCiAJCWdvdG8gZmFpbDsKIAl9CiAKKwlyYyA9IG1kYl9lbnZfc2V0X3N5bmNieXRlcyggbWRi
LT5taV9kYmVudiwgbWRiLT5taV90eG5fY3Bfa2J5dGUgKiAxMDI0dWwpOworCWlmKCByYyAhPSAw
ICkgeworCQlEZWJ1ZyggTERBUF9ERUJVR19BTlksCisJCQlMREFQX1hTVFJJTkcobWRiX2RiX29w
ZW4pICI6IGRhdGFiYXNlIFwiJXNcIjogIgorCQkJIm1kYl9lbnZfc2V0X3N5bmNfdGhyZXNob2xk
IGZhaWxlZDogJXMgKCVkKS5cbiIsCisJCQliZS0+YmVfc3VmZml4WzBdLmJ2X3ZhbCwgbWRiX3N0
cmVycm9yKHJjKSwgcmMgKTsKKwkJZ290byBmYWlsOworCX0KKwogI2lmZGVmIEhBVkVfRUJDRElD
CiAJc3RyY3B5KCBwYXRoLCBtZGItPm1pX2RiZW52X2hvbWUgKTsKIAlfX2F0b2UoIHBhdGggKTsK
LS0gCjIuMS4wCgo=
--f46d04138a6f6c03c2050477cd19
Content-Type: text/x-patch; charset=US-ASCII;
name="0006-BUGFIX-lmdb-properly-sync-meta-pages-in-mdb_sync_env.patch"
Content-Disposition: attachment;
filename="0006-BUGFIX-lmdb-properly-sync-meta-pages-in-mdb_sync_env.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0snhdtx5
RnJvbSA4ZGRkNjMxNjFhZWIyNjg5ODIyZDFhOGQyNzM4NWQ2MmU0ZTM0MWFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWXVyaWV2IDxsZW9AeXVyaWV2LnJ1PgpEYXRlOiBGcmks
IDE5IFNlcCAyMDE0IDIyOjQ3OjE5ICswNDAwClN1YmplY3Q6IFtQQVRDSCAwNi8xMV0gIEJVR0ZJ
WCAtIGxtZGI6IHByb3Blcmx5IHN5bmMgbWV0YS1wYWdlcyBpbgogbWRiX3N5bmNfZW52KCkuCgog
TWV0YS1wYWdlcyBtYXkgYmUgdXBkYXRlZCBkdXJpbmcgZGF0YS1zeW5jaW5nIGluIG1kYl9zeW5j
X2VudigpLAogaW4gdGhpcyBjYXNlIGRhdGFiYXNlIHdvdWxkIGJlIGluY29uc2lzdGVudC4KCiBD
aGVjay1hbmQtcmV0cnkgaWYgbGVhZCB0eG4taWQgY2hhbmdlZCBkdXJpbmcgZmx1c2hpbmcgZGF0
YSBpbiBtZGJfc3luY19lbnYoKS4KLS0tCiBsaWJyYXJpZXMvbGlibG1kYi9tZGIuYyB8IDU0ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIDEgZmlsZSBj
aGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xp
YnJhcmllcy9saWJsbWRiL21kYi5jIGIvbGlicmFyaWVzL2xpYmxtZGIvbWRiLmMKaW5kZXggYjhi
ZmQyZS4uNmRjNmRkZiAxMDA2NDQKLS0tIGEvbGlicmFyaWVzL2xpYmxtZGIvbWRiLmMKKysrIGIv
bGlicmFyaWVzL2xpYmxtZGIvbWRiLmMKQEAgLTIzMDQsNiArMjMwNCw3IEBAIHN0YXRpYyBpbnQK
IG1kYl9lbnZfc3luYzIoTURCX2VudiAqZW52LCBpbnQgKmZvcmNlKQogewogCWludCByYyA9IDA7
CisKIAlpZiAoZW52LT5tZV9zeW5jX3RocmVzaG9sZCAmJiBlbnYtPm1lX3N5bmNfcGVuZGluZyA+
PSBlbnYtPm1lX3N5bmNfdGhyZXNob2xkKQogCQkqZm9yY2UgPSAxOwogCWlmICgqZm9yY2UgfHwg
IUZfSVNTRVQoZW52LT5tZV9mbGFncywgTURCX05PU1lOQykpIHsKQEAgLTIzMTEsNyArMjMxMiwx
MyBAQCBtZGJfZW52X3N5bmMyKE1EQl9lbnYgKmVudiwgaW50ICpmb3JjZSkKIAkJaWYgKGVudi0+
bWVfZmxhZ3MgJiBNREJfV1JJVEVNQVApIHsKIAkJCWludCBmbGFncyA9ICgoZW52LT5tZV9mbGFn
cyAmIE1EQl9NQVBBU1lOQykgJiYgKmZvcmNlID09IDApCiAJCQkJPyBNU19BU1lOQyA6IE1TX1NZ
TkM7Ci0JCQlpZiAoTURCX01TWU5DKGVudi0+bWVfbWFwLCBlbnYtPm1lX21hcHNpemUsIGZsYWdz
KSkKKworCQkJLyogTFk6IHNraXAgbWV0YS1wYWdlcyAqLworCQkJc2l6ZV90IGRhdGFfb2Zmc2V0
ID0gZW52LT5tZV9vc19wc2l6ZTsKKwkJCXdoaWxlIChkYXRhX29mZnNldCA8IGVudi0+bWVfcHNp
emUgKyBlbnYtPm1lX3BzaXplKQorCQkJCWRhdGFfb2Zmc2V0ICs9IGVudi0+bWVfb3NfcHNpemU7
CisKKwkJCWlmIChNREJfTVNZTkMoZW52LT5tZV9tYXAgKyBkYXRhX29mZnNldCwgZW52LT5tZV9t
YXBzaXplIC0gZGF0YV9vZmZzZXQsIGZsYWdzKSkKIAkJCQlyYyA9IEVyckNvZGUoKTsKICNpZmRl
ZiBfV0lOMzIKIAkJCWVsc2UgaWYgKGZsYWdzID09IE1TX1NZTkMgJiYgTURCX0ZEQVRBU1lOQyhl
bnYtPm1lX2ZkKSkKQEAgLTIzMjIsMTMgKzIzMjksNDYgQEAgbWRiX2Vudl9zeW5jMihNREJfZW52
ICplbnYsIGludCAqZm9yY2UpCiAJCQkJcmMgPSBFcnJDb2RlKCk7CiAJCX0KIAl9CisKIAlyZXR1
cm4gcmM7CiB9CiAKIGludAogbWRiX2Vudl9zeW5jKE1EQl9lbnYgKmVudiwgaW50IGZvcmNlKQog
ewotCXJldHVybiBtZGJfZW52X3N5bmMyKGVudiwgJmZvcmNlKTsKKwlNREJfbWV0YSAqbWV0YTsK
Kwl0eG5pZF90IGNoZWNrcG9pbnQ7CisJaW50IHJjLCBsb2NrZnJlZV9jb3VudGRvd24gPSAzOwor
CisJaWYgKGVudi0+bWVfZmxhZ3MgJiBNREJfUkRPTkxZKQorCQlyZXR1cm4gMDsKKworCWRvIHsK
KwkJaWYgKGxvY2tmcmVlX2NvdW50ZG93biAmJiAtLWxvY2tmcmVlX2NvdW50ZG93biA9PSAwKQor
CQkJTE9DS19NVVRFWF9XKGVudik7CisKKwkJbWV0YSA9IGVudi0+bWVfbWV0YXNbIG1kYl9lbnZf
cGlja19tZXRhKGVudikgXTsKKwkJY2hlY2twb2ludCA9IG1ldGEtPm1tX3R4bmlkOworCisJCS8q
IGZpcnN0IHN5bmMgZGF0YS4gKi8KKwkJcmMgPSBtZGJfZW52X3N5bmMyKGVudiwgJmZvcmNlKTsK
KworCQkvKiB0aGVuIHN5bmMgbWV0YS1wYWdlcy4gKi8KKwkJaWYgKHJjID09IDAgJiYgKGVudi0+
bWVfZmxhZ3MgJiBNREJfV1JJVEVNQVApKSB7CisJCQlpbnQgZmxhZ3MgPSAoIWZvcmNlICYmIChl
bnYtPm1lX2ZsYWdzICYgTURCX01BUEFTWU5DKSkgPyBNU19BU1lOQyA6IE1TX1NZTkM7CisJCQlp
ZiAoTURCX01TWU5DKGVudi0+bWVfbWFwLCBlbnYtPm1lX3BzaXplICogMiwgZmxhZ3MpKQorCQkJ
CXJjID0gRXJyQ29kZSgpOworI2lmZGVmIF9XSU4zMgorCQkJaWYgKHJjID09IDAgJiYgZmxhZ3Mg
PT0gTVNfU1lOQyAmJiBNREJfRkRBVEFTWU5DKGVudi0+bWVfZmQpKQorCQkJCXJjID0gRXJyQ29k
ZSgpOworI2VuZGlmCisJCX0KKwl9IHdoaWxlIChyYyA9PSAwICYmIGNoZWNrcG9pbnQgIT0gbWV0
YS0+bW1fdHhuaWQpOworCisJaWYgKGxvY2tmcmVlX2NvdW50ZG93biA9PSAwKQorCQlVTkxPQ0tf
TVVURVhfVyhlbnYpOworCisJcmV0dXJuIHJjOwogfQogCiAvKiogQmFjayB1cCBwYXJlbnQgdHhu
J3MgY3Vyc29ycywgdGhlbiBncmFiIHRoZSBvcmlnaW5hbHMgZm9yIHRyYWNraW5nICovCkBAIC0z
NTgyLDcgKzM2MjIsNyBAQCBtZGJfZW52X3dyaXRlX21ldGEoTURCX3R4biAqdHhuLCBpbnQgZm9y
Y2UpCiAJCW1wLT5tbV90eG5pZCA9IHR4bi0+bXRfdHhuaWQ7CiAJCWlmIChmb3JjZSB8fCAhKGVu
di0+bWVfZmxhZ3MgJiAoTURCX05PTUVUQVNZTkN8TURCX05PU1lOQykpKSB7CiAJCQl1bnNpZ25l
ZCBtZXRhX3NpemUgPSBlbnYtPm1lX3BzaXplOwotCQkJcmMgPSAoIWZvcmNlICYmIChlbnYtPm1l
X2ZsYWdzICYgTURCX01BUEFTWU5DKSkgPyBNU19BU1lOQyA6IE1TX1NZTkM7CisJCQlpbnQgZmxh
Z3MgPSAoIWZvcmNlICYmIChlbnYtPm1lX2ZsYWdzICYgTURCX01BUEFTWU5DKSkgPyBNU19BU1lO
QyA6IE1TX1NZTkM7CiAJCQlwdHIgPSBlbnYtPm1lX21hcDsKIAkJCWlmICh0b2dnbGUpIHsKICNp
Zm5kZWYgX1dJTjMyCS8qIFBPU0lYIG1zeW5jKCkgcmVxdWlyZXMgcHRyID0gc3RhcnQgb2YgT1Mg
cGFnZSAqLwpAQCAtMzU5MiwxMCArMzYzMiwxNiBAQCBtZGJfZW52X3dyaXRlX21ldGEoTURCX3R4
biAqdHhuLCBpbnQgZm9yY2UpCiAjZW5kaWYKIAkJCQkJcHRyICs9IG1ldGFfc2l6ZTsKIAkJCX0K
LQkJCWlmIChNREJfTVNZTkMocHRyLCBtZXRhX3NpemUsIHJjKSkgeworCQkJaWYgKE1EQl9NU1lO
QyhwdHIsIG1ldGFfc2l6ZSwgZmxhZ3MpKSB7CisJCQkJcmMgPSBFcnJDb2RlKCk7CisJCQkJZ290
byBmYWlsOworCQkJfQorI2lmZGVmIF9XSU4zMgorCQkJZWxzZSBpZiAoZmxhZ3MgPT0gTVNfU1lO
QyAmJiBNREJfRkRBVEFTWU5DKGVudi0+bWVfZmQpKSB7CiAJCQkJcmMgPSBFcnJDb2RlKCk7CiAJ
CQkJZ290byBmYWlsOwogCQkJfQorI2VuZGlmCiAJCX0KIAkJZ290byBkb25lOwogCX0KLS0gCjIu
MS4wCgo=
--f46d04138a6f6c03c2050477cd19
Content-Type: text/x-patch; charset=US-ASCII;
name="0007-FEATURE-lmdb-MDB_LIFORECLAIM-MDB_COALESCE-modes.patch"
Content-Disposition: attachment;
filename="0007-FEATURE-lmdb-MDB_LIFORECLAIM-MDB_COALESCE-modes.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0snhdu86
RnJvbSAwYzE2OGQwZTYzZWQ3OGQxM2RmM2ZjOGE0MmYzNjY3MzM1Njc4NjM5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWXVyaWV2IDxsZW9AeXVyaWV2LnJ1PgpEYXRlOiBTYXQs
IDIwIFNlcCAyMDE0IDEwOjEzOjI4ICswNDAwClN1YmplY3Q6IFtQQVRDSCAwNy8xMV0gIEZFQVRV
UkUgLSBsbWRiOiBNREJfTElGT1JFQ0xBSU0gJiBNREJfQ09BTEVTQ0UgbW9kZXMuCgogUmVjbGFp
bSBGcmVlREIgaW4gTElGTyBvcmRlciAtIHRoaXMgaXMgYSBtYWluIGZlYXR1cmUuCiBBbHNvIGFp
bSB0byBjb2FsZXNjZSBzbWFsbCBGcmVlREZCIHJlY29yZHMuCi0tLQogbGlicmFyaWVzL2xpYmxt
ZGIvbG1kYi5oIHwgIDExICsrCiBsaWJyYXJpZXMvbGlibG1kYi9tZGIuYyAgfCAzNjggKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdl
ZCwgMzAyIGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYnJh
cmllcy9saWJsbWRiL2xtZGIuaCBiL2xpYnJhcmllcy9saWJsbWRiL2xtZGIuaAppbmRleCBjNWYz
YTc5Li5hMjJmOGY3IDEwMDY0NAotLS0gYS9saWJyYXJpZXMvbGlibG1kYi9sbWRiLmgKKysrIGIv
bGlicmFyaWVzL2xpYmxtZGIvbG1kYi5oCkBAIC0yODcsNiArMjg3LDExIEBAIHR5cGVkZWYgdm9p
ZCAoTURCX3JlbF9mdW5jKShNREJfdmFsICppdGVtLCB2b2lkICpvbGRwdHIsIHZvaWQgKm5ld3B0
ciwgdm9pZCAqcmVsCiAjZGVmaW5lIE1EQl9OT1JEQUhFQUQJMHg4MDAwMDAKIAkvKiogZG9uJ3Qg
aW5pdGlhbGl6ZSBtYWxsb2MnZCBtZW1vcnkgYmVmb3JlIHdyaXRpbmcgdG8gZGF0YWZpbGUgKi8K
ICNkZWZpbmUgTURCX05PTUVNSU5JVAkweDEwMDAwMDAKKwkvKiogYWltIHRvIGNvYWxlc2NlIEZy
ZWVEQiByZWNvcmRzICovCisjZGVmaW5lIE1EQl9DT0FMRVNDRQkweDIwMDAwMDAKKwkvKiogTElG
TyBwb2xpY3kgZm9yIHJlY2xhaW1pbmcgRnJlZURCIHJlY29yZHMKKwkgKiAgKHNpZ25pZmljYW50
bHkgcmVkdWNlIElQT1MgaW4gY2FzZSBNREJfTk9TWU5DIHdpdGggcGVyaW9kaWNhbGx5IGNoZWNr
cG9pbnRzKS4gKi8KKyNkZWZpbmUgTURCX0xJRk9SRUNMQUlNCTB4NDAwMDAwMAogLyoqIEB9ICov
CiAKIC8qKglAZGVmZ3JvdXAJbWRiX2RiaV9vcGVuCURhdGFiYXNlIEZsYWdzCkBAIC01ODgsNiAr
NTkzLDEyIEBAIGludCAgbWRiX2Vudl9jcmVhdGUoTURCX2VudiAqKmVudik7CiAJICoJCWNhbGxl
ciBpcyBleHBlY3RlZCB0byBvdmVyd3JpdGUgYWxsIG9mIHRoZSBtZW1vcnkgdGhhdCB3YXMKIAkg
KgkJcmVzZXJ2ZWQgaW4gdGhhdCBjYXNlLgogCSAqCQlUaGlzIGZsYWcgbWF5IGJlIGNoYW5nZWQg
YXQgYW55IHRpbWUgdXNpbmcgI21kYl9lbnZfc2V0X2ZsYWdzKCkuCisJICogIDxsaT4jTURCX0NP
QUxFU0NFCisJICogICAgICBBaW0gdG8gY29hbGVzY2UgcmVjb3JkcyB3aGlsZSByZWNsYWltaW5n
IEZyZWVEQi4KKwkgKgkJVGhpcyBmbGFnIG1heSBiZSBjaGFuZ2VkIGF0IGFueSB0aW1lIHVzaW5n
ICNtZGJfZW52X3NldF9mbGFncygpLgorCSAqICA8bGk+I01EQl9MSUZPUkVDTEFJTQorCSAqIAkg
ICAgTElGTyBwb2xpY3kgZm9yIHJlY2xhaW1pbmcgRnJlZURCIHJlY29yZHMuIFRoaXMgc2lnbmlm
aWNhbnRseSByZWR1Y2UKKwkgKiAgICAgIHdyaXRlIElQT1MgaW4gY2FzZSBNREJfTk9TWU5DIHdp
dGggcGVyaW9kaWNhbGx5IGNoZWNrcG9pbnRzLgogCSAqIDwvdWw+CiAJICogQHBhcmFtW2luXSBt
b2RlIFRoZSBVTklYIHBlcm1pc3Npb25zIHRvIHNldCBvbiBjcmVhdGVkIGZpbGVzLiBUaGlzIHBh
cmFtZXRlcgogCSAqIGlzIGlnbm9yZWQgb24gV2luZG93cy4KZGlmZiAtLWdpdCBhL2xpYnJhcmll
cy9saWJsbWRiL21kYi5jIGIvbGlicmFyaWVzL2xpYmxtZGIvbWRiLmMKaW5kZXggNmRjNmRkZi4u
MGZhZmVlMiAxMDA2NDQKLS0tIGEvbGlicmFyaWVzL2xpYmxtZGIvbWRiLmMKKysrIGIvbGlicmFy
aWVzL2xpYmxtZGIvbWRiLmMKQEAgLTk0OSw2ICs5NDksOCBAQCBzdHJ1Y3QgTURCX3R4biB7CiAJ
ICovCiAJdHhuaWRfdAkJbXRfdHhuaWQ7CiAJTURCX2VudgkJKm10X2VudjsJCS8qKjwgdGhlIERC
IGVudmlyb25tZW50ICovCisJLyoqIFRoZSBsaXN0IG9mIHJlY2xhaW1lZCB0eG5zIGZyb20gZnJl
ZURCICovCisJTURCX0lETAkJbXRfbGlmb19yZWNsYWltZWQ7CiAJLyoqIFRoZSBsaXN0IG9mIHBh
Z2VzIHRoYXQgYmVjYW1lIHVudXNlZCBkdXJpbmcgdGhpcyB0cmFuc2FjdGlvbi4KIAkgKi8KIAlN
REJfSURMCQltdF9mcmVlX3BnczsKQEAgLTEwNTcsNiArMTA1OSw3IEBAIHN0cnVjdCBNREJfY3Vy
c29yIHsKICNkZWZpbmUgQ19ERUwJMHgwOAkJCS8qKjwgbGFzdCBvcCB3YXMgYSBjdXJzb3JfZGVs
ICovCiAjZGVmaW5lIENfU1BMSVRUSU5HCTB4MjAJCS8qKjwgQ3Vyc29yIGlzIGluIHBhZ2Vfc3Bs
aXQgKi8KICNkZWZpbmUgQ19VTlRSQUNLCTB4NDAJCS8qKjwgVW4tdHJhY2sgY3Vyc29yIHdoZW4g
Y2xvc2luZyAqLworI2RlZmluZSBDX1JFQ0xBSU1JTkcJMHg4MAkJLyoqPCBGcmVlREIgbG9va3Vw
IGlzIHByb2hpYml0ZWQgKi8KIC8qKiBAfSAqLwogCXVuc2lnbmVkIGludAltY19mbGFnczsJLyoq
PCBAcmVmIG1kYl9jdXJzb3IgKi8KIAlNREJfcGFnZQkqbWNfcGdbQ1VSU09SX1NUQUNLXTsJLyoq
PCBzdGFjayBvZiBwdXNoZWQgcGFnZXMgKi8KQEAgLTE5MzYsNTEgKzE5MzksNTEgQEAgbWRiX3Bh
Z2VfZGlydHkoTURCX3R4biAqdHhuLCBNREJfcGFnZSAqbXApCiAgKiAgd2lsbCBhbHdheXMgYmUg
c2F0aXNmaWVkIGJ5IGEgc2luZ2xlIGNvbnRpZ3VvdXMgY2h1bmsgb2YgbWVtb3J5LgogICogQHJl
dHVybiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG9uIGZhaWx1cmUuCiAgKi8KKwogc3RhdGljIGlu
dAogbWRiX3BhZ2VfYWxsb2MoTURCX2N1cnNvciAqbWMsIGludCBudW0sIE1EQl9wYWdlICoqbXAp
CiB7Ci0jaWZkZWYgTURCX1BBUkFOT0lECS8qIFNlZW1zIGxpa2Ugd2UgY2FuIGlnbm9yZSB0aGlz
IG5vdyAqLwotCS8qIEdldCBhdCBtb3N0IDxNYXhfcmV0cmllcz4gbW9yZSBmcmVlREIgcmVjb3Jk
cyBvbmNlIG1lX3BnaGVhZAotCSAqIGhhcyBlbm91Z2ggcGFnZXMuICBJZiBub3QgZW5vdWdoLCB1
c2UgbmV3IHBhZ2VzIGZyb20gdGhlIG1hcC4KLQkgKiBJZiA8UGFyYW5vaWQ+IGFuZCBtYyBpcyB1
cGRhdGluZyB0aGUgZnJlZURCLCBvbmx5IGdldCBuZXcKLQkgKiByZWNvcmRzIGlmIG1lX3BnaGVh
ZCBpcyBlbXB0eS4gVGhlbiB0aGUgZnJlZWxpc3QgY2Fubm90IHBsYXkKLQkgKiBjYXRjaC11cCB3
aXRoIGl0c2VsZiBieSBncm93aW5nIHdoaWxlIHRyeWluZyB0byBzYXZlIGl0LgotCSAqLwotCWVu
dW0geyBQYXJhbm9pZCA9IDEsIE1heF9yZXRyaWVzID0gNTAwIH07Ci0jZWxzZQotCWVudW0geyBQ
YXJhbm9pZCA9IDAsIE1heF9yZXRyaWVzID0gSU5UX01BWCAvKmluZmluaXRlKi8gfTsKLSNlbmRp
ZgogCWludCByYywgcmV0cnkgPSBudW0gKiA2MDsKIAlNREJfdHhuICp0eG4gPSBtYy0+bWNfdHhu
OwogCU1EQl9lbnYgKmVudiA9IHR4bi0+bXRfZW52OwogCXBnbm9fdCBwZ25vLCAqbW9wID0gZW52
LT5tZV9wZ2hlYWQ7Ci0JdW5zaWduZWQgaSwgaiwgbW9wX2xlbiA9IG1vcCA/IG1vcFswXSA6IDAs
IG4yID0gbnVtLTE7CisJdW5zaWduZWQgaSA9IDAsIGosIG1vcF9sZW4gPSBtb3AgPyBtb3BbMF0g
OiAwLCBuMiA9IG51bS0xOwogCU1EQl9wYWdlICpucDsKLQl0eG5pZF90IG9sZGVzdCA9IDAsIGxh
c3Q7CisJdHhuaWRfdCBvbGRlc3QgPSAwLCBsYXN0ID0gMDsKIAlNREJfY3Vyc29yX29wIG9wOwog
CU1EQl9jdXJzb3IgbTI7CiAJaW50IGZvdW5kX29sZCA9IDA7CisJdW5zaWduZWQgZW5vdWdodCA9
IGVudi0+bWVfbWF4ZnJlZV8xcGcgLyAyOworCisJLyogbXAgPT0gTlVMTCB3aGVuIG1kYl9mcmVl
bGlzdF9zYXZlKCkgZm9yY2UgcmVjbGFpbSB0bworCSAqIGdldCBvbmUgbW9yZSBpZCBmb3Igc2F2
aW5nIGxpc3Qgb2YgcGFnZXMuICovCisJaWYgKG1wKSB7CisJCS8qIElmIHRoZXJlIGFyZSBhbnkg
bG9vc2UgcGFnZXMsIGp1c3QgdXNlIHRoZW0gKi8KKwkJaWYgKG51bSA9PSAxICYmIHR4bi0+bXRf
bG9vc2VfcGdzKSB7CisJCQlucCA9IHR4bi0+bXRfbG9vc2VfcGdzOworCQkJdHhuLT5tdF9sb29z
ZV9wZ3MgPSBORVhUX0xPT1NFX1BBR0UobnApOworCQkJdHhuLT5tdF9sb29zZV9jb3VudC0tOwor
CQkJRFBSSU5URigoImRiICVkIHVzZSBsb29zZSBwYWdlICUiWiJ1IiwgRERCSShtYyksCisJCQkJ
CW5wLT5tcF9wZ25vKSk7CisJCQkqbXAgPSBucDsKKwkJCXJldHVybiBNREJfU1VDQ0VTUzsKKwkJ
fQogCi0JLyogSWYgdGhlcmUgYXJlIGFueSBsb29zZSBwYWdlcywganVzdCB1c2UgdGhlbSAqLwot
CWlmIChudW0gPT0gMSAmJiB0eG4tPm10X2xvb3NlX3BncykgewotCQlucCA9IHR4bi0+bXRfbG9v
c2VfcGdzOwotCQl0eG4tPm10X2xvb3NlX3BncyA9IE5FWFRfTE9PU0VfUEFHRShucCk7Ci0JCXR4
bi0+bXRfbG9vc2VfY291bnQtLTsKLQkJRFBSSU5URigoImRiICVkIHVzZSBsb29zZSBwYWdlICUi
WiJ1IiwgRERCSShtYyksCi0JCQkJbnAtPm1wX3Bnbm8pKTsKLQkJKm1wID0gbnA7Ci0JCXJldHVy
biBNREJfU1VDQ0VTUzsKKwkJKm1wID0gTlVMTDsKIAl9CiAKLQkqbXAgPSBOVUxMOwotCiAJLyog
SWYgb3VyIGRpcnR5IGxpc3QgaXMgYWxyZWFkeSBmdWxsLCB3ZSBjYW4ndCBkbyBhbnl0aGluZyAq
LwogCWlmICh0eG4tPm10X2RpcnR5X3Jvb20gPT0gMCkgewogCQlyYyA9IE1EQl9UWE5fRlVMTDsK
IAkJZ290byBmYWlsOwogCX0KIAotCWZvciAob3AgPSBNREJfRklSU1Q7OyBvcCA9IE1EQl9ORVhU
KSB7CisJaW50IGNvYWxlc2NlID0gKGVudi0+bWVfZmxhZ3MgJiBNREJfQ09BTEVTQ0UpID8gMSA6
IDA7CisJaWYgKGNvYWxlc2NlICYmIGVudi0+bWVfcGdvbGRlc3QgPT0gMCkKKwkJY29hbGVzY2Ug
PSAyOworCisJY29uc3QgaW50IGxpZm8gPSAoZW52LT5tZV9mbGFncyAmIE1EQl9MSUZPUkVDTEFJ
TSkgIT0gMDsKKwlmb3IgKG9wID0gTURCX0ZJUlNUOzsgb3AgPSBsaWZvID8gTURCX1BSRVYgOiBN
REJfTkVYVCkgewogCQlNREJfdmFsIGtleSwgZGF0YTsKIAkJTURCX25vZGUgKmxlYWY7CiAJCXBn
bm9fdCAqaWRsOwpAQCAtMTk4OCw3ICsxOTkxLDcgQEAgbWRiX3BhZ2VfYWxsb2MoTURCX2N1cnNv
ciAqbWMsIGludCBudW0sIE1EQl9wYWdlICoqbXApCiAJCS8qIFNlZWsgYSBiaWcgZW5vdWdoIGNv
bnRpZ3VvdXMgcGFnZSByYW5nZS4gUHJlZmVyCiAJCSAqIHBhZ2VzIGF0IHRoZSB0YWlsLCBqdXN0
IHRydW5jYXRpbmcgdGhlIGxpc3QuCiAJCSAqLwotCQlpZiAobW9wX2xlbiA+IG4yKSB7CisJCWlm
IChtcCAmJiBtb3BfbGVuID4gbjIgJiYgKCEgY29hbGVzY2UgfHwgb3AgPT0gTURCX0ZJUlNUKSkg
ewogCQkJaSA9IG1vcF9sZW47CiAJCQlkbyB7CiAJCQkJcGdubyA9IG1vcFtpXTsKQEAgLTIwMDEs
MzcgKzIwMDQsNzMgQEAgbWRiX3BhZ2VfYWxsb2MoTURCX2N1cnNvciAqbWMsIGludCBudW0sIE1E
Ql9wYWdlICoqbXApCiAKIAkJaWYgKG9wID09IE1EQl9GSVJTVCkgewkvKiAxc3QgaXRlcmF0aW9u
ICovCiAJCQkvKiBQcmVwYXJlIHRvIGZldGNoIG1vcmUgYW5kIGNvYWxlc2NlICovCi0JCQlsYXN0
ID0gZW52LT5tZV9wZ2xhc3Q7CisJCQlpZiAobWMtPm1jX2ZsYWdzICYgQ19SRUNMQUlNSU5HKSB7
CisJCQkJLyogSWYgbWMgaXMgdXBkYXRpbmcgdGhlIGZyZWVEQiwgdGhlbiB0aGUgZnJlZWxpc3Qg
Y2Fubm90IHBsYXkKKwkJCQkgKiBjYXRjaC11cCB3aXRoIGl0c2VsZiBieSBncm93aW5nIHdoaWxl
IHRyeWluZyB0byBzYXZlIGl0LgorCQkJCSAqLworCQkJCWJyZWFrOworCQkJfQogCQkJb2xkZXN0
ID0gZW52LT5tZV9wZ29sZGVzdDsKIAkJCW1kYl9jdXJzb3JfaW5pdCgmbTIsIHR4biwgRlJFRV9E
QkksIE5VTEwpOwotCQkJaWYgKGxhc3QpIHsKKwkJCWlmIChsaWZvKSB7CisJCQkJaWYgKGVudi0+
bWVfcGdsYXN0ID4gMSkgeworCQkJCQkvKiBDb250aW51ZSBsb29rdXAgZnJvbSBlbnYtPm1lX3Bn
bGFzdCAqLworCQkJCQlsYXN0ID0gZW52LT5tZV9wZ2xhc3QgLSAxOworCQkJCQlvcCA9IE1EQl9T
RVRfUkFOR0U7CisJCQkJfSBlbHNlIHsKKwkJCQkJb2xkZXN0ID0gbWRiX2ZpbmRfb2xkZXN0KHR4
bik7CisJCQkJCWVudi0+bWVfcGdvbGRlc3QgPSBvbGRlc3Q7CisJCQkJCWZvdW5kX29sZCA9IDE7
CisJCQkJCS8qIEJlZ2luIGZyb20gb2xkZXN0IHJlYWRlciBpZiBhbnkgKi8KKwkJCQkJaWYgKG9s
ZGVzdCA+IDIpIHsKKwkJCQkJCWxhc3QgPSBvbGRlc3QgLSAxOworCQkJCQkJb3AgPSBNREJfU0VU
X1JBTkdFOworCQkJCQl9CisJCQkJfQorCQkJfSBlbHNlIGlmIChlbnYtPm1lX3BnbGFzdCkgewor
CQkJCS8qIENvbnRpbnVlIGxvb2t1cCBmcm9tIGVudi0+bWVfcGdsYXN0ICovCisJCQkJbGFzdCA9
IGVudi0+bWVfcGdsYXN0OwogCQkJCW9wID0gTURCX1NFVF9SQU5HRTsKLQkJCQlrZXkubXZfZGF0
YSA9ICZsYXN0OyAvKiB3aWxsIGxvb2sgdXAgbGFzdCsxICovCi0JCQkJa2V5Lm12X3NpemUgPSBz
aXplb2YobGFzdCk7CiAJCQl9Ci0JCQlpZiAoUGFyYW5vaWQgJiYgbWMtPm1jX2RiaSA9PSBGUkVF
X0RCSSkKLQkJCQlyZXRyeSA9IC0xOworCisJCQlrZXkubXZfZGF0YSA9ICZsYXN0OworCQkJa2V5
Lm12X3NpemUgPSBzaXplb2YobGFzdCk7CiAJCX0KLQkJaWYgKFBhcmFub2lkICYmIHJldHJ5IDwg
MCAmJiBtb3BfbGVuKQotCQkJYnJlYWs7CiAKLQkJbGFzdCsrOwotCQkvKiBEbyBub3QgZmV0Y2gg
bW9yZSBpZiB0aGUgcmVjb3JkIHdpbGwgYmUgdG9vIHJlY2VudCAqLwotCQlpZiAob2xkZXN0IDw9
IGxhc3QpIHsKLQkJCWlmICghZm91bmRfb2xkKSB7Ci0JCQkJb2xkZXN0ID0gbWRiX2ZpbmRfb2xk
ZXN0KHR4bik7Ci0JCQkJZW52LT5tZV9wZ29sZGVzdCA9IG9sZGVzdDsKLQkJCQlmb3VuZF9vbGQg
PSAxOworCQlpZiAoISBsaWZvKSB7CisJCQkvKiBEbyBub3QgZmV0Y2ggbW9yZSBpZiB0aGUgcmVj
b3JkIHdpbGwgYmUgdG9vIHJlY2VudCAqLworCQkJaWYgKG9wICE9IE1EQl9GSVJTVCAmJiArK2xh
c3QgPj0gb2xkZXN0KSB7CisJCQkJaWYgKCFmb3VuZF9vbGQpIHsKKwkJCQkJb2xkZXN0ID0gbWRi
X2ZpbmRfb2xkZXN0KHR4bik7CisJCQkJCWVudi0+bWVfcGdvbGRlc3QgPSBvbGRlc3Q7CisJCQkJ
CWZvdW5kX29sZCA9IDE7CisJCQkJfQorCQkJCWlmIChvbGRlc3QgPD0gbGFzdCkKKwkJCQkJYnJl
YWs7CiAJCQl9Ci0JCQlpZiAob2xkZXN0IDw9IGxhc3QpCi0JCQkJYnJlYWs7CiAJCX0KKwogCQly
YyA9IG1kYl9jdXJzb3JfZ2V0KCZtMiwgJmtleSwgTlVMTCwgb3ApOworCQlpZiAocmMgPT0gTURC
X05PVEZPVU5EICYmIGxpZm8pIHsKKwkJCWlmIChvcCA9PSBNREJfU0VUX1JBTkdFKQorCQkJCWNv
bnRpbnVlOworCQkJZW52LT5tZV9wZ29sZGVzdCA9IG1kYl9maW5kX29sZGVzdCh0eG4pOworCQkJ
Zm91bmRfb2xkID0gMTsKKwkJCWlmIChvbGRlc3QgPCBlbnYtPm1lX3Bnb2xkZXN0KSB7CisJCQkJ
b2xkZXN0ID0gZW52LT5tZV9wZ29sZGVzdDsKKwkJCQlsYXN0ID0gb2xkZXN0IC0gMTsKKwkJCQlr
ZXkubXZfZGF0YSA9ICZsYXN0OworCQkJCWtleS5tdl9zaXplID0gc2l6ZW9mKGxhc3QpOworCQkJ
CW9wID0gTURCX1NFVF9SQU5HRTsKKwkJCQlyYyA9IG1kYl9jdXJzb3JfZ2V0KCZtMiwgJmtleSwg
TlVMTCwgb3ApOworCQkJfQorCQl9CiAJCWlmIChyYykgewogCQkJaWYgKHJjID09IE1EQl9OT1RG
T1VORCkKIAkJCQlicmVhazsKIAkJCWdvdG8gZmFpbDsKIAkJfQorCiAJCWxhc3QgPSAqKHR4bmlk
X3QqKWtleS5tdl9kYXRhOwogCQlpZiAob2xkZXN0IDw9IGxhc3QpIHsKIAkJCWlmICghZm91bmRf
b2xkKSB7CkBAIC0yMDM5LDE1ICsyMDc4LDM4IEBAIG1kYl9wYWdlX2FsbG9jKE1EQl9jdXJzb3Ig
Km1jLCBpbnQgbnVtLCBNREJfcGFnZSAqKm1wKQogCQkJCWVudi0+bWVfcGdvbGRlc3QgPSBvbGRl
c3Q7CiAJCQkJZm91bmRfb2xkID0gMTsKIAkJCX0KLQkJCWlmIChvbGRlc3QgPD0gbGFzdCkKKwkJ
CWlmIChvbGRlc3QgPD0gbGFzdCkgeworCQkJCWlmIChsaWZvKQorCQkJCQljb250aW51ZTsKIAkJ
CQlicmVhazsKKwkJCX0KIAkJfQorCisJCWlmIChsaWZvKSB7CisJCQlpZiAodHhuLT5tdF9saWZv
X3JlY2xhaW1lZCkgeworCQkJCWZvcihpID0gdHhuLT5tdF9saWZvX3JlY2xhaW1lZFswXTsgaSA+
IDA7IC0taSkKKwkJCQkJaWYgKHR4bi0+bXRfbGlmb19yZWNsYWltZWRbaV0gPT0gbGFzdCkKKwkJ
CQkJCWJyZWFrOworCQkJCWlmIChpKQorCQkJCQljb250aW51ZTsKKwkJCX0KKwkJfQorCiAJCW5w
ID0gbTIubWNfcGdbbTIubWNfdG9wXTsKIAkJbGVhZiA9IE5PREVQVFIobnAsIG0yLm1jX2tpW20y
Lm1jX3RvcF0pOwogCQlpZiAoKHJjID0gbWRiX25vZGVfcmVhZCh0eG4sIGxlYWYsICZkYXRhKSkg
IT0gTURCX1NVQ0NFU1MpCiAJCQlyZXR1cm4gcmM7CiAKKwkJaWYgKGxpZm8gJiYgIXR4bi0+bXRf
bGlmb19yZWNsYWltZWQpIHsKKwkJCXR4bi0+bXRfbGlmb19yZWNsYWltZWQgPSBtZGJfbWlkbF9h
bGxvYyhlbnYtPm1lX21heGZyZWVfMXBnKTsKKwkJCWlmICghdHhuLT5tdF9saWZvX3JlY2xhaW1l
ZCkgeworCQkJCXJjID0gRU5PTUVNOworCQkJCWdvdG8gZmFpbDsKKwkJCX0KKwkJfQorCiAJCWlk
bCA9IChNREJfSUQgKikgZGF0YS5tdl9kYXRhOworCQltZGJfdGFzc2VydCh0eG4sIGlkbFswXSA9
PSAwIHx8IGRhdGEubXZfc2l6ZSA9PSAoaWRsWzBdICsgMSkgKiBzaXplb2YoTURCX0lEKSk7CiAJ
CWkgPSBpZGxbMF07CiAJCWlmICghbW9wKSB7CiAJCQlpZiAoIShlbnYtPm1lX3BnaGVhZCA9IG1v
cCA9IG1kYl9taWRsX2FsbG9jKGkpKSkgewpAQCAtMjA1OSw2ICsyMTIxLDEwIEBAIG1kYl9wYWdl
X2FsbG9jKE1EQl9jdXJzb3IgKm1jLCBpbnQgbnVtLCBNREJfcGFnZSAqKm1wKQogCQkJCWdvdG8g
ZmFpbDsKIAkJCW1vcCA9IGVudi0+bWVfcGdoZWFkOwogCQl9CisJCWlmIChsaWZvKSB7CisJCQlp
ZiAoKHJjID0gbWRiX21pZGxfYXBwZW5kKCZ0eG4tPm10X2xpZm9fcmVjbGFpbWVkLCBsYXN0KSkg
IT0gMCkKKwkJCQlnb3RvIGZhaWw7CisJCX0KIAkJZW52LT5tZV9wZ2xhc3QgPSBsYXN0OwogI2lm
IChNREJfREVCVUcpID4gMQogCQlEUFJJTlRGKCgiSURMIHJlYWQgdHhuICUiWiJ1IHJvb3QgJSJa
InUgbnVtICV1IiwKQEAgLTIwNjksMTUgKzIxMzUsNDAgQEAgbWRiX3BhZ2VfYWxsb2MoTURCX2N1
cnNvciAqbWMsIGludCBudW0sIE1EQl9wYWdlICoqbXApCiAJCS8qIE1lcmdlIGluIGRlc2NlbmRp
bmcgc29ydGVkIG9yZGVyICovCiAJCW1kYl9taWRsX3htZXJnZShtb3AsIGlkbCk7CiAJCW1vcF9s
ZW4gPSBtb3BbMF07CisKKwkJaWYgKCEgbXApIHsKKwkJCS8qIGZvcmNlIHJlY2xhaW0gbW9kZSAq
LworCQkJcmV0dXJuIDA7CisJCX0KKworCQkvKiBEb24ndCB0cnkgdG8gY29hbGVzY2UgdG9vIG11
Y2guICovCisJCWlmIChtb3BfbGVuID4gTURCX0lETF9VTV9TSVpFIC8gMikKKwkJCWJyZWFrOwor
CQlpZiAoY29hbGVzY2UgPT0gMSAmJiAobW9wX2xlbiA+PSBlbm91Z2h0IHx8IGkgPj0gZW5vdWdo
dCAvIDIpKQorCQkJY29hbGVzY2UgPSAwOworCX0KKworCWlmICghIG1wKSB7CisJCS8qIGZvcmNl
IHJlY2xhaW0gbW9kZSAqLworCQlyZXR1cm4gTURCX05PVEZPVU5EOworCX0KKworCWlmIChtb3Bf
bGVuID4gbjIgJiYgY29hbGVzY2UpIHsKKwkJaSA9IG1vcF9sZW47CisJCWRvIHsKKwkJCXBnbm8g
PSBtb3BbaV07CisJCQlpZiAobW9wW2ktbjJdID09IHBnbm8rbjIpCisJCQkJZ290byBzZWFyY2hf
ZG9uZTsKKwkJfSB3aGlsZSAoLS1pID4gbjIpOwogCX0KIAogCS8qIFVzZSBuZXcgcGFnZXMgZnJv
bSB0aGUgbWFwIHdoZW4gbm90aGluZyBzdWl0YWJsZSBpbiB0aGUgZnJlZURCICovCiAJaSA9IDA7
CiAJcGdubyA9IHR4bi0+bXRfbmV4dF9wZ25vOwogCWlmIChwZ25vICsgbnVtID49IGVudi0+bWVf
bWF4cGcpIHsKLQkJCURQVVRTKCJEQiBzaXplIG1heGVkIG91dCIpOwotCQkJcmMgPSBNREJfTUFQ
X0ZVTEw7Ci0JCQlnb3RvIGZhaWw7CisJCURQVVRTKCJEQiBzaXplIG1heGVkIG91dCIpOworCQly
YyA9IE1EQl9NQVBfRlVMTDsKKwkJZ290byBmYWlsOwogCX0KIAogc2VhcmNoX2RvbmU6CkBAIC0y
NTk4LDYgKzI2ODksOCBAQCBtZGJfdHhuX3JlbmV3MChNREJfdHhuICp0eG4pCiAJCXR4bi0+bXRf
ZnJlZV9wZ3MgPSBlbnYtPm1lX2ZyZWVfcGdzOwogCQl0eG4tPm10X2ZyZWVfcGdzWzBdID0gMDsK
IAkJdHhuLT5tdF9zcGlsbF9wZ3MgPSBOVUxMOworCQltZGJfbWlkbF9mcmVlKHR4bi0+bXRfbGlm
b19yZWNsYWltZWQpOworCQl0eG4tPm10X2xpZm9fcmVjbGFpbWVkID0gTlVMTDsKIAkJZW52LT5t
ZV90eG4gPSB0eG47CiAJCW1lbWNweSh0eG4tPm10X2RiaXNlcXMsIGVudi0+bWVfZGJpc2Vxcywg
ZW52LT5tZV9tYXhkYnMgKiBzaXplb2YodW5zaWduZWQgaW50KSk7CiAJfQpAQCAtMjgzMiw2ICsy
OTI1LDkgQEAgbWRiX3R4bl9yZXNldDAoTURCX3R4biAqdHhuLCBjb25zdCBjaGFyICphY3QpCiAJ
CX0KIAkJbWRiX21pZGxfZnJlZShlbnYtPm1lX3BnaGVhZCk7CiAKKwkJbWRiX21pZGxfZnJlZSh0
eG4tPm10X2xpZm9fcmVjbGFpbWVkKTsKKwkJdHhuLT5tdF9saWZvX3JlY2xhaW1lZCA9IE5VTEw7
CisKIAkJaWYgKHR4bi0+bXRfcGFyZW50KSB7CiAJCQl0eG4tPm10X3BhcmVudC0+bXRfY2hpbGQg
PSBOVUxMOwogCQkJZW52LT5tZV9wZ3N0YXRlID0gKChNREJfbnR4biAqKXR4biktPm1udF9wZ3N0
YXRlOwpAQCAtMjkwMCwxMCArMjk5NiwxMiBAQCBtZGJfZnJlZWxpc3Rfc2F2ZShNREJfdHhuICp0
eG4pCiAJdHhuaWRfdAlwZ2xhc3QgPSAwLCBoZWFkX2lkID0gMDsKIAlwZ25vX3QJZnJlZWNudCA9
IDAsICpmcmVlX3BncywgKm1vcDsKIAlzc2l6ZV90CWhlYWRfcm9vbSA9IDAsIHRvdGFsX3Jvb20g
PSAwLCBtb3BfbGVuLCBjbGVhbl9saW1pdDsKKwl1bnNpZ25lZCBjbGVhbnVwX2lkeCA9IDAsIHJl
ZmlsbF9pZHggPSAwOworCWNvbnN0IGludCBsaWZvID0gKGVudi0+bWVfZmxhZ3MgJiBNREJfTElG
T1JFQ0xBSU0pICE9IDA7CiAKIAltZGJfY3Vyc29yX2luaXQoJm1jLCB0eG4sIEZSRUVfREJJLCBO
VUxMKTsKIAotCWlmIChlbnYtPm1lX3BnaGVhZCkgeworCWlmICghIGxpZm8gJiYgZW52LT5tZV9w
Z2hlYWQpIHsKIAkJLyogTWFrZSBzdXJlIGZpcnN0IHBhZ2Ugb2YgZnJlZURCIGlzIHRvdWNoZWQg
YW5kIG9uIGZyZWVsaXN0ICovCiAJCXJjID0gbWRiX3BhZ2Vfc2VhcmNoKCZtYywgTlVMTCwgTURC
X1BTX0ZJUlNUfE1EQl9QU19NT0RJRlkpOwogCQlpZiAocmMgJiYgcmMgIT0gTURCX05PVEZPVU5E
KQpAQCAtMjkzMywxOSArMzAzMSw1NSBAQCBtZGJfZnJlZWxpc3Rfc2F2ZShNREJfdHhuICp0eG4p
CiAJCXBnbm9fdCAqcGdzOwogCQlzc2l6ZV90IGo7CiAKLQkJLyogSWYgdXNpbmcgcmVjb3JkcyBm
cm9tIGZyZWVEQiB3aGljaCB3ZSBoYXZlIG5vdCB5ZXQKLQkJICogZGVsZXRlZCwgZGVsZXRlIHRo
ZW0gYW5kIGFueSB3ZSByZXNlcnZlZCBmb3IgbWVfcGdoZWFkLgotCQkgKi8KLQkJd2hpbGUgKHBn
bGFzdCA8IGVudi0+bWVfcGdsYXN0KSB7Ci0JCQlyYyA9IG1kYl9jdXJzb3JfZmlyc3QoJm1jLCAm
a2V5LCBOVUxMKTsKLQkJCWlmIChyYykKLQkJCQlyZXR1cm4gcmM7Ci0JCQlwZ2xhc3QgPSBoZWFk
X2lkID0gKih0eG5pZF90ICopa2V5Lm12X2RhdGE7Ci0JCQl0b3RhbF9yb29tID0gaGVhZF9yb29t
ID0gMDsKLQkJCW1kYl90YXNzZXJ0KHR4biwgcGdsYXN0IDw9IGVudi0+bWVfcGdsYXN0KTsKLQkJ
CXJjID0gbWRiX2N1cnNvcl9kZWwoJm1jLCAwKTsKLQkJCWlmIChyYykKLQkJCQlyZXR1cm4gcmM7
CisJCWlmICghIGxpZm8pIHsKKwkJCS8qIElmIHVzaW5nIHJlY29yZHMgZnJvbSBmcmVlREIgd2hp
Y2ggd2UgaGF2ZSBub3QgeWV0CisJCQkgKiBkZWxldGVkLCBkZWxldGUgdGhlbSBhbmQgYW55IHdl
IHJlc2VydmVkIGZvciBtZV9wZ2hlYWQuCisJCQkgKi8KKwkJCXdoaWxlIChwZ2xhc3QgPCBlbnYt
Pm1lX3BnbGFzdCkgeworCQkJCXJjID0gbWRiX2N1cnNvcl9maXJzdCgmbWMsICZrZXksIE5VTEwp
OworCQkJCWlmIChyYykKKwkJCQkJcmV0dXJuIHJjOworCQkJCXBnbGFzdCA9IGhlYWRfaWQgPSAq
KHR4bmlkX3QgKilrZXkubXZfZGF0YTsKKwkJCQl0b3RhbF9yb29tID0gaGVhZF9yb29tID0gMDsK
KwkJCQltZGJfdGFzc2VydCh0eG4sIHBnbGFzdCA8PSBlbnYtPm1lX3BnbGFzdCk7CisJCQkJbWMu
bWNfZmxhZ3MgfD0gQ19SRUNMQUlNSU5HOworCQkJCXJjID0gbWRiX2N1cnNvcl9kZWwoJm1jLCAw
KTsKKwkJCQltYy5tY19mbGFncyAmPSB+Q19SRUNMQUlNSU5HOworCQkJCWlmIChyYykKKwkJCQkJ
cmV0dXJuIHJjOworCQkJfQorCQl9IGVsc2UgeworCQkJaWYgKHR4bi0+bXRfbGlmb19yZWNsYWlt
ZWQpIHsKKwkJCQl3aGlsZSgxKSB7CisJCQkJCWlmIChjbGVhbnVwX2lkeCA8IHR4bi0+bXRfbGlm
b19yZWNsYWltZWRbMF0pIHsKKwkJCQkJCXBnbGFzdCA9IHR4bi0+bXRfbGlmb19yZWNsYWltZWRb
KytjbGVhbnVwX2lkeF07CisJCQkJCX0gZWxzZSBpZiAoMCAmJiByZWZpbGxfaWR4ID4gMCkgewor
CQkJCQkJdG90YWxfcm9vbSA9IGhlYWRfcm9vbSA9IDA7CisJCQkJCQlwZ2xhc3QgPSB0eG4tPm10
X2xpZm9fcmVjbGFpbWVkW3JlZmlsbF9pZHgtLV07CisJCQkJCX0gZWxzZQorCQkJCQkJYnJlYWs7
CisJCQkJCWtleS5tdl9kYXRhID0gJnBnbGFzdDsKKwkJCQkJa2V5Lm12X3NpemUgPSBzaXplb2Yo
cGdsYXN0KTsKKwkJCQkJLyogVGhlIGdyZWF0IGFuc3dlciBpcyA0MiwgYW5kIHNlZW1zIHRvIGJl
IGVub3VnaCB0byBwcmV2ZW50IHNlYXJjaCBpbgorCQkJCQkgKiBtZGJfcGFnZV9hbGxvYygpIGR1
cmluZyBhIGRlbGV0aW5nLCB3aGVuIGZyZWVEQiB0cmVlIGlzIHVuYmFsYW5jZWQuICovCisJCQkJ
CXdoaWxlICghZW52LT5tZV9wZ2hlYWQgfHwgZW52LT5tZV9wZ2hlYWRbMF0gPCA0MikgeworCQkJ
CQkJaWYgKG1kYl9wYWdlX2FsbG9jKCZtYywgMCwgTlVMTCkpIHsKKwkJCQkJCQlyYyA9IG1kYl9w
YWdlX3NlYXJjaCgmbWMsICZrZXksIE1EQl9QU19NT0RJRlkpOworCQkJCQkJCWlmIChyYyAmJiBy
YyAhPSBNREJfTk9URk9VTkQpCisJCQkJCQkJCWdvdG8gYmFsbG91dDsKKwkJCQkJCQlicmVhazsK
KwkJCQkJCX0KKwkJCQkJfQorCQkJCQlyYyA9IG1kYl9jdXJzb3JfZ2V0KCZtYywgJmtleSwgTlVM
TCwgTURCX1NFVCk7CisJCQkJCWlmIChyYyAmJiByYyAhPSBNREJfTk9URk9VTkQpCisJCQkJCQln
b3RvIGJhbGxvdXQ7CisJCQkJCW1jLm1jX2ZsYWdzIHw9IENfUkVDTEFJTUlORzsKKwkJCQkJcmMg
PSBtZGJfY3Vyc29yX2RlbCgmbWMsIDApOworCQkJCQltYy5tY19mbGFncyAmPSB+Q19SRUNMQUlN
SU5HOworCQkJCQlpZiAocmMpCisJCQkJCQlnb3RvIGJhbGxvdXQ7CisJCQkJfQorCQkJfQogCQl9
CiAKIAkJLyogU2F2ZSB0aGUgSURMIG9mIHBhZ2VzIGZyZWVkIGJ5IHRoaXMgdHhuLCB0byBhIHNp
bmdsZSByZWNvcmQgKi8KQEAgLTI5NTQsNyArMzA4OCw3IEBAIG1kYl9mcmVlbGlzdF9zYXZlKE1E
Ql90eG4gKnR4bikKIAkJCQkvKiBNYWtlIHN1cmUgbGFzdCBwYWdlIG9mIGZyZWVEQiBpcyB0b3Vj
aGVkIGFuZCBvbiBmcmVlbGlzdCAqLwogCQkJCXJjID0gbWRiX3BhZ2Vfc2VhcmNoKCZtYywgTlVM
TCwgTURCX1BTX0xBU1R8TURCX1BTX01PRElGWSk7CiAJCQkJaWYgKHJjICYmIHJjICE9IE1EQl9O
T1RGT1VORCkKLQkJCQkJcmV0dXJuIHJjOworCQkJCQlnb3RvIGJhbGxvdXQ7CiAJCQl9CiAJCQlm
cmVlX3BncyA9IHR4bi0+bXRfZnJlZV9wZ3M7CiAJCQkvKiBXcml0ZSB0byBsYXN0IHBhZ2Ugb2Yg
ZnJlZURCICovCkBAIC0yOTY1LDcgKzMwOTksNyBAQCBtZGJfZnJlZWxpc3Rfc2F2ZShNREJfdHhu
ICp0eG4pCiAJCQkJZGF0YS5tdl9zaXplID0gTURCX0lETF9TSVpFT0YoZnJlZV9wZ3MpOwogCQkJ
CXJjID0gbWRiX2N1cnNvcl9wdXQoJm1jLCAma2V5LCAmZGF0YSwgTURCX1JFU0VSVkUpOwogCQkJ
CWlmIChyYykKLQkJCQkJcmV0dXJuIHJjOworCQkJCQlnb3RvIGJhbGxvdXQ7CiAJCQkJLyogUmV0
cnkgaWYgbXRfZnJlZV9wZ3NbXSBncmV3IGR1cmluZyB0aGUgUHV0KCkgKi8KIAkJCQlmcmVlX3Bn
cyA9IHR4bi0+bXRfZnJlZV9wZ3M7CiAJCQl9IHdoaWxlIChmcmVlY250IDwgZnJlZV9wZ3NbMF0p
OwpAQCAtMjk4Niw2ICszMTIwLDkgQEAgbWRiX2ZyZWVsaXN0X3NhdmUoTURCX3R4biAqdHhuKQog
CQltb3AgPSBlbnYtPm1lX3BnaGVhZDsKIAkJbW9wX2xlbiA9IChtb3AgPyBtb3BbMF0gOiAwKSAr
IHR4bi0+bXRfbG9vc2VfY291bnQ7CiAKKwkJaWYgKG1vcF9sZW4gJiYgcmVmaWxsX2lkeCA9PSAw
KQorCQkJcmVmaWxsX2lkeCA9IDE7CisKIAkJLyogUmVzZXJ2ZSByZWNvcmRzIGZvciBtZV9wZ2hl
YWRbXS4gU3BsaXQgaXQgaWYgbXVsdGktcGFnZSwKIAkJICogdG8gYXZvaWQgc2VhcmNoaW5nIGZy
ZWVEQiBmb3IgYSBwYWdlIHJhbmdlLiBVc2Uga2V5cyBpbgogCQkgKiByYW5nZSBbMSxtZV9wZ2xh
c3RdOiBTbWFsbGVyIHRoYW4gdHhuaWQgb2Ygb2xkZXN0IHJlYWRlci4KQEAgLTI5OTYsOCArMzEz
MywzOCBAQCBtZGJfZnJlZWxpc3Rfc2F2ZShNREJfdHhuICp0eG4pCiAJCX0gZWxzZSBpZiAoaGVh
ZF9yb29tID49IG1heGZyZWVfMXBnICYmIGhlYWRfaWQgPiAxKSB7CiAJCQkvKiBLZWVwIGN1cnJl
bnQgcmVjb3JkIChvdmVyZmxvdyBwYWdlKSwgYWRkIGEgbmV3IG9uZSAqLwogCQkJaGVhZF9pZC0t
OworCQkJcmVmaWxsX2lkeCsrOwogCQkJaGVhZF9yb29tID0gMDsKIAkJfQorCisJCWlmIChsaWZv
KSB7CisJCQlpZiAocmVmaWxsX2lkeCA+ICh0eG4tPm10X2xpZm9fcmVjbGFpbWVkID8gdHhuLT5t
dF9saWZvX3JlY2xhaW1lZFswXSA6IDApKSB7CisJCQkJcmMgPSBtZGJfcGFnZV9hbGxvYygmbWMs
IDAsIE5VTEwpOworCQkJCWlmICghIHJjKQorCQkJCQljb250aW51ZTsKKwkJCQlpZiAocmMgIT0g
TURCX05PVEZPVU5EKQorCQkJCQlnb3RvIGJhbGxvdXQ7CisKKwkJCQlpZiAoZW52LT5tZV9wZ2xh
c3QgPCAxKSB7CisJCQkJCXJjID0gTURCX01BUF9GVUxMOworCQkJCQlnb3RvIGJhbGxvdXQ7CisJ
CQkJfQorCisJCQkJaWYgKCEgdHhuLT5tdF9saWZvX3JlY2xhaW1lZCkgeworCQkJCQl0eG4tPm10
X2xpZm9fcmVjbGFpbWVkID0gbWRiX21pZGxfYWxsb2MoZW52LT5tZV9tYXhmcmVlXzFwZyk7CisJ
CQkJCWlmICghIHR4bi0+bXRfbGlmb19yZWNsYWltZWQpIHsKKwkJCQkJCXJjID0gRU5PTUVNOwor
CQkJCQkJZ290byBiYWxsb3V0OworCQkJCQl9CisJCQkJfQorCQkJCXJjID0gbWRiX21pZGxfYXBw
ZW5kKCZ0eG4tPm10X2xpZm9fcmVjbGFpbWVkLCAtLWVudi0+bWVfcGdsYXN0KTsKKwkJCQlpZiAo
cmMpCisJCQkJCWdvdG8gYmFsbG91dDsKKwkJCQkrK2NsZWFudXBfaWR4OworCQkJfQorCQkJaGVh
ZF9pZCA9IHR4bi0+bXRfbGlmb19yZWNsYWltZWRbcmVmaWxsX2lkeF07CisJCX0KKwogCQkvKiAo
UmUpd3JpdGUge2tleSA9IGhlYWRfaWQsIElETCBsZW5ndGggPSBoZWFkX3Jvb219ICovCiAJCXRv
dGFsX3Jvb20gLT0gaGVhZF9yb29tOwogCQloZWFkX3Jvb20gPSBtb3BfbGVuIC0gdG90YWxfcm9v
bTsKQEAgLTMwMDgsMTMgKzMxNzUsMTQgQEAgbWRiX2ZyZWVsaXN0X3NhdmUoTURCX3R4biAqdHhu
KQogCQl9IGVsc2UgaWYgKGhlYWRfcm9vbSA8IDApIHsKIAkJCS8qIFJhcmUgY2FzZSwgbm90IGJv
dGhlcmluZyB0byBkZWxldGUgdGhpcyByZWNvcmQgKi8KIAkJCWhlYWRfcm9vbSA9IDA7CisJCQlj
b250aW51ZTsKIAkJfQogCQlrZXkubXZfc2l6ZSA9IHNpemVvZihoZWFkX2lkKTsKIAkJa2V5Lm12
X2RhdGEgPSAmaGVhZF9pZDsKIAkJZGF0YS5tdl9zaXplID0gKGhlYWRfcm9vbSArIDEpICogc2l6
ZW9mKHBnbm9fdCk7CiAJCXJjID0gbWRiX2N1cnNvcl9wdXQoJm1jLCAma2V5LCAmZGF0YSwgTURC
X1JFU0VSVkUpOwogCQlpZiAocmMpCi0JCQlyZXR1cm4gcmM7CisJCQlnb3RvIGJhbGxvdXQ7CiAJ
CS8qIElETCBpcyBpbml0aWFsbHkgZW1wdHksIHplcm8gb3V0IGF0IGxlYXN0IHRoZSBsZW5ndGgg
Ki8KIAkJcGdzID0gKHBnbm9fdCAqKWRhdGEubXZfZGF0YTsKIAkJaiA9IGhlYWRfcm9vbSA+IGNs
ZWFuX2xpbWl0ID8gaGVhZF9yb29tIDogMDsKQEAgLTMwMzMsNyArMzIwMSw3IEBAIG1kYl9mcmVl
bGlzdF9zYXZlKE1EQl90eG4gKnR4bikKIAkJTURCX0lETCBsb29zZTsKIAkJLyogUm9vbSBmb3Ig
bG9vc2UgcGFnZXMgKyB0ZW1wIElETCB3aXRoIHNhbWUgKi8KIAkJaWYgKChyYyA9IG1kYl9taWRs
X25lZWQoJmVudi0+bWVfcGdoZWFkLCAyKmNvdW50KzEpKSAhPSAwKQotCQkJcmV0dXJuIHJjOwor
CQkJZ290byBiYWxsb3V0OwogCQltb3AgPSBlbnYtPm1lX3BnaGVhZDsKIAkJbG9vc2UgPSBtb3Ag
KyBNREJfSURMX0FMTE9DTEVOKG1vcCkgLSBjb3VudDsKIAkJZm9yIChjb3VudCA9IDA7IG1wOyBt
cCA9IE5FWFRfTE9PU0VfUEFHRShtcCkpCkBAIC0zMDUyLDI3ICszMjIwLDYxIEBAIG1kYl9mcmVl
bGlzdF9zYXZlKE1EQl90eG4gKnR4bikKIAkJTURCX3ZhbCBrZXksIGRhdGE7CiAKIAkJbW9wICs9
IG1vcF9sZW47Ci0JCXJjID0gbWRiX2N1cnNvcl9maXJzdCgmbWMsICZrZXksICZkYXRhKTsKLQkJ
Zm9yICg7ICFyYzsgcmMgPSBtZGJfY3Vyc29yX25leHQoJm1jLCAma2V5LCAmZGF0YSwgTURCX05F
WFQpKSB7Ci0JCQl0eG5pZF90IGlkID0gKih0eG5pZF90ICopa2V5Lm12X2RhdGE7Ci0JCQlzc2l6
ZV90CWxlbiA9IChzc2l6ZV90KShkYXRhLm12X3NpemUgLyBzaXplb2YoTURCX0lEKSkgLSAxOwor
CQlpZiAoISBsaWZvKSB7CisJCQlyYyA9IG1kYl9jdXJzb3JfZmlyc3QoJm1jLCAma2V5LCAmZGF0
YSk7CisJCQlpZiAocmMpCisJCQkJZ290byBiYWxsb3V0OworCQl9CisKKwkJZm9yKDs7KSB7CisJ
CQl0eG5pZF90IGlkOworCQkJc3NpemVfdAlsZW47CiAJCQlNREJfSUQgc2F2ZTsKIAotCQkJbWRi
X3Rhc3NlcnQodHhuLCBsZW4gPj0gMCAmJiBpZCA8PSBlbnYtPm1lX3BnbGFzdCk7Ci0JCQlrZXku
bXZfZGF0YSA9ICZpZDsKLQkJCWlmIChsZW4gPiBtb3BfbGVuKSB7Ci0JCQkJbGVuID0gbW9wX2xl
bjsKLQkJCQlkYXRhLm12X3NpemUgPSAobGVuICsgMSkgKiBzaXplb2YoTURCX0lEKTsKKwkJCWlm
ICghIGxpZm8pIHsKKwkJCQlpZCA9ICoodHhuaWRfdCAqKWtleS5tdl9kYXRhOworCQkJCW1kYl90
YXNzZXJ0KHR4biwgaWQgPD0gZW52LT5tZV9wZ2xhc3QpOworCQkJfSBlbHNlIHsKKwkJCQltZGJf
dGFzc2VydCh0eG4sIHJlZmlsbF9pZHggPiAwICYmIHJlZmlsbF9pZHggPD0gdHhuLT5tdF9saWZv
X3JlY2xhaW1lZFswXSk7CisJCQkJaWQgPSB0eG4tPm10X2xpZm9fcmVjbGFpbWVkW3JlZmlsbF9p
ZHgtLV07CisJCQkJa2V5Lm12X2RhdGEgPSAmaWQ7CisJCQkJa2V5Lm12X3NpemUgPSBzaXplb2Yo
aWQpOworCQkJCXJjID0gbWRiX2N1cnNvcl9nZXQoJm1jLCAma2V5LCAmZGF0YSwgTURCX1NFVCk7
CisJCQkJaWYgKHJjKQorCQkJCQlnb3RvIGJhbGxvdXQ7CiAJCQl9CisKKwkJCWxlbiA9IChzc2l6
ZV90KShkYXRhLm12X3NpemUgLyBzaXplb2YoTURCX0lEKSkgLSAxOworCQkJbWRiX3Rhc3NlcnQo
dHhuLCBsZW4gPj0gMCk7CisJCQlpZiAobGVuID4gbW9wX2xlbikKKwkJCQlsZW4gPSBtb3BfbGVu
OworCQkJZGF0YS5tdl9zaXplID0gKGxlbiArIDEpICogc2l6ZW9mKE1EQl9JRCk7CisJCQlrZXku
bXZfZGF0YSA9ICZpZDsKKwkJCWtleS5tdl9zaXplID0gc2l6ZW9mKGlkKTsKIAkJCWRhdGEubXZf
ZGF0YSA9IG1vcCAtPSBsZW47CisKIAkJCXNhdmUgPSBtb3BbMF07CiAJCQltb3BbMF0gPSBsZW47
CiAJCQlyYyA9IG1kYl9jdXJzb3JfcHV0KCZtYywgJmtleSwgJmRhdGEsIE1EQl9DVVJSRU5UKTsK
IAkJCW1vcFswXSA9IHNhdmU7CiAJCQlpZiAocmMgfHwgIShtb3BfbGVuIC09IGxlbikpCi0JCQkJ
YnJlYWs7CisJCQkJZ290byBiYWxsb3V0OworCisJCQlpZiAoISBsaWZvKSB7CisJCQkJcmMgPSBt
ZGJfY3Vyc29yX25leHQoJm1jLCAma2V5LCAmZGF0YSwgTURCX05FWFQpOworCQkJCWlmIChyYykK
KwkJCQkJZ290byBiYWxsb3V0OworCQkJfQogCQl9CiAJfQorCitiYWxsb3V0OgorCWlmICh0eG4t
Pm10X2xpZm9fcmVjbGFpbWVkKSB7CisJCW1kYl90YXNzZXJ0KHR4biwgcmMgIT0gMCB8fCBjbGVh
bnVwX2lkeCA9PSB0eG4tPm10X2xpZm9fcmVjbGFpbWVkWzBdKTsKKwkJbWRiX21pZGxfZnJlZSh0
eG4tPm10X2xpZm9fcmVjbGFpbWVkKTsKKwkJdHhuLT5tdF9saWZvX3JlY2xhaW1lZCA9IE5VTEw7
CisJfQorCiAJcmV0dXJuIHJjOwogfQogCkBAIC0zMjY1LDYgKzM0NjcsMTggQEAgbWRiX3R4bl9j
b21taXQoTURCX3R4biAqdHhuKQogCQlNREJfSURMIHBzcGlsbDsKIAkJdW5zaWduZWQgeCwgeSwg
bGVuLCBwc19sZW47CiAKKwkJLyogQXBwZW5kIG91ciByZWNsYWltIGxpc3QgdG8gcGFyZW50J3Mg
Ki8KKwkJaWYgKHR4bi0+bXRfbGlmb19yZWNsYWltZWQpIHsKKwkJCWlmIChwYXJlbnQtPm10X2xp
Zm9fcmVjbGFpbWVkKSB7CisJCQkJcmMgPSBtZGJfbWlkbF9hcHBlbmRfbGlzdCgmcGFyZW50LT5t
dF9saWZvX3JlY2xhaW1lZCwgdHhuLT5tdF9saWZvX3JlY2xhaW1lZCk7CisJCQkJaWYgKHJjKQor
CQkJCQlnb3RvIGZhaWw7CisJCQkJbWRiX21pZGxfZnJlZSh0eG4tPm10X2xpZm9fcmVjbGFpbWVk
KTsKKwkJCX0gZWxzZQorCQkJCXBhcmVudC0+bXRfbGlmb19yZWNsYWltZWQgPSB0eG4tPm10X2xp
Zm9fcmVjbGFpbWVkOworCQkJdHhuLT5tdF9saWZvX3JlY2xhaW1lZCA9IE5VTEw7CisJCX0KKwog
CQkvKiBBcHBlbmQgb3VyIGZyZWUgbGlzdCB0byBwYXJlbnQncyAqLwogCQlyYyA9IG1kYl9taWRs
X2FwcGVuZF9saXN0KCZwYXJlbnQtPm10X2ZyZWVfcGdzLCB0eG4tPm10X2ZyZWVfcGdzKTsKIAkJ
aWYgKHJjKQpAQCAtNDQ1NSw5ICs0NjY5LDkgQEAgZmFpbDoKIAkgKglhdCBydW50aW1lLiBDaGFu
Z2luZyBvdGhlciBmbGFncyByZXF1aXJlcyBjbG9zaW5nIHRoZQogCSAqCWVudmlyb25tZW50IGFu
ZCByZS1vcGVuaW5nIGl0IHdpdGggdGhlIG5ldyBmbGFncy4KIAkgKi8KLSNkZWZpbmUJQ0hBTkdF
QUJMRQkoTURCX05PU1lOQ3xNREJfTk9NRVRBU1lOQ3xNREJfTUFQQVNZTkN8TURCX05PTUVNSU5J
VCkKKyNkZWZpbmUJQ0hBTkdFQUJMRQkoTURCX05PU1lOQ3xNREJfTk9NRVRBU1lOQ3xNREJfTUFQ
QVNZTkN8TURCX05PTUVNSU5JVHxNREJfQ09BTEVTQ0UpCiAjZGVmaW5lCUNIQU5HRUxFU1MJKE1E
Ql9GSVhFRE1BUHxNREJfTk9TVUJESVJ8TURCX1JET05MWXxNREJfV1JJVEVNQVB8IFwKLQlNREJf
Tk9UTFN8TURCX05PTE9DS3xNREJfTk9SREFIRUFEKQorCU1EQl9OT1RMU3xNREJfTk9MT0NLfE1E
Ql9OT1JEQUhFQUR8TURCX0xJRk9SRUNMQUlNKQogCiAjaWYgVkFMSURfRkxBR1MgJiBQRVJTSVNU
RU5UX0ZMQUdTICYgKENIQU5HRUFCTEV8Q0hBTkdFTEVTUykKICMgZXJyb3IgIlBlcnNpc3RlbnQg
REIgZmxhZ3MgJiBlbnYgZmxhZ3Mgb3ZlcmxhcCwgYnV0IGJvdGggZ28gaW4gbW1fZmxhZ3MiCi0t
IAoyLjEuMAoK
--f46d04138a6f6c03c2050477cd19
Content-Type: text/x-patch; charset=US-ASCII;
name="0008-FEATURE-lmdb-backend-support-config-for-lifo-and-coa.patch"
Content-Disposition: attachment;
filename="0008-FEATURE-lmdb-backend-support-config-for-lifo-and-coa.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0snhdum7
RnJvbSBiYjgzZTAzY2YxYjhiY2VlZTY0NTUwMjI5YzNiZWNiZGQ1NDAwNjgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWXVyaWV2IDxsZW9AeXVyaWV2LnJ1PgpEYXRlOiBGcmks
IDE5IFNlcCAyMDE0IDIwOjE4OjE3ICswNDAwClN1YmplY3Q6IFtQQVRDSCAwOC8xMV0gIEZFQVRV
UkUgLSBsbWRiLWJhY2tlbmQ6IHN1cHBvcnQgY29uZmlnIGZvciAnbGlmbycgYW5kCiAnY29hbGVz
Y2UnIGVudmZsYWdzLgoKLS0tCiBzZXJ2ZXJzL3NsYXBkL2JhY2stbWRiL2NvbmZpZy5jIHwgNiAr
KysrKysKIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zZXJ2
ZXJzL3NsYXBkL2JhY2stbWRiL2NvbmZpZy5jIGIvc2VydmVycy9zbGFwZC9iYWNrLW1kYi9jb25m
aWcuYwppbmRleCA5Zjg3ZmQ5Li5lMWI3ZGI0IDEwMDY0NAotLS0gYS9zZXJ2ZXJzL3NsYXBkL2Jh
Y2stbWRiL2NvbmZpZy5jCisrKyBiL3NlcnZlcnMvc2xhcGQvYmFjay1tZGIvY29uZmlnLmMKQEAg
LTEwNiw2ICsxMDYsMTIgQEAgc3RhdGljIHNsYXBfdmVyYm1hc2tzIG1kYl9lbnZmbGFnc1tdID0g
ewogCXsgQkVSX0JWQygid3JpdGVtYXAiKSwJTURCX1dSSVRFTUFQIH0sCiAJeyBCRVJfQlZDKCJt
YXBhc3luYyIpLAlNREJfTUFQQVNZTkMgfSwKIAl7IEJFUl9CVkMoIm5vcmRhaGVhZCIpLAlNREJf
Tk9SREFIRUFEIH0sCisjaWZkZWYgTURCX0xJRk9SRUNMQUlNCisJeyBCRVJfQlZDKCJsaWZvIiks
CQlNREJfTElGT1JFQ0xBSU0gfSwKKyNlbmRpZgorI2lmZGVmIE1EQl9DT0FMRVNDRQorCXsgQkVS
X0JWQygiY29hbGVzY2UiKSwJTURCX0NPQUxFU0NFIH0sCisjZW5kaWYKIAl7IEJFUl9CVk5VTEws
IDAgfQogfTsKIAotLSAKMi4xLjAKCg==
--f46d04138a6f6c03c2050477cd19
Content-Type: text/x-patch; charset=US-ASCII;
name="0009-BUGFIX-lmdb-volatile-to-important-fields-which.patch"
Content-Disposition: attachment;
filename="0009-BUGFIX-lmdb-volatile-to-important-fields-which.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0snhduu8
RnJvbSBhY2NlZjYyZGU3ZmU1NjYwZjg3MGY0YzVkYTMxOWEyYTgwOThiMmZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWXVyaWV2IDxsZW9AeXVyaWV2LnJ1PgpEYXRlOiBTdW4s
IDIxIFNlcCAyMDE0IDAyOjI5OjUwICswNDAwClN1YmplY3Q6IFtQQVRDSCAwOS8xMV0gIEJVR0ZJ
WCAtIGxtZGI6ICd2b2xhdGlsZScgdG8gaW1wb3J0YW50IGZpZWxkcywgd2hpY2ggIAogICAgICAg
ICAgbWF5IGJlIHVwZGF0ZWQgYnkgcmVhZGVycyBhc3luY2hyb25vdXNseS4KCiBXaXRob3V0ICd2
b2xhdGlsZScgY29tcGlsZXIgbWF5IGVsaW1pbmF0ZSBhIG1kYl9maW5kX29sZGVzdCgpIGNhbGxz
LgotLS0KIGxpYnJhcmllcy9saWJsbWRiL21kYi5jIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2Vk
LCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlicmFyaWVz
L2xpYmxtZGIvbWRiLmMgYi9saWJyYXJpZXMvbGlibG1kYi9tZGIuYwppbmRleCAwZmFmZWUyLi41
Yjg5OTA1IDEwMDY0NAotLS0gYS9saWJyYXJpZXMvbGlibG1kYi9tZGIuYworKysgYi9saWJyYXJp
ZXMvbGlibG1kYi9tZGIuYwpAQCAtNTgwLDExICs1ODAsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgTURC
X3J4Ym9keSB7CiAJICoJc3RhcnRlZCBmcm9tIHNvIHdlIGNhbiBhdm9pZCBvdmVyd3JpdGluZyBh
bnkgZGF0YSB1c2VkIGluIHRoYXQKIAkgKglwYXJ0aWN1bGFyIHZlcnNpb24uCiAJICovCi0JdHhu
aWRfdAkJbXJiX3R4bmlkOworCXZvbGF0aWxlIHR4bmlkX3QJbXJiX3R4bmlkOwogCS8qKiBUaGUg
cHJvY2VzcyBJRCBvZiB0aGUgcHJvY2VzcyBvd25pbmcgdGhpcyByZWFkZXIgdHhuLiAqLwotCU1E
Ql9QSURfVAltcmJfcGlkOworCXZvbGF0aWxlIE1EQl9QSURfVAltcmJfcGlkOwogCS8qKiBUaGUg
dGhyZWFkIElEIG9mIHRoZSB0aHJlYWQgb3duaW5nIHRoaXMgdHhuLiAqLwotCU1EQl9USFJfVAlt
cmJfdGlkOworCXZvbGF0aWxlIE1EQl9USFJfVAltcmJfdGlkOwogfSBNREJfcnhib2R5OwogCiAJ
LyoqIFRoZSBhY3R1YWwgcmVhZGVyIHJlY29yZCwgd2l0aCBjYWNoZWxpbmUgcGFkZGluZy4gKi8K
LS0gCjIuMS4wCgo=
--f46d04138a6f6c03c2050477cd19
Content-Type: text/x-patch; charset=US-ASCII;
name="0010-BUGFIX-lmdb-reordering-of-instructions-which-update-.patch"
Content-Disposition: attachment;
filename="0010-BUGFIX-lmdb-reordering-of-instructions-which-update-.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0snhdv39
RnJvbSA2MjQwYzMzNTBlOGJkODYzMzdjN2U0MTcyMmNmNmEzODg4MWYxNWU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWXVyaWV2IDxsZW9AeXVyaWV2LnJ1PgpEYXRlOiBGcmks
IDEyIFNlcCAyMDE0IDAxOjMyOjEzICswNDAwClN1YmplY3Q6IFtQQVRDSCAxMC8xMV0gIEJVR0ZJ
WCAtIGxtZGI6IHJlb3JkZXJpbmcgb2YgaW5zdHJ1Y3Rpb25zIHdoaWNoIHVwZGF0ZQogdGhlIHR4
biBpbiBhIG1ldGEtcGFnZS4KCiBXaXRob3V0ICJ2b2xhdGlsZSIgb3IgbWVtb3J5LWJhcnJpZXIg
Y29tcGlsZXIgbWF5IHJlb3JkZXIgaW5zdHJ1Y3Rpb25zCiBmb3IgdXBkYXRlIHRoZSAibW1fdHhu
aWQiIGZpZWxkIGluIG1ldGEtcGFnZSBpbiAid3JpdGVtYXAiIG1vZGUuCgogRnJvbSB0aGUgcmVh
ZGVyJ3MgcG9pbnQgb2YgdmlldyB0aGlzIGNhdXNlIGEgc2hvcnQKIHRpbWUgaW50ZXJ2YWwgd2hl
biB0aGUgdHJhbnNhY3Rpb24gaXMgY29ycnVwdGVkLgotLS0KIGxpYnJhcmllcy9saWJsbWRiL21k
Yi5jIHwgNiArKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRp
b24oLSkKCmRpZmYgLS1naXQgYS9saWJyYXJpZXMvbGlibG1kYi9tZGIuYyBiL2xpYnJhcmllcy9s
aWJsbWRiL21kYi5jCmluZGV4IDViODk5MDUuLjY0NTllYzcgMTAwNjQ0Ci0tLSBhL2xpYnJhcmll
cy9saWJsbWRiL21kYi5jCisrKyBiL2xpYnJhcmllcy9saWJsbWRiL21kYi5jCkBAIC05MDgsNyAr
OTA4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTURCX21ldGEgewogCS8qKiBBbnkgcGVyc2lzdGVudCBl
bnZpcm9ubWVudCBmbGFncy4gQHJlZiBtZGJfZW52ICovCiAjZGVmaW5lCW1tX2ZsYWdzCW1tX2Ri
c1swXS5tZF9mbGFncwogCXBnbm9fdAkJbW1fbGFzdF9wZzsJCQkvKio8IGxhc3QgdXNlZCBwYWdl
IGluIGZpbGUgKi8KLQl0eG5pZF90CQltbV90eG5pZDsJCQkvKio8IHR4bmlkIHRoYXQgY29tbWl0
dGVkIHRoaXMgcGFnZSAqLworCXZvbGF0aWxlIHR4bmlkX3QgbW1fdHhuaWQ7CQkJLyoqPCB0eG5p
ZCB0aGF0IGNvbW1pdHRlZCB0aGlzIHBhZ2UgKi8KIH0gTURCX21ldGE7CiAKIAkvKiogQnVmZmVy
IGZvciBhIHN0YWNrLWFsbG9jYXRlZCBtZXRhIHBhZ2UuCkBAIC0zODMzLDYgKzM4MzMsMTAgQEAg
bWRiX2Vudl93cml0ZV9tZXRhKE1EQl90eG4gKnR4biwgaW50IGZvcmNlKQogCQltcC0+bW1fZGJz
WzBdID0gdHhuLT5tdF9kYnNbMF07CiAJCW1wLT5tbV9kYnNbMV0gPSB0eG4tPm10X2Ric1sxXTsK
IAkJbXAtPm1tX2xhc3RfcGcgPSB0eG4tPm10X25leHRfcGdubyAtIDE7CisjaWYgIShkZWZpbmVk
KF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pKQor
CQkvKiBMWTogaXNzdWUgYSBtZW1vcnkgYmFycmllciwgaWYgbm90IHg4Ni4gKi8KKwkJX19zeW5j
X3N5bmNocm9uaXplKCk7CisjZW5kaWYKIAkJbXAtPm1tX3R4bmlkID0gdHhuLT5tdF90eG5pZDsK
IAkJaWYgKGZvcmNlIHx8ICEoZW52LT5tZV9mbGFncyAmIChNREJfTk9NRVRBU1lOQ3xNREJfTk9T
WU5DKSkpIHsKIAkJCXVuc2lnbmVkIG1ldGFfc2l6ZSA9IGVudi0+bWVfcHNpemU7Ci0tIAoyLjEu
MAoK
--f46d04138a6f6c03c2050477cd19
Content-Type: text/x-patch; charset=US-ASCII;
name="0011-BUGFIX-lmdb-lock-meta-pages-in-writemap-mode-to-avoi.patch"
Content-Disposition: attachment;
filename="0011-BUGFIX-lmdb-lock-meta-pages-in-writemap-mode-to-avoi.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i0snhdve10
RnJvbSA4NDEwNTkzMzBmZDQ0NzY5ZTkzZWI0YjkzN2MzY2U0MjY1NGZhZDZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWXVyaWV2IDxsZW9AeXVyaWV2LnJ1PgpEYXRlOiBTYXQs
IDIwIFNlcCAyMDE0IDA3OjE2OjE1ICswNDAwClN1YmplY3Q6IFtQQVRDSCAxMS8xMV0gIEJVR0ZJ
WCAtIGxtZGI6IGxvY2sgbWV0YS1wYWdlcyBpbiB3cml0ZW1hcC1tb2RlIHRvCiBhdm9pZCB1bmV4
cGVjdGVkIHdyaXRlLCAgICAgICAgICAgIGJlZm9yZSB0aGUgZGF0YSBwYWdlcyB3b3VsZCBiZQog
c3luY2hyb25pemVkLgoKIFdpdGhvdXQgbG9ja2luZyB0aGUgbWV0YS1wYWdlcyBtYXkgYmUgd3Jp
dGVuIGJ5IE9TIGJlZm9yZSBvdGhlciBkYXRhLAogaW4gdGhpcyBjYXNlIGRhdGFiYXNlIHdvdWxk
IGJlIGluY29uc2lzdGVudC4KLS0tCiBsaWJyYXJpZXMvbGlibG1kYi9tZGIuYyB8IDEwICsrKysr
KysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGli
cmFyaWVzL2xpYmxtZGIvbWRiLmMgYi9saWJyYXJpZXMvbGlibG1kYi9tZGIuYwppbmRleCA2NDU5
ZWM3Li4xOTI1MWExIDEwMDY0NAotLS0gYS9saWJyYXJpZXMvbGlibG1kYi9tZGIuYworKysgYi9s
aWJyYXJpZXMvbGlibG1kYi9tZGIuYwpAQCAtNDA0NCw2ICs0MDQ0LDE2IEBAIG1kYl9lbnZfbWFw
KE1EQl9lbnYgKmVudiwgdm9pZCAqYWRkcikKIAllbnYtPm1lX21ldGFzWzBdID0gTUVUQURBVEEo
cCk7CiAJZW52LT5tZV9tZXRhc1sxXSA9IChNREJfbWV0YSAqKSgoY2hhciAqKWVudi0+bWVfbWV0
YXNbMF0gKyBlbnYtPm1lX3BzaXplKTsKIAorCS8qIExvY2sgbWV0YSBwYWdlcyB0byBhdm9pZCB1
bmV4cGVjdGVkIHdyaXRlLAorCSAqICBiZWZvcmUgdGhlIGRhdGEgcGFnZXMgd291bGQgYmUgc3lu
Y2hyb25pemVkLiAqLworI2lmZGVmIF9XSU4zMgorCWlmICgoZmxhZ3MgJiBNREJfV1JJVEVNQVAp
ICYmICFWaXJ0dWFsTG9jayhlbnYtPm1lX21hcCwgZW52LT5tZV9wc2l6ZSAqIDIpKQorCQlyZXR1
cm4gRXJyQ29kZSgpOworI2Vsc2UKKwlpZiAoKGZsYWdzICYgTURCX1dSSVRFTUFQKSAmJiBtbG9j
ayhlbnYtPm1lX21hcCwgZW52LT5tZV9wc2l6ZSAqIDIpKQorCQlyZXR1cm4gRXJyQ29kZSgpOwor
I2VuZGlmIC8qIF9XSU4zMiAqLworCiAJcmV0dXJuIE1EQl9TVUNDRVNTOwogfQogCi0tIAoyLjEu
MAoK
--f46d04138a6f6c03c2050477cd19--