From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f750.i.mail.ru (f750.i.mail.ru [128.140.169.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id CD549446439 for ; Thu, 1 Oct 2020 21:35:20 +0300 (MSK) From: =?UTF-8?B?SWx5YSBLb3NhcmV2?= MIME-Version: 1.0 Date: Thu, 01 Oct 2020 21:35:19 +0300 Reply-To: =?UTF-8?B?SWx5YSBLb3NhcmV2?= Message-ID: <1601577319.682765239@f750.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--fD03104f99043Af0c5Ed7b99440FaD351601577319" In-Reply-To: <20201001114744.yxzei3orpoqoji2k@tkn_work_nb> References: <20200926215307.15808-1-i.kosarev@tarantool.org> <20201001114744.yxzei3orpoqoji2k@tkn_work_nb> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_v2=5D_key=5Fdef=3A_support?= =?utf-8?q?_composite_types_extraction?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?QWxleGFuZGVyIFR1cmVua28=?= Cc: tarantool-patches@dev.tarantool.org ----ALT--fD03104f99043Af0c5Ed7b99440FaD351601577319 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpIQoKU2VudCB2MyBjb25zaWRlcmluZyB5b3VyIGNvbW1lbnRzIGZvciBBbGV4YW5kZXIgTC4g dG8gcmV2aWV3IGl0LiAKPtCn0LXRgtCy0LXRgNCzLCAxINC+0LrRgtGP0LHRgNGPIDIwMjAsIDE0 OjQ3ICswMzowMCDQvtGCIEFsZXhhbmRlciBUdXJlbmtvIDxhbGV4YW5kZXIudHVyZW5rb0B0YXJh bnRvb2wub3JnPjoKPsKgCj5MR1RNLgo+Cj5JIHNlZSBhIGJpdCBkaWZmZXJlbnQgd2F5IHRvIGRv IHRoZSBzYW1lLCBidXQgSSBkb24ndCBrbm93IHdoZXRoZXIgaXQgaXMKPmJldHRlci4gU28gSSB3 b3VsZCBzYXkgdGhhdCBib3RoIHdheXMgYXJlIG9rYXkgZm9yIG1lLCBidXQgaXQgd291bGQgYmUK Pmdvb2QgaWYgc29tZW9uZSBvdGhlciB3b3VsZCBsb29rIGludG8gdGhpcyBkaXNjdXNzaW9uIHRv by4gSSBob3BlCj5BbGV4YW5kZXIgTC4gd2lsbCBkby4KPgo+U2VlIGFsc28gdGhlIGNvbW1lbnQg cmVnYXJkaW5nIHRoZSBkdWJpb3VzIHRlc3QgY2FzZS4KPgo+V0JSLCBBbGV4YW5kZXIgVHVyZW5r by4KPgo+PiArIC8qKgo+PiArICogRmlyc3QgcGFydCB0eXBlIG5vdCBzdXBwb3J0ZWQgZm9yIGNv bXBhcmlzb24uCj4+ICsgKiBWYWxpZCBpZiBrZXlfZGVmIGRvZXMgbm90IHN1cHBvcnQgY29tcGFy aXNvbgo+PiArICogKGtleV9kZWYtPnR1cGxlX2NvbXBhcmUqID09IE5VTEwpLCB1bmRlZmluZWQg b3RoZXdpc2UuCj4KPkkgd291bGQgc2V0IGl0IHRvIGZpZWxkX3R5cGVfTUFYIGluIHRoZSBjYXNl LCBidXQgbWF5YmUgaXQgaXMganVzdCBteQo+ZmVhciBvZiB1bmRlZmluZWQgdmFsdWVzLgo+Cj4+ ICsgKi8KPj4gKyBlbnVtIGZpZWxkX3R5cGUgdW5zdXBwb3J0ZWRfdHlwZTsKPgo+SSBzZWUgdGhl IGFsdGVybmF0aXZlIChidXQgSSBkb24ndCBrbm93IHdoZXRoZXIgaXQgaXMgYmV0dGVyKS4gV2Ug Y2FuCj53cmFwIHRoZSBsb29wIGludG8gYSBmdW5jdGlvbiBhbmQgdXNlIGl0IGRpcmVjdGx5IG9u IHRoZSBlcnJvciBwYXRoCj4od2hlbiBrZXlfZGVmLT50dXBsZV9jb21wYXJlIG9yIGtleV9kZWYt PnR1cGxlX2NvbXBhcmVfd2l0aF9rZXkgaXMgTlVMTCkKPnRvIG9idGFpbiBhbiBlcnJvciBtZXNz YWdlLiBBIHBlcmZvcm1hbmNlIG9mIHRoZSBlcnJvciBwYXRoIGlzIG5vdAo+aW1wb3J0YW50IEkg Z3Vlc3MuIFRoaXMgd2F5IHdlJ2xsIG5vdCBuZWVkIHRoZSBleHRyYSBmaWVsZCBpbiA8c3RydWN0 Cj5rZXlfZGVmPi4KUmlnaHQsIGkgdGhpbmsgaXQgaXPCoGEgZ29vZCBpZGVhLiBEaWRu4oCZdCB0 aGluayB0aGF0IHdlIGNhbiBqdXN0IGRvIGl0IG9uIHRoZSBlcnJvciBwYXRoLgpJIHdpbGwgaW1w bGVtZW50IGl0IHRoaXMgd2F5LCBidXQgd2l0aG91dCBleHRyYSBkaWFnX3NldCgpLgo+Cj5Vbmxp a2VseSB3ZSdsbCBjcmVhdGUgYSBsb3Qgb2Yga2V5X2RlZnMsIHNvIHRoZSBxdWVzdGlvbiBpcyBw dXJlbHkgaG93Cj50aGUgY29kZSB3b3VsZCBsb29rIGJldHRlci4gQSBmaWVsZCBqdXN0IHRvIHBh c3MgaXQgdG8gYW4gZXJyb3IgbWVzc2FnZQo+aXMgYSBiaXQgYXJ0aWZpY2lhbCB0aGluZywgSU1I Ty4KPgo+TGV0IHRoZSBjaGVjayBmdW5jdGlvbiAoa2V5X2RlZl9oYXNfY29tcGFyYXRvcigpIG9y IHNvKSB0byBzZXQgdGhlCj5kaWFnbm9zdGljcyBhbmQgc28gdGhlIGNoZWNraW5nIGNvZGUgYW5k IHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4gZXJyb3IKPm1lc3NhZ2Ugd2lsbCBiZSBpbiBvbmUgcGxh Y2UuIFRoZSB1c2FnZSB3b3VsZCBiZSBsaWtlIHNvOgo+Cj5JbiBrZXlfZGVmX3NldF9jb21wYXJl X2Z1bmMoKToKPgo+wqB8IGlmICghIGtleV9kZWZfaGFzX2NvbXBhcmF0b3IoZGVmKSkgewo+wqB8 IGRlZi0+dHVwbGVfY29tcGFyZSA9IE5VTEw7Cj7CoHwgZGVmLT50dXBsZV9jb21wYXJlX3dpdGhf a2V5ID0gTlVMTDsKPsKgfCB9Cj4KPkluIGxib3hfa2V5X2RlZl9jb21wYXJlKCk6Cj4KPsKgfCBp ZiAoa2V5X2RlZi0+dHVwbGVfY29tcGFyZSA9PSBOVUxMKSB7Cj7CoHwgLyogSnVzdCB0byBzZXQg YW4gZXJyb3IgdG8gdGhlIGRpYWdub3N0aWNzIGFyZWEuICovCj7CoHwgaW50IHJjID0ga2V5X2Rl Zl9oYXNfY29tcGFyYXRvcihrZXlfZGVmKTsKPsKgfCAodm9pZCkgcmM7Cj7CoHwgYXNzZXJ0KHJj ICE9IDApOwo+wqB8IHJldHVybiBsdWFUX2Vycm9yKEwpOwo+wqB8IH0KPgo+QnV0IEknbGwgcmVw ZWF0OiBJIGRvbid0IGtub3cgd2hldGhlciBpdCB3b3J0aCB0byBkby4gRmVlbCBmcmVlIHRvCj5p Z25vcmUuCj4KPj4gKyBpZiAoa2V5X2RlZi0+dHVwbGVfY29tcGFyZSA9PSBOVUxMKSB7Cj4+ICsg ZGlhZ19zZXQoSWxsZWdhbFBhcmFtcywgIlVuc3VwcG9ydGVkIGZpZWxkIHR5cGU6ICVzIiwKPj4g KyBmaWVsZF90eXBlX3N0cnNba2V5X2RlZi0+dW5zdXBwb3J0ZWRfdHlwZV0pOwo+PiArIHJldHVy biBsdWFUX2Vycm9yKEwpOwo+PiArIH0KPj4gKwo+PiBzdHJ1Y3QgdHVwbGUgKnR1cGxlX2EsICp0 dXBsZV9iOwo+PiBpZiAoKHR1cGxlX2EgPSBsdWFUX2tleV9kZWZfY2hlY2tfdHVwbGUoTCwga2V5 X2RlZiwgMikpID09IE5VTEwpCj4+IHJldHVybiBsdWFUX2Vycm9yKEwpOwo+PiBAQCAtMzQ5LDYg KzM0MywxMiBAQCBsYm94X2tleV9kZWZfY29tcGFyZV93aXRoX2tleShzdHJ1Y3QgbHVhX1N0YXRl ICpMKQo+PiAiY29tcGFyZV93aXRoX2tleSh0dXBsZSwga2V5KSIpOwo+PiB9Cj4+Cj4+ICsgaWYg KGtleV9kZWYtPnR1cGxlX2NvbXBhcmVfd2l0aF9rZXkgPT0gTlVMTCkgewo+PiArIGRpYWdfc2V0 KElsbGVnYWxQYXJhbXMsICJVbnN1cHBvcnRlZCBmaWVsZCB0eXBlOiAlcyIsCj4+ICsgZmllbGRf dHlwZV9zdHJzW2tleV9kZWYtPnVuc3VwcG9ydGVkX3R5cGVdKTsKPj4gKyByZXR1cm4gbHVhVF9l cnJvcihMKTsKPj4gKyB9Cj4+ICsKPj4gc3RydWN0IHR1cGxlICp0dXBsZSA9IGx1YVRfa2V5X2Rl Zl9jaGVja190dXBsZShMLCBrZXlfZGVmLCAyKTsKPj4gaWYgKHR1cGxlID09IE5VTEwpCj4+IHJl dHVybiBsdWFUX2Vycm9yKEwpOwo+Cj4oTGVmdCBoZXJlIGZvciBjb250ZXh0LikKPgo+PiBkaWZm IC0tZ2l0IGEvc3JjL2JveC90dXBsZV9jb21wYXJlLmNjIGIvc3JjL2JveC90dXBsZV9jb21wYXJl LmNjCj4+IGluZGV4IGQwNTljNzA5Zi4uNzYyYmM4MDE5IDEwMDY0NAo+PiAtLS0gYS9zcmMvYm94 L3R1cGxlX2NvbXBhcmUuY2MKPj4gKysrIGIvc3JjL2JveC90dXBsZV9jb21wYXJlLmNjCj4+IEBA IC0yMDgxLDUgKzIwODEsMTYgQEAga2V5X2RlZl9zZXRfY29tcGFyZV9mdW5jKHN0cnVjdCBrZXlf ZGVmICpkZWYpCj4+IGtleV9kZWZfc2V0X2NvbXBhcmVfZnVuY19qc29uPGZhbHNlLCBmYWxzZT4o ZGVmKTsKPj4gfQo+PiB9Cj4+ICsgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGRlZi0+cGFydF9j b3VudDsgKytpKSB7Cj4+ICsgaWYgKGRlZi0+cGFydHNbaV0udHlwZSA9PSBGSUVMRF9UWVBFX0FO WSB8fAo+PiArIGRlZi0+cGFydHNbaV0udHlwZSA9PSBGSUVMRF9UWVBFX0FSUkFZIHx8Cj4+ICsg ZGVmLT5wYXJ0c1tpXS50eXBlID09IEZJRUxEX1RZUEVfTUFQKSB7Cj4+ICsgLyogVHVwbGUgY29t cGFyYXRvcnMgZG9uJ3Qgc3VwcG9ydCB0aGVzZSB0eXBlcy4gKi8KPj4gKyBkZWYtPnR1cGxlX2Nv bXBhcmUgPSBOVUxMOwo+PiArIGRlZi0+dHVwbGVfY29tcGFyZV93aXRoX2tleSA9IE5VTEw7Cj4+ ICsgZGVmLT51bnN1cHBvcnRlZF90eXBlID0gZGVmLT5wYXJ0c1tpXS50eXBlOwo+PiArIGJyZWFr Owo+PiArIH0KPj4gKyB9Cj4+IGtleV9kZWZfc2V0X2hpbnRfZnVuYyhkZWYpOwo+PiB9Cj4KPihM ZWZ0IGhlcmUgZm9yIGNvbnRleHQuKQo+Cj4+IEBAIC00ODgsNiArNTI1LDM1IEBAIHRlc3Q6dGVz dCgnbWVyZ2UoKScsIGZ1bmN0aW9uKHRlc3QpCj4+ICdjYXNlIDM6IHZlcmlmeSB3aXRoIDp0b3Rh YmxlKCknKQo+PiB0ZXN0OmlzX2RlZXBseShrZXlfZGVmX2NiOmV4dHJhY3Rfa2V5KHR1cGxlX2Ep OnRvdGFibGUoKSwKPj4gezEsIDEsIGJveC5OVUxMLCAyMn0sICdjYXNlIDM6IHZlcmlmeSB3aXRo IDpleHRyYWN0X2tleSgpJykKPj4gKwo+PiArIGxvY2FsIHBhcnRzX3Vuc2lnbmVkID0gewo+PiAr IHt0eXBlID0gJ3Vuc2lnbmVkJywgZmllbGRubyA9IDEsIGlzX251bGxhYmxlID0gZmFsc2V9LAo+ PiArIH0KPj4gKyBsb2NhbCBrZXlfZGVmX3Vuc2lnbmVkID0ga2V5X2RlZl9saWIubmV3KHBhcnRz X3Vuc2lnbmVkKQo+PiArIGxvY2FsIGtleV9kZWZfc3RyaW5nID0ga2V5X2RlZl9saWIubmV3KHsK Pj4gKyB7dHlwZSA9ICdzdHJpbmcnLCBmaWVsZG5vID0gMX0sCj4+ICsgfSkKPj4gKyBsb2NhbCBr ZXlfZGVmX2FycmF5ID0ga2V5X2RlZl9saWIubmV3KHsKPj4gKyB7dHlwZSA9ICdhcnJheScsIGZp ZWxkbm8gPSAxfSwKPj4gKyB7dHlwZSA9ICd1bnNpZ25lZCcsIGZpZWxkbm8gPSAyfSwKPj4gKyB9 KQo+PiArIGxvY2FsIGtleV9kZWZfbWFwID0ga2V5X2RlZl9saWIubmV3KHsKPj4gKyB7dHlwZSA9 ICdtYXAnLCBmaWVsZG5vID0gMywgaXNfbnVsbGFibGUgPSB0cnVlfSwKPj4gKyB7dHlwZSA9ICdz Y2FsYXInLCBmaWVsZG5vID0gMn0sCj4+ICsgfSkKPj4gKwo+PiArIGxvY2FsIGtleV9kZWZfdW5z aWduZWRfc3RyaW5nID0ga2V5X2RlZl91bnNpZ25lZDptZXJnZShrZXlfZGVmX3N0cmluZykKPj4g KyB0ZXN0OmlzX2RlZXBseShrZXlfZGVmX3Vuc2lnbmVkX3N0cmluZzp0b3RhYmxlKCksIHBhcnRz X3Vuc2lnbmVkLAo+PiArICdpbiBjYXNlIG9mIGNvbmZsaWN0IHdlIGp1c3QgZ2V0IHRoZSBmaWVs ZCBmcm9tIHRoZSBmaXJzdCBrZXlfZGVmJykKPgo+SWYgeW91IGFkZCBhIHRlc3QgY2FzZSBhbmQg bm90IHN1cmUgd2hldGhlciBjb3Jyc3BvbmRpbmcgYmVoYXZpb3VyIGlzCj5yaWdodCwgdGhlcmUg YXJlIHR3byBvcHRpb25zLiBFaXRoZXIgY2xhcmlmeSB0aGF0IHlvdSBqdXN0IGhvbGQgY3VycmVu dAo+YmVoYXZpb3VyIGFuZCBwcmVzZW5jZSBvZiB0aGlzIHRlc3QgY2FzZSBkb2VzIG5vdCBtZWFu IHRoYXQgdGhlCj5iZWhhdmlvdXIgc2hvdWxkIHJlbWFpbiB0aGUgc2FtZSBpbiBmdXR1cmUgKGJ1 dCB3aGF0IGlzIHB1cnBvc2Ugb2YgdGhlCj5jYXNlIHNvPykuIE9yIGRvbid0IGFkZCBpdC4KUmln aHQhIEkgd2lsbCBjbGFyaWZ5IHRoZSBmYWN0IHRoaXMgYmVoYXZpb3IgaXMgbm90IGludGVuZGVk IHRvIGJlIHNhdmVkLgpUaG91Z2ggaSB0aGluayBpdCBpcyB1c2VmdWwgdG8gbWFrZSBpdCB0cmFu c3BhcmVudCBob3cgaXQgd29ya3Mgbm93Lgo+Cj5KdXN0IHRvIGF2b2lkIGFueSBwb3NzaWJsZSBj b25mdXNpb24gbGlrZSAnd2UgdGVzdCB0aGUgYmVoYXZpb3VyLCBzbyBpdAo+c2VlbXMgdGhlcmUg aXMgc29tZSBjb21taXRtZW50IHRoYXQgd2UnbGwga2VlcCBpdCcuCj4KPkkgc2hhcmVkIG15IGRv dWJ0cyBhYm91dCB0aGlzIGJlaGF2aW91ciBpbiBbMV0uCj4KPlsxXTogIGh0dHBzOi8vbGlzdHMu dGFyYW50b29sLm9yZy9waXBlcm1haWwvdGFyYW50b29sLXBhdGNoZXMvMjAyMC1PY3RvYmVyLzAx OTgwNy5odG1sIArCoArCoAotLQpJbHlhIEtvc2FyZXYKwqA= ----ALT--fD03104f99043Af0c5Ed7b99440FaD351601577319 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+SGkhPGJyPjxicj5TZW50IHYzIGNvbnNpZGVyaW5nIHlvdXIgY29t bWVudHMgZm9yIEFsZXhhbmRlciBMLiB0byByZXZpZXcgaXQuPGJsb2NrcXVvdGUgc3R5bGU9ImJv cmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAx MHB4OyI+0KfQtdGC0LLQtdGA0LMsIDEg0L7QutGC0Y/QsdGA0Y8gMjAyMCwgMTQ6NDcgKzAzOjAw INC+0YIgQWxleGFuZGVyIFR1cmVua28gJmx0O2FsZXhhbmRlci50dXJlbmtvQHRhcmFudG9vbC5v cmcmZ3Q7Ojxicj4mbmJzcDs8ZGl2IGlkPSIiPjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFk bXNnLW1zZyI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjxkaXY+PGRpdiBpZD0ic3R5 bGVfMTYwMTU1Mjg1MjAzNTM3MjI4NjNfQk9EWSI+TEdUTS48YnI+PGJyPkkgc2VlIGEgYml0IGRp ZmZlcmVudCB3YXkgdG8gZG8gdGhlIHNhbWUsIGJ1dCBJIGRvbid0IGtub3cgd2hldGhlciBpdCBp czxicj5iZXR0ZXIuIFNvIEkgd291bGQgc2F5IHRoYXQgYm90aCB3YXlzIGFyZSBva2F5IGZvciBt ZSwgYnV0IGl0IHdvdWxkIGJlPGJyPmdvb2QgaWYgc29tZW9uZSBvdGhlciB3b3VsZCBsb29rIGlu dG8gdGhpcyBkaXNjdXNzaW9uIHRvby4gSSBob3BlPGJyPkFsZXhhbmRlciBMLiB3aWxsIGRvLjxi cj48YnI+U2VlIGFsc28gdGhlIGNvbW1lbnQgcmVnYXJkaW5nIHRoZSBkdWJpb3VzIHRlc3QgY2Fz ZS48YnI+PGJyPldCUiwgQWxleGFuZGVyIFR1cmVua28uPGJyPjxicj4mZ3Q7ICsgLyoqPGJyPiZn dDsgKyAqIEZpcnN0IHBhcnQgdHlwZSBub3Qgc3VwcG9ydGVkIGZvciBjb21wYXJpc29uLjxicj4m Z3Q7ICsgKiBWYWxpZCBpZiBrZXlfZGVmIGRvZXMgbm90IHN1cHBvcnQgY29tcGFyaXNvbjxicj4m Z3Q7ICsgKiAoa2V5X2RlZi0mZ3Q7dHVwbGVfY29tcGFyZSogPT0gTlVMTCksIHVuZGVmaW5lZCBv dGhld2lzZS48YnI+PGJyPkkgd291bGQgc2V0IGl0IHRvIGZpZWxkX3R5cGVfTUFYIGluIHRoZSBj YXNlLCBidXQgbWF5YmUgaXQgaXMganVzdCBteTxicj5mZWFyIG9mIHVuZGVmaW5lZCB2YWx1ZXMu PGJyPjxicj4mZ3Q7ICsgKi88YnI+Jmd0OyArIGVudW0gZmllbGRfdHlwZSB1bnN1cHBvcnRlZF90 eXBlOzxicj48YnI+SSBzZWUgdGhlIGFsdGVybmF0aXZlIChidXQgSSBkb24ndCBrbm93IHdoZXRo ZXIgaXQgaXMgYmV0dGVyKS4gV2UgY2FuPGJyPndyYXAgdGhlIGxvb3AgaW50byBhIGZ1bmN0aW9u IGFuZCB1c2UgaXQgZGlyZWN0bHkgb24gdGhlIGVycm9yIHBhdGg8YnI+KHdoZW4ga2V5X2RlZi0m Z3Q7dHVwbGVfY29tcGFyZSBvciBrZXlfZGVmLSZndDt0dXBsZV9jb21wYXJlX3dpdGhfa2V5IGlz IE5VTEwpPGJyPnRvIG9idGFpbiBhbiBlcnJvciBtZXNzYWdlLiBBIHBlcmZvcm1hbmNlIG9mIHRo ZSBlcnJvciBwYXRoIGlzIG5vdDxicj5pbXBvcnRhbnQgSSBndWVzcy4gVGhpcyB3YXkgd2UnbGwg bm90IG5lZWQgdGhlIGV4dHJhIGZpZWxkIGluICZsdDtzdHJ1Y3Q8YnI+a2V5X2RlZiZndDsuPC9k aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+UmlnaHQsIGkgdGhp bmsgaXQgaXMmbmJzcDthIGdvb2QgaWRlYS4gRGlkbuKAmXQgdGhpbmsgdGhhdCB3ZSBjYW4ganVz dCBkbyBpdCBvbiB0aGUgZXJyb3IgcGF0aC48L2Rpdj48ZGl2Pkkgd2lsbCBpbXBsZW1lbnQgaXQg dGhpcyB3YXksIGJ1dCB3aXRob3V0IGV4dHJhIGRpYWdfc2V0KCkuPC9kaXY+PGRpdj48YmxvY2tx dW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBw YWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNn LW1zZyI+PGRpdj48ZGl2Pjxicj5Vbmxpa2VseSB3ZSdsbCBjcmVhdGUgYSBsb3Qgb2Yga2V5X2Rl ZnMsIHNvIHRoZSBxdWVzdGlvbiBpcyBwdXJlbHkgaG93PGJyPnRoZSBjb2RlIHdvdWxkIGxvb2sg YmV0dGVyLiBBIGZpZWxkIGp1c3QgdG8gcGFzcyBpdCB0byBhbiBlcnJvciBtZXNzYWdlPGJyPmlz IGEgYml0IGFydGlmaWNpYWwgdGhpbmcsIElNSE8uPGJyPjxicj5MZXQgdGhlIGNoZWNrIGZ1bmN0 aW9uIChrZXlfZGVmX2hhc19jb21wYXJhdG9yKCkgb3Igc28pIHRvIHNldCB0aGU8YnI+ZGlhZ25v c3RpY3MgYW5kIHNvIHRoZSBjaGVja2luZyBjb2RlIGFuZCB0aGUgY29uc3RydWN0aW9uIG9mIGFu IGVycm9yPGJyPm1lc3NhZ2Ugd2lsbCBiZSBpbiBvbmUgcGxhY2UuIFRoZSB1c2FnZSB3b3VsZCBi ZSBsaWtlIHNvOjxicj48YnI+SW4ga2V5X2RlZl9zZXRfY29tcGFyZV9mdW5jKCk6PGJyPjxicj4m bmJzcDt8IGlmICghIGtleV9kZWZfaGFzX2NvbXBhcmF0b3IoZGVmKSkgezxicj4mbmJzcDt8IGRl Zi0mZ3Q7dHVwbGVfY29tcGFyZSA9IE5VTEw7PGJyPiZuYnNwO3wgZGVmLSZndDt0dXBsZV9jb21w YXJlX3dpdGhfa2V5ID0gTlVMTDs8YnI+Jm5ic3A7fCB9PGJyPjxicj5JbiBsYm94X2tleV9kZWZf Y29tcGFyZSgpOjxicj48YnI+Jm5ic3A7fCBpZiAoa2V5X2RlZi0mZ3Q7dHVwbGVfY29tcGFyZSA9 PSBOVUxMKSB7PGJyPiZuYnNwO3wgLyogSnVzdCB0byBzZXQgYW4gZXJyb3IgdG8gdGhlIGRpYWdu b3N0aWNzIGFyZWEuICovPGJyPiZuYnNwO3wgaW50IHJjID0ga2V5X2RlZl9oYXNfY29tcGFyYXRv cihrZXlfZGVmKTs8YnI+Jm5ic3A7fCAodm9pZCkgcmM7PGJyPiZuYnNwO3wgYXNzZXJ0KHJjICE9 IDApOzxicj4mbmJzcDt8IHJldHVybiBsdWFUX2Vycm9yKEwpOzxicj4mbmJzcDt8IH08YnI+PGJy PkJ1dCBJJ2xsIHJlcGVhdDogSSBkb24ndCBrbm93IHdoZXRoZXIgaXQgd29ydGggdG8gZG8uIEZl ZWwgZnJlZSB0bzxicj5pZ25vcmUuPGJyPjxicj4mZ3Q7ICsgaWYgKGtleV9kZWYtJmd0O3R1cGxl X2NvbXBhcmUgPT0gTlVMTCkgezxicj4mZ3Q7ICsgZGlhZ19zZXQoSWxsZWdhbFBhcmFtcywgIlVu c3VwcG9ydGVkIGZpZWxkIHR5cGU6ICVzIiw8YnI+Jmd0OyArIGZpZWxkX3R5cGVfc3Ryc1trZXlf ZGVmLSZndDt1bnN1cHBvcnRlZF90eXBlXSk7PGJyPiZndDsgKyByZXR1cm4gbHVhVF9lcnJvcihM KTs8YnI+Jmd0OyArIH08YnI+Jmd0OyArPGJyPiZndDsgc3RydWN0IHR1cGxlICp0dXBsZV9hLCAq dHVwbGVfYjs8YnI+Jmd0OyBpZiAoKHR1cGxlX2EgPSBsdWFUX2tleV9kZWZfY2hlY2tfdHVwbGUo TCwga2V5X2RlZiwgMikpID09IE5VTEwpPGJyPiZndDsgcmV0dXJuIGx1YVRfZXJyb3IoTCk7PGJy PiZndDsgQEAgLTM0OSw2ICszNDMsMTIgQEAgbGJveF9rZXlfZGVmX2NvbXBhcmVfd2l0aF9rZXko c3RydWN0IGx1YV9TdGF0ZSAqTCk8YnI+Jmd0OyAiY29tcGFyZV93aXRoX2tleSh0dXBsZSwga2V5 KSIpOzxicj4mZ3Q7IH08YnI+Jmd0Ozxicj4mZ3Q7ICsgaWYgKGtleV9kZWYtJmd0O3R1cGxlX2Nv bXBhcmVfd2l0aF9rZXkgPT0gTlVMTCkgezxicj4mZ3Q7ICsgZGlhZ19zZXQoSWxsZWdhbFBhcmFt cywgIlVuc3VwcG9ydGVkIGZpZWxkIHR5cGU6ICVzIiw8YnI+Jmd0OyArIGZpZWxkX3R5cGVfc3Ry c1trZXlfZGVmLSZndDt1bnN1cHBvcnRlZF90eXBlXSk7PGJyPiZndDsgKyByZXR1cm4gbHVhVF9l cnJvcihMKTs8YnI+Jmd0OyArIH08YnI+Jmd0OyArPGJyPiZndDsgc3RydWN0IHR1cGxlICp0dXBs ZSA9IGx1YVRfa2V5X2RlZl9jaGVja190dXBsZShMLCBrZXlfZGVmLCAyKTs8YnI+Jmd0OyBpZiAo dHVwbGUgPT0gTlVMTCk8YnI+Jmd0OyByZXR1cm4gbHVhVF9lcnJvcihMKTs8YnI+PGJyPihMZWZ0 IGhlcmUgZm9yIGNvbnRleHQuKTxicj48YnI+Jmd0OyBkaWZmIC0tZ2l0IGEvc3JjL2JveC90dXBs ZV9jb21wYXJlLmNjIGIvc3JjL2JveC90dXBsZV9jb21wYXJlLmNjPGJyPiZndDsgaW5kZXggZDA1 OWM3MDlmLi43NjJiYzgwMTkgMTAwNjQ0PGJyPiZndDsgLS0tIGEvc3JjL2JveC90dXBsZV9jb21w YXJlLmNjPGJyPiZndDsgKysrIGIvc3JjL2JveC90dXBsZV9jb21wYXJlLmNjPGJyPiZndDsgQEAg LTIwODEsNSArMjA4MSwxNiBAQCBrZXlfZGVmX3NldF9jb21wYXJlX2Z1bmMoc3RydWN0IGtleV9k ZWYgKmRlZik8YnI+Jmd0OyBrZXlfZGVmX3NldF9jb21wYXJlX2Z1bmNfanNvbiZsdDtmYWxzZSwg ZmFsc2UmZ3Q7KGRlZik7PGJyPiZndDsgfTxicj4mZ3Q7IH08YnI+Jmd0OyArIGZvciAodWludDMy X3QgaSA9IDA7IGkgJmx0OyBkZWYtJmd0O3BhcnRfY291bnQ7ICsraSkgezxicj4mZ3Q7ICsgaWYg KGRlZi0mZ3Q7cGFydHNbaV0udHlwZSA9PSBGSUVMRF9UWVBFX0FOWSB8fDxicj4mZ3Q7ICsgZGVm LSZndDtwYXJ0c1tpXS50eXBlID09IEZJRUxEX1RZUEVfQVJSQVkgfHw8YnI+Jmd0OyArIGRlZi0m Z3Q7cGFydHNbaV0udHlwZSA9PSBGSUVMRF9UWVBFX01BUCkgezxicj4mZ3Q7ICsgLyogVHVwbGUg Y29tcGFyYXRvcnMgZG9uJ3Qgc3VwcG9ydCB0aGVzZSB0eXBlcy4gKi88YnI+Jmd0OyArIGRlZi0m Z3Q7dHVwbGVfY29tcGFyZSA9IE5VTEw7PGJyPiZndDsgKyBkZWYtJmd0O3R1cGxlX2NvbXBhcmVf d2l0aF9rZXkgPSBOVUxMOzxicj4mZ3Q7ICsgZGVmLSZndDt1bnN1cHBvcnRlZF90eXBlID0gZGVm LSZndDtwYXJ0c1tpXS50eXBlOzxicj4mZ3Q7ICsgYnJlYWs7PGJyPiZndDsgKyB9PGJyPiZndDsg KyB9PGJyPiZndDsga2V5X2RlZl9zZXRfaGludF9mdW5jKGRlZik7PGJyPiZndDsgfTxicj48YnI+ KExlZnQgaGVyZSBmb3IgY29udGV4dC4pPGJyPjxicj4mZ3Q7IEBAIC00ODgsNiArNTI1LDM1IEBA IHRlc3Q6dGVzdCgnbWVyZ2UoKScsIGZ1bmN0aW9uKHRlc3QpPGJyPiZndDsgJ2Nhc2UgMzogdmVy aWZ5IHdpdGggOnRvdGFibGUoKScpPGJyPiZndDsgdGVzdDppc19kZWVwbHkoa2V5X2RlZl9jYjpl eHRyYWN0X2tleSh0dXBsZV9hKTp0b3RhYmxlKCksPGJyPiZndDsgezEsIDEsIGJveC5OVUxMLCAy Mn0sICdjYXNlIDM6IHZlcmlmeSB3aXRoIDpleHRyYWN0X2tleSgpJyk8YnI+Jmd0OyArPGJyPiZn dDsgKyBsb2NhbCBwYXJ0c191bnNpZ25lZCA9IHs8YnI+Jmd0OyArIHt0eXBlID0gJ3Vuc2lnbmVk JywgZmllbGRubyA9IDEsIGlzX251bGxhYmxlID0gZmFsc2V9LDxicj4mZ3Q7ICsgfTxicj4mZ3Q7 ICsgbG9jYWwga2V5X2RlZl91bnNpZ25lZCA9IGtleV9kZWZfbGliLm5ldyhwYXJ0c191bnNpZ25l ZCk8YnI+Jmd0OyArIGxvY2FsIGtleV9kZWZfc3RyaW5nID0ga2V5X2RlZl9saWIubmV3KHs8YnI+ Jmd0OyArIHt0eXBlID0gJ3N0cmluZycsIGZpZWxkbm8gPSAxfSw8YnI+Jmd0OyArIH0pPGJyPiZn dDsgKyBsb2NhbCBrZXlfZGVmX2FycmF5ID0ga2V5X2RlZl9saWIubmV3KHs8YnI+Jmd0OyArIHt0 eXBlID0gJ2FycmF5JywgZmllbGRubyA9IDF9LDxicj4mZ3Q7ICsge3R5cGUgPSAndW5zaWduZWQn LCBmaWVsZG5vID0gMn0sPGJyPiZndDsgKyB9KTxicj4mZ3Q7ICsgbG9jYWwga2V5X2RlZl9tYXAg PSBrZXlfZGVmX2xpYi5uZXcoezxicj4mZ3Q7ICsge3R5cGUgPSAnbWFwJywgZmllbGRubyA9IDMs IGlzX251bGxhYmxlID0gdHJ1ZX0sPGJyPiZndDsgKyB7dHlwZSA9ICdzY2FsYXInLCBmaWVsZG5v ID0gMn0sPGJyPiZndDsgKyB9KTxicj4mZ3Q7ICs8YnI+Jmd0OyArIGxvY2FsIGtleV9kZWZfdW5z aWduZWRfc3RyaW5nID0ga2V5X2RlZl91bnNpZ25lZDptZXJnZShrZXlfZGVmX3N0cmluZyk8YnI+ Jmd0OyArIHRlc3Q6aXNfZGVlcGx5KGtleV9kZWZfdW5zaWduZWRfc3RyaW5nOnRvdGFibGUoKSwg cGFydHNfdW5zaWduZWQsPGJyPiZndDsgKyAnaW4gY2FzZSBvZiBjb25mbGljdCB3ZSBqdXN0IGdl dCB0aGUgZmllbGQgZnJvbSB0aGUgZmlyc3Qga2V5X2RlZicpPGJyPjxicj5JZiB5b3UgYWRkIGEg dGVzdCBjYXNlIGFuZCBub3Qgc3VyZSB3aGV0aGVyIGNvcnJzcG9uZGluZyBiZWhhdmlvdXIgaXM8 YnI+cmlnaHQsIHRoZXJlIGFyZSB0d28gb3B0aW9ucy4gRWl0aGVyIGNsYXJpZnkgdGhhdCB5b3Ug anVzdCBob2xkIGN1cnJlbnQ8YnI+YmVoYXZpb3VyIGFuZCBwcmVzZW5jZSBvZiB0aGlzIHRlc3Qg Y2FzZSBkb2VzIG5vdCBtZWFuIHRoYXQgdGhlPGJyPmJlaGF2aW91ciBzaG91bGQgcmVtYWluIHRo ZSBzYW1lIGluIGZ1dHVyZSAoYnV0IHdoYXQgaXMgcHVycG9zZSBvZiB0aGU8YnI+Y2FzZSBzbz8p LiBPciBkb24ndCBhZGQgaXQuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwv ZGl2PjxkaXY+UmlnaHQhIEkgd2lsbCBjbGFyaWZ5IHRoZSBmYWN0IHRoaXMgYmVoYXZpb3IgaXMg bm90IGludGVuZGVkIHRvIGJlIHNhdmVkLjwvZGl2PjxkaXY+VGhvdWdoIGkgdGhpbmsgaXQgaXMg dXNlZnVsIHRvIG1ha2UgaXQgdHJhbnNwYXJlbnQgaG93IGl0IHdvcmtzIG5vdy48L2Rpdj48ZGl2 PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2lu OjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpz LXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+PGJyPkp1c3QgdG8gYXZvaWQgYW55IHBvc3NpYmxlIGNv bmZ1c2lvbiBsaWtlICd3ZSB0ZXN0IHRoZSBiZWhhdmlvdXIsIHNvIGl0PGJyPnNlZW1zIHRoZXJl IGlzIHNvbWUgY29tbWl0bWVudCB0aGF0IHdlJ2xsIGtlZXAgaXQnLjxicj48YnI+SSBzaGFyZWQg bXkgZG91YnRzIGFib3V0IHRoaXMgYmVoYXZpb3VyIGluIFsxXS48YnI+PGJyPlsxXTogPGEgaHJl Zj0iaHR0cHM6Ly9saXN0cy50YXJhbnRvb2wub3JnL3BpcGVybWFpbC90YXJhbnRvb2wtcGF0Y2hl cy8yMDIwLU9jdG9iZXIvMDE5ODA3Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3Rz LnRhcmFudG9vbC5vcmcvcGlwZXJtYWlsL3RhcmFudG9vbC1wYXRjaGVzLzIwMjAtT2N0b2Jlci8w MTk4MDcuaHRtbDwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+Jm5ic3A7 PGRpdj4mbmJzcDs8L2Rpdj48ZGl2IGRhdGEtc2lnbmF0dXJlLXdpZGdldD0iY29udGFpbmVyIj48 ZGl2IGRhdGEtc2lnbmF0dXJlLXdpZGdldD0iY29udGVudCI+PGRpdj4tLTxicj5JbHlhIEtvc2Fy ZXY8L2Rpdj48L2Rpdj48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjwvZGl2PjwvQk9EWT48L0hUTUw+ Cg== ----ALT--fD03104f99043Af0c5Ed7b99440FaD351601577319--