From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id DE6CA278F9 for ; Mon, 2 Sep 2019 07:54:01 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6D_MS-nYgIEL for ; Mon, 2 Sep 2019 07:54:01 -0400 (EDT) Received: from f478.i.mail.ru (f478.i.mail.ru [217.69.138.145]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 3448D255AC for ; Mon, 2 Sep 2019 07:54:01 -0400 (EDT) From: =?UTF-8?B?SWx5YSBLb3NhcmV2?= Subject: [tarantool-patches] =?UTF-8?B?UmVbMl06IFtQQVRDSCB2Ml0gcmVmYWN0b3Jpbmc6IHJlbW92ZSBleGNlcHRp?= =?UTF-8?B?b25zIGZyb20gdHJpZ2dlcnM=?= MIME-Version: 1.0 Date: Mon, 02 Sep 2019 14:53:58 +0300 Message-ID: <1567425238.495671041@f478.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--m3YiODMOHBa7EFrT8m8HWNOm1C2dH5Ix1567425238" In-Reply-To: <2240493.s3kcRXIbBG@home.lan> References: <6c1f2ba54f2aef58441e9fc77ef7a7f3da35cf38.1565979897.git.i.kosarev@tarantool.org> <2240493.s3kcRXIbBG@home.lan> Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-Help: List-Unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-Subscribe: List-Owner: List-post: List-Archive: To: tarantool-patches@freelists.org Cc: =?UTF-8?B?R2Vvcmd5IEtpcmljaGVua28=?= ----ALT--m3YiODMOHBa7EFrT8m8HWNOm1C2dH5Ix1567425238 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkZyb20gMWE1NTEzMmM0NTNlM2Y2ZjJmYjdmNzNjZDFmMWExMGZmZDg4NTcyMiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogSWx5YSBLb3NhcmV2IDxpLmtvc2FyZXZAdGFyYW50b29sLm9y Zz4KRGF0ZTogTW9uLCAyIFNlcCAyMDE5IDE0OjM3OjE5ICswMzAwClN1YmplY3Q6IFtQQVRDSF0g cmVmYWN0b3Jpbmc6IGZpeCBjb2Rlc3R5bGUKCnN3aXRjaCAuLiBjYXNlIGluZGVudGF0aW9ucyBh cmUgcmVmYWN0b3JlZC4KRXh0cmEgY29uc2VxdWVudCB3aGl0ZXNwYWNlcyBhcmUgcmVwbGFjZWQg d2l0aCB0YWJzLgpTdWl0YWJsZSBfeGMgZnVuY3Rpb24gaW1wbGVtZW50ZWQuCkNsb3NlcyAjNDI0 NwpCcmFuY2g6IGh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL3RyZWUvaS5r b3NhcmV2L2doLTQyNDctcmVtb3ZlLWV4Y2VwdGlvbnMtZnJvbS10cmlnZ2VycyAKSXNzdWU6IGh0 dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL2lzc3Vlcy80MjQ3Ci0tLQpzcmMv Ym94L2FsdGVyLmNjIHwgMzExICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tCnNyYy9ib3gvcmVwbGljYXRpb24uY2MgfCAxMzQgKysrKysrKysrLS0tLS0tLS0tCnNyYy9i b3gvdXNlci5jYyB8IDkgKy0Kc3JjL2JveC92eV9zY2hlZHVsZXIuYyB8IDMgKy0KNCBmaWxlcyBj aGFuZ2VkLCAyMzIgaW5zZXJ0aW9ucygrKSwgMjI1IGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEv c3JjL2JveC9hbHRlci5jYyBiL3NyYy9ib3gvYWx0ZXIuY2MKaW5kZXggMDJkNjY3NDFiLi5mYWE1 NzU1NTkgMTAwNjQ0Ci0tLSBhL3NyYy9ib3gvYWx0ZXIuY2MKKysrIGIvc3JjL2JveC9hbHRlci5j YwpAQCAtMTMzMCwzMCArMTMzMCwzMCBAQCBNb3ZlSW5kZXg6OnJvbGxiYWNrKHN0cnVjdCBhbHRl cl9zcGFjZSAqYWx0ZXIpCmNsYXNzIE1vZGlmeUluZGV4OiBwdWJsaWMgQWx0ZXJTcGFjZU9wCnsK cHVibGljOgotIE1vZGlmeUluZGV4KHN0cnVjdCBhbHRlcl9zcGFjZSAqYWx0ZXIsCi0gc3RydWN0 IGluZGV4ICppbmRleCwgc3RydWN0IGluZGV4X2RlZiAqZGVmKQotIDogQWx0ZXJTcGFjZU9wKGFs dGVyKSwgb2xkX2luZGV4KGluZGV4KSwKLSBuZXdfaW5kZXgoTlVMTCksIG5ld19pbmRleF9kZWYo ZGVmKSB7Ci0gaWYgKG5ld19pbmRleF9kZWYtPmlpZCA9PSAwICYmCi0ga2V5X3BhcnRfY21wKG5l d19pbmRleF9kZWYtPmtleV9kZWYtPnBhcnRzLAotIG5ld19pbmRleF9kZWYtPmtleV9kZWYtPnBh cnRfY291bnQsCi0gb2xkX2luZGV4LT5kZWYtPmtleV9kZWYtPnBhcnRzLAotIG9sZF9pbmRleC0+ ZGVmLT5rZXlfZGVmLT5wYXJ0X2NvdW50KSAhPSAwKSB7Ci0gLyoKLSAqIFByaW1hcnkgcGFydHMg aGF2ZSBiZWVuIGNoYW5nZWQgLQotICogdXBkYXRlIHNlY29uZGFyeSBpbmRleGVzLgotICovCi0g YWx0ZXItPnBrX2RlZiA9IG5ld19pbmRleF9kZWYtPmtleV9kZWY7Ci0gfQotIH0KLSBzdHJ1Y3Qg aW5kZXggKm9sZF9pbmRleDsKLSBzdHJ1Y3QgaW5kZXggKm5ld19pbmRleDsKLSBzdHJ1Y3QgaW5k ZXhfZGVmICpuZXdfaW5kZXhfZGVmOwotIHZpcnR1YWwgdm9pZCBhbHRlcl9kZWYoc3RydWN0IGFs dGVyX3NwYWNlICphbHRlcik7Ci0gdmlydHVhbCB2b2lkIGFsdGVyKHN0cnVjdCBhbHRlcl9zcGFj ZSAqYWx0ZXIpOwotIHZpcnR1YWwgdm9pZCBjb21taXQoc3RydWN0IGFsdGVyX3NwYWNlICphbHRl ciwgaW50NjRfdCBsc24pOwotIHZpcnR1YWwgdm9pZCByb2xsYmFjayhzdHJ1Y3QgYWx0ZXJfc3Bh Y2UgKmFsdGVyKTsKLSB2aXJ0dWFsIH5Nb2RpZnlJbmRleCgpOworIE1vZGlmeUluZGV4KHN0cnVj dCBhbHRlcl9zcGFjZSAqYWx0ZXIsCisgc3RydWN0IGluZGV4ICppbmRleCwgc3RydWN0IGluZGV4 X2RlZiAqZGVmKQorIDogQWx0ZXJTcGFjZU9wKGFsdGVyKSwgb2xkX2luZGV4KGluZGV4KSwKKyBu ZXdfaW5kZXgoTlVMTCksIG5ld19pbmRleF9kZWYoZGVmKSB7CisgaWYgKG5ld19pbmRleF9kZWYt PmlpZCA9PSAwICYmCisga2V5X3BhcnRfY21wKG5ld19pbmRleF9kZWYtPmtleV9kZWYtPnBhcnRz LAorIG5ld19pbmRleF9kZWYtPmtleV9kZWYtPnBhcnRfY291bnQsCisgb2xkX2luZGV4LT5kZWYt PmtleV9kZWYtPnBhcnRzLAorIG9sZF9pbmRleC0+ZGVmLT5rZXlfZGVmLT5wYXJ0X2NvdW50KSAh PSAwKSB7CisgLyoKKyAqIFByaW1hcnkgcGFydHMgaGF2ZSBiZWVuIGNoYW5nZWQgLQorICogdXBk YXRlIHNlY29uZGFyeSBpbmRleGVzLgorICovCisgYWx0ZXItPnBrX2RlZiA9IG5ld19pbmRleF9k ZWYtPmtleV9kZWY7CisgfQorIH0KKyBzdHJ1Y3QgaW5kZXggKm9sZF9pbmRleDsKKyBzdHJ1Y3Qg aW5kZXggKm5ld19pbmRleDsKKyBzdHJ1Y3QgaW5kZXhfZGVmICpuZXdfaW5kZXhfZGVmOworIHZp cnR1YWwgdm9pZCBhbHRlcl9kZWYoc3RydWN0IGFsdGVyX3NwYWNlICphbHRlcik7CisgdmlydHVh bCB2b2lkIGFsdGVyKHN0cnVjdCBhbHRlcl9zcGFjZSAqYWx0ZXIpOworIHZpcnR1YWwgdm9pZCBj b21taXQoc3RydWN0IGFsdGVyX3NwYWNlICphbHRlciwgaW50NjRfdCBsc24pOworIHZpcnR1YWwg dm9pZCByb2xsYmFjayhzdHJ1Y3QgYWx0ZXJfc3BhY2UgKmFsdGVyKTsKKyB2aXJ0dWFsIH5Nb2Rp ZnlJbmRleCgpOwp9OwoKLyoqIFVwZGF0ZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbmV3IHNwYWNl ICovCkBAIC0zMTExLDE2ICszMTExLDE2IEBAIGZ1bmNfZGVmX25ld19mcm9tX3R1cGxlKHN0cnVj dCB0dXBsZSAqdHVwbGUpCnVpbnQzMl90IGxlbjsKY29uc3QgY2hhciAqc3RyID0gbXBfZGVjb2Rl X3N0cigmZXhwb3J0cywgJmxlbik7CnN3aXRjaCAoU1RSTjJFTlVNKGZ1bmNfbGFuZ3VhZ2UsIHN0 ciwgbGVuKSkgewotIGNhc2UgRlVOQ19MQU5HVUFHRV9MVUE6Ci0gZGVmLT5leHBvcnRzLmx1YSA9 IHRydWU7Ci0gYnJlYWs7Ci0gY2FzZSBGVU5DX0xBTkdVQUdFX1NRTDoKLSBkZWYtPmV4cG9ydHMu c3FsID0gdHJ1ZTsKLSBicmVhazsKLSBkZWZhdWx0OgotIGRpYWdfc2V0KENsaWVudEVycm9yLCBF Ul9DUkVBVEVfRlVOQ1RJT04sCi0gZGVmLT5uYW1lLCAiaW52YWxpZCBleHBvcnRzIHZhbHVlIik7 Ci0gcmV0dXJuIE5VTEw7CisgY2FzZSBGVU5DX0xBTkdVQUdFX0xVQToKKyBkZWYtPmV4cG9ydHMu bHVhID0gdHJ1ZTsKKyBicmVhazsKKyBjYXNlIEZVTkNfTEFOR1VBR0VfU1FMOgorIGRlZi0+ZXhw b3J0cy5zcWwgPSB0cnVlOworIGJyZWFrOworIGRlZmF1bHQ6CisgZGlhZ19zZXQoQ2xpZW50RXJy b3IsIEVSX0NSRUFURV9GVU5DVElPTiwKKyBkZWYtPm5hbWUsICJpbnZhbGlkIGV4cG9ydHMgdmFs dWUiKTsKKyByZXR1cm4gTlVMTDsKfQp9CmNvbnN0IGNoYXIgKmFnZ3JlZ2F0ZSA9CkBAIC0zMjc4 LDkgKzMyNzgsMTAgQEAgb25fcmVwbGFjZV9kZF9mdW5jKHN0cnVjdCB0cmlnZ2VyICogLyogdHJp Z2dlciAqLywgdm9pZCAqZXZlbnQpCn0KLyogQ2FuJ3QnIGRyb3AgYSBidWlsdGluIGZ1bmN0aW9u LiAqLwppZiAob2xkX2Z1bmMtPmRlZi0+bGFuZ3VhZ2UgPT0gRlVOQ19MQU5HVUFHRV9TUUxfQlVJ TFRJTikgewotIHRudF9yYWlzZShDbGllbnRFcnJvciwgRVJfRFJPUF9GVU5DVElPTiwKKyBkaWFn X3NldChDbGllbnRFcnJvciwgRVJfRFJPUF9GVU5DVElPTiwKKHVuc2lnbmVkKSBvbGRfZnVuYy0+ ZGVmLT51aWQsCiJmdW5jdGlvbiBpcyBTUUwgYnVpbHQtaW4iKTsKKyByZXR1cm4gLTE7Cn0Kc3Ry dWN0IHRyaWdnZXIgKm9uX2NvbW1pdCA9CnR4bl9hbHRlcl90cmlnZ2VyX25ldyhvbl9kcm9wX2Z1 bmNfY29tbWl0LCBvbGRfZnVuYyk7CkBAIC0zNTc5LDE3ICszNTgwLDE3IEBAIHByaXZfZGVmX2Ny ZWF0ZV9mcm9tX3R1cGxlKHN0cnVjdCBwcml2X2RlZiAqcHJpdiwgc3RydWN0IHR1cGxlICp0dXBs ZSkKKiBTbyBjaGVjayBmb3IgdGhhdCBmaXJzdC4KKi8Kc3dpdGNoIChtcF90eXBlb2YoKmRhdGEp KSB7Ci0gY2FzZSBNUF9TVFI6Ci0gaWYgKG1wX2RlY29kZV9zdHJsKCZkYXRhKSA9PSAwKSB7Ci0g LyogRW50aXR5LXdpZGUgcHJpdmlsZWdlLiAqLwotIHByaXYtPm9iamVjdF9pZCA9IDA7Ci0gcHJp di0+b2JqZWN0X3R5cGUgPSBzY2hlbWFfZW50aXR5X3R5cGUocHJpdi0+b2JqZWN0X3R5cGUpOwot IGJyZWFrOwotIH0KLSBGQUxMVEhST1VHSDsKLSBkZWZhdWx0OgotIGlmICh0dXBsZV9maWVsZF91 MzIodHVwbGUsQk9YX1BSSVZfRklFTERfT0JKRUNUX0lELCAmKHByaXYtPm9iamVjdF9pZCkpICE9 IDApCi0gcmV0dXJuIC0xOworIGNhc2UgTVBfU1RSOgorIGlmIChtcF9kZWNvZGVfc3RybCgmZGF0 YSkgPT0gMCkgeworIC8qIEVudGl0eS13aWRlIHByaXZpbGVnZS4gKi8KKyBwcml2LT5vYmplY3Rf aWQgPSAwOworIHByaXYtPm9iamVjdF90eXBlID0gc2NoZW1hX2VudGl0eV90eXBlKHByaXYtPm9i amVjdF90eXBlKTsKKyBicmVhazsKKyB9CisgRkFMTFRIUk9VR0g7CisgZGVmYXVsdDoKKyBpZiAo dHVwbGVfZmllbGRfdTMyKHR1cGxlLEJPWF9QUklWX0ZJRUxEX09CSkVDVF9JRCwgJihwcml2LT5v YmplY3RfaWQpKSAhPSAwKQorIHJldHVybiAtMTsKfQppZiAocHJpdi0+b2JqZWN0X3R5cGUgPT0g U0NfVU5LTk9XTikgewpkaWFnX3NldChDbGllbnRFcnJvciwgRVJfVU5LTk9XTl9TQ0hFTUFfT0JK RUNULApAQCAtMzYzMSwxMjEgKzM2MzIsMTIxIEBAIHByaXZfZGVmX2NoZWNrKHN0cnVjdCBwcml2 X2RlZiAqcHJpdiwgZW51bSBwcml2X3R5cGUgcHJpdl90eXBlKQpwcml2LT5vYmplY3RfdHlwZSwg cHJpdl90eXBlKSAhPSAwKQpyZXR1cm4gLTE7CnN3aXRjaCAocHJpdi0+b2JqZWN0X3R5cGUpIHsK LSBjYXNlIFNDX1VOSVZFUlNFOgotIGlmIChncmFudG9yLT5kZWYtPnVpZCAhPSBBRE1JTikgewot IGRpYWdfc2V0KEFjY2Vzc0RlbmllZEVycm9yLAotIHByaXZfbmFtZShwcml2X3R5cGUpLAotIHNj aGVtYV9vYmplY3RfbmFtZShTQ19VTklWRVJTRSksCi0gbmFtZSwKLSBncmFudG9yLT5kZWYtPm5h bWUpOwotIHJldHVybiAtMTsKLSB9Ci0gYnJlYWs7Ci0gY2FzZSBTQ19TUEFDRTogewotIHN0cnVj dCBzcGFjZSAqc3BhY2UgPSBzcGFjZV9jYWNoZV9maW5kKHByaXYtPm9iamVjdF9pZCk7Ci0gaWYg KHNwYWNlID09IE5VTEwpCi0gcmV0dXJuIC0xOwotIGlmIChzcGFjZS0+ZGVmLT51aWQgIT0gZ3Jh bnRvci0+ZGVmLT51aWQgJiYKLSBncmFudG9yLT5kZWYtPnVpZCAhPSBBRE1JTikgewotIGRpYWdf c2V0KEFjY2Vzc0RlbmllZEVycm9yLAotIHByaXZfbmFtZShwcml2X3R5cGUpLAotIHNjaGVtYV9v YmplY3RfbmFtZShTQ19TUEFDRSksIG5hbWUsCi0gZ3JhbnRvci0+ZGVmLT5uYW1lKTsKLSByZXR1 cm4gLTE7Ci0gfQotIGJyZWFrOworIGNhc2UgU0NfVU5JVkVSU0U6CisgaWYgKGdyYW50b3ItPmRl Zi0+dWlkICE9IEFETUlOKSB7CisgZGlhZ19zZXQoQWNjZXNzRGVuaWVkRXJyb3IsCisgcHJpdl9u YW1lKHByaXZfdHlwZSksCisgc2NoZW1hX29iamVjdF9uYW1lKFNDX1VOSVZFUlNFKSwKKyBuYW1l LAorIGdyYW50b3ItPmRlZi0+bmFtZSk7CisgcmV0dXJuIC0xOwp9Ci0gY2FzZSBTQ19GVU5DVElP TjogewotIHN0cnVjdCBmdW5jICpmdW5jID0gZnVuY19ieV9pZChwcml2LT5vYmplY3RfaWQpOwot IGlmIChmdW5jID09IE5VTEwpIHsKLSBkaWFnX3NldChDbGllbnRFcnJvciwgRVJfTk9fU1VDSF9G VU5DVElPTiwgaW50MnN0cihwcml2LT5vYmplY3RfaWQpKTsKLSByZXR1cm4gLTE7Ci0gfQotIGlm IChmdW5jLT5kZWYtPnVpZCAhPSBncmFudG9yLT5kZWYtPnVpZCAmJgotIGdyYW50b3ItPmRlZi0+ dWlkICE9IEFETUlOKSB7Ci0gZGlhZ19zZXQoQWNjZXNzRGVuaWVkRXJyb3IsCi0gcHJpdl9uYW1l KHByaXZfdHlwZSksCi0gc2NoZW1hX29iamVjdF9uYW1lKFNDX0ZVTkNUSU9OKSwgbmFtZSwKLSBn cmFudG9yLT5kZWYtPm5hbWUpOwotIHJldHVybiAtMTsKLSB9Ci0gYnJlYWs7CisgYnJlYWs7Cisg Y2FzZSBTQ19TUEFDRTogeworIHN0cnVjdCBzcGFjZSAqc3BhY2UgPSBzcGFjZV9jYWNoZV9maW5k KHByaXYtPm9iamVjdF9pZCk7CisgaWYgKHNwYWNlID09IE5VTEwpCisgcmV0dXJuIC0xOworIGlm IChzcGFjZS0+ZGVmLT51aWQgIT0gZ3JhbnRvci0+ZGVmLT51aWQgJiYKKyBncmFudG9yLT5kZWYt PnVpZCAhPSBBRE1JTikgeworIGRpYWdfc2V0KEFjY2Vzc0RlbmllZEVycm9yLAorIHByaXZfbmFt ZShwcml2X3R5cGUpLAorIHNjaGVtYV9vYmplY3RfbmFtZShTQ19TUEFDRSksIG5hbWUsCisgZ3Jh bnRvci0+ZGVmLT5uYW1lKTsKKyByZXR1cm4gLTE7Cn0KLSBjYXNlIFNDX1NFUVVFTkNFOiB7Ci0g c3RydWN0IHNlcXVlbmNlICpzZXEgPSBzZXF1ZW5jZV9ieV9pZChwcml2LT5vYmplY3RfaWQpOwot IGlmIChzZXEgPT0gTlVMTCkgewotIGRpYWdfc2V0KENsaWVudEVycm9yLCBFUl9OT19TVUNIX1NF UVVFTkNFLCBpbnQyc3RyKHByaXYtPm9iamVjdF9pZCkpOwotIHJldHVybiAtMTsKLSB9Ci0gaWYg KHNlcS0+ZGVmLT51aWQgIT0gZ3JhbnRvci0+ZGVmLT51aWQgJiYKLSBncmFudG9yLT5kZWYtPnVp ZCAhPSBBRE1JTikgewotIGRpYWdfc2V0KEFjY2Vzc0RlbmllZEVycm9yLAotIHByaXZfbmFtZShw cml2X3R5cGUpLAotIHNjaGVtYV9vYmplY3RfbmFtZShTQ19TRVFVRU5DRSksIG5hbWUsCi0gZ3Jh bnRvci0+ZGVmLT5uYW1lKTsKLSByZXR1cm4gLTE7Ci0gfQotIGJyZWFrOworIGJyZWFrOworIH0K KyBjYXNlIFNDX0ZVTkNUSU9OOiB7Cisgc3RydWN0IGZ1bmMgKmZ1bmMgPSBmdW5jX2J5X2lkKHBy aXYtPm9iamVjdF9pZCk7CisgaWYgKGZ1bmMgPT0gTlVMTCkgeworIGRpYWdfc2V0KENsaWVudEVy cm9yLCBFUl9OT19TVUNIX0ZVTkNUSU9OLCBpbnQyc3RyKHByaXYtPm9iamVjdF9pZCkpOworIHJl dHVybiAtMTsKfQotIGNhc2UgU0NfUk9MRTogewotIHN0cnVjdCB1c2VyICpyb2xlID0gdXNlcl9i eV9pZChwcml2LT5vYmplY3RfaWQpOwotIGlmIChyb2xlID09IE5VTEwgfHwgcm9sZS0+ZGVmLT50 eXBlICE9IFNDX1JPTEUpIHsKLSBkaWFnX3NldChDbGllbnRFcnJvciwgRVJfTk9fU1VDSF9ST0xF LAotIHJvbGUgPyByb2xlLT5kZWYtPm5hbWUgOgotIGludDJzdHIocHJpdi0+b2JqZWN0X2lkKSk7 Ci0gcmV0dXJuIC0xOwotIH0KLSAvKgotICogT25seSB0aGUgY3JlYXRvciBvZiB0aGUgcm9sZSBj YW4gZ3JhbnQgb3IgcmV2b2tlIGl0LgotICogRXZlcnlvbmUgY2FuIGdyYW50ICdQVUJMSUMnIHJv bGUuCi0gKi8KLSBpZiAocm9sZS0+ZGVmLT5vd25lciAhPSBncmFudG9yLT5kZWYtPnVpZCAmJgot IGdyYW50b3ItPmRlZi0+dWlkICE9IEFETUlOICYmCi0gKHJvbGUtPmRlZi0+dWlkICE9IFBVQkxJ QyB8fCBwcml2LT5hY2Nlc3MgIT0gUFJJVl9YKSkgewotIGRpYWdfc2V0KEFjY2Vzc0RlbmllZEVy cm9yLAotIHByaXZfbmFtZShwcml2X3R5cGUpLAotIHNjaGVtYV9vYmplY3RfbmFtZShTQ19ST0xF KSwgbmFtZSwKLSBncmFudG9yLT5kZWYtPm5hbWUpOwotIHJldHVybiAtMTsKLSB9Ci0gLyogTm90 IG5lY2Vzc2FyeSB0byBkbyBkdXJpbmcgcmV2b2tlLCBidXQgd2hvIGNhcmVzLiAqLwotIGlmIChy b2xlX2NoZWNrKGdyYW50ZWUsIHJvbGUpICE9IDApCi0gcmV0dXJuIC0xOwotIGJyZWFrOworIGlm IChmdW5jLT5kZWYtPnVpZCAhPSBncmFudG9yLT5kZWYtPnVpZCAmJgorIGdyYW50b3ItPmRlZi0+ dWlkICE9IEFETUlOKSB7CisgZGlhZ19zZXQoQWNjZXNzRGVuaWVkRXJyb3IsCisgcHJpdl9uYW1l KHByaXZfdHlwZSksCisgc2NoZW1hX29iamVjdF9uYW1lKFNDX0ZVTkNUSU9OKSwgbmFtZSwKKyBn cmFudG9yLT5kZWYtPm5hbWUpOworIHJldHVybiAtMTsKfQotIGNhc2UgU0NfVVNFUjogewotIHN0 cnVjdCB1c2VyICp1c2VyID0gdXNlcl9ieV9pZChwcml2LT5vYmplY3RfaWQpOwotIGlmICh1c2Vy ID09IE5VTEwgfHwgdXNlci0+ZGVmLT50eXBlICE9IFNDX1VTRVIpIHsKLSBkaWFnX3NldChDbGll bnRFcnJvciwgRVJfTk9fU1VDSF9VU0VSLAotIHVzZXIgPyB1c2VyLT5kZWYtPm5hbWUgOgotIGlu dDJzdHIocHJpdi0+b2JqZWN0X2lkKSk7Ci0gcmV0dXJuIC0xOwotIH0KLSBpZiAodXNlci0+ZGVm LT5vd25lciAhPSBncmFudG9yLT5kZWYtPnVpZCAmJgotIGdyYW50b3ItPmRlZi0+dWlkICE9IEFE TUlOKSB7Ci0gZGlhZ19zZXQoQWNjZXNzRGVuaWVkRXJyb3IsCi0gcHJpdl9uYW1lKHByaXZfdHlw ZSksCi0gc2NoZW1hX29iamVjdF9uYW1lKFNDX1VTRVIpLCBuYW1lLAotIGdyYW50b3ItPmRlZi0+ bmFtZSk7Ci0gcmV0dXJuIC0xOwotIH0KLSBicmVhazsKKyBicmVhazsKKyB9CisgY2FzZSBTQ19T RVFVRU5DRTogeworIHN0cnVjdCBzZXF1ZW5jZSAqc2VxID0gc2VxdWVuY2VfYnlfaWQocHJpdi0+ b2JqZWN0X2lkKTsKKyBpZiAoc2VxID09IE5VTEwpIHsKKyBkaWFnX3NldChDbGllbnRFcnJvciwg RVJfTk9fU1VDSF9TRVFVRU5DRSwgaW50MnN0cihwcml2LT5vYmplY3RfaWQpKTsKKyByZXR1cm4g LTE7Cn0KLSBjYXNlIFNDX0VOVElUWV9TUEFDRToKLSBjYXNlIFNDX0VOVElUWV9GVU5DVElPTjoK LSBjYXNlIFNDX0VOVElUWV9TRVFVRU5DRToKLSBjYXNlIFNDX0VOVElUWV9ST0xFOgotIGNhc2Ug U0NfRU5USVRZX1VTRVI6IHsKLSAvKiBPbmx5IGFkbWluIG1heSBncmFudCBwcml2aWxlZ2VzIG9u IGFuIGVudGlyZSBlbnRpdHkuICovCi0gaWYgKGdyYW50b3ItPmRlZi0+dWlkICE9IEFETUlOKSB7 Ci0gZGlhZ19zZXQoQWNjZXNzRGVuaWVkRXJyb3IsIHByaXZfbmFtZShwcml2X3R5cGUpLAotIHNj aGVtYV9vYmplY3RfbmFtZShwcml2LT5vYmplY3RfdHlwZSksIG5hbWUsCi0gZ3JhbnRvci0+ZGVm LT5uYW1lKTsKLSByZXR1cm4gLTE7Ci0gfQorIGlmIChzZXEtPmRlZi0+dWlkICE9IGdyYW50b3It PmRlZi0+dWlkICYmCisgZ3JhbnRvci0+ZGVmLT51aWQgIT0gQURNSU4pIHsKKyBkaWFnX3NldChB Y2Nlc3NEZW5pZWRFcnJvciwKKyBwcml2X25hbWUocHJpdl90eXBlKSwKKyBzY2hlbWFfb2JqZWN0 X25hbWUoU0NfU0VRVUVOQ0UpLCBuYW1lLAorIGdyYW50b3ItPmRlZi0+bmFtZSk7CisgcmV0dXJu IC0xOwp9Ci0gZGVmYXVsdDoKLSBicmVhazsKKyBicmVhazsKKyB9CisgY2FzZSBTQ19ST0xFOiB7 Cisgc3RydWN0IHVzZXIgKnJvbGUgPSB1c2VyX2J5X2lkKHByaXYtPm9iamVjdF9pZCk7CisgaWYg KHJvbGUgPT0gTlVMTCB8fCByb2xlLT5kZWYtPnR5cGUgIT0gU0NfUk9MRSkgeworIGRpYWdfc2V0 KENsaWVudEVycm9yLCBFUl9OT19TVUNIX1JPTEUsCisgcm9sZSA/IHJvbGUtPmRlZi0+bmFtZSA6 CisgaW50MnN0cihwcml2LT5vYmplY3RfaWQpKTsKKyByZXR1cm4gLTE7CisgfQorIC8qCisgKiBP bmx5IHRoZSBjcmVhdG9yIG9mIHRoZSByb2xlIGNhbiBncmFudCBvciByZXZva2UgaXQuCisgKiBF dmVyeW9uZSBjYW4gZ3JhbnQgJ1BVQkxJQycgcm9sZS4KKyAqLworIGlmIChyb2xlLT5kZWYtPm93 bmVyICE9IGdyYW50b3ItPmRlZi0+dWlkICYmCisgZ3JhbnRvci0+ZGVmLT51aWQgIT0gQURNSU4g JiYKKyAocm9sZS0+ZGVmLT51aWQgIT0gUFVCTElDIHx8IHByaXYtPmFjY2VzcyAhPSBQUklWX1gp KSB7CisgZGlhZ19zZXQoQWNjZXNzRGVuaWVkRXJyb3IsCisgcHJpdl9uYW1lKHByaXZfdHlwZSks Cisgc2NoZW1hX29iamVjdF9uYW1lKFNDX1JPTEUpLCBuYW1lLAorIGdyYW50b3ItPmRlZi0+bmFt ZSk7CisgcmV0dXJuIC0xOworIH0KKyAvKiBOb3QgbmVjZXNzYXJ5IHRvIGRvIGR1cmluZyByZXZv a2UsIGJ1dCB3aG8gY2FyZXMuICovCisgaWYgKHJvbGVfY2hlY2soZ3JhbnRlZSwgcm9sZSkgIT0g MCkKKyByZXR1cm4gLTE7CisgYnJlYWs7CisgfQorIGNhc2UgU0NfVVNFUjogeworIHN0cnVjdCB1 c2VyICp1c2VyID0gdXNlcl9ieV9pZChwcml2LT5vYmplY3RfaWQpOworIGlmICh1c2VyID09IE5V TEwgfHwgdXNlci0+ZGVmLT50eXBlICE9IFNDX1VTRVIpIHsKKyBkaWFnX3NldChDbGllbnRFcnJv ciwgRVJfTk9fU1VDSF9VU0VSLAorIHVzZXIgPyB1c2VyLT5kZWYtPm5hbWUgOgorIGludDJzdHIo cHJpdi0+b2JqZWN0X2lkKSk7CisgcmV0dXJuIC0xOworIH0KKyBpZiAodXNlci0+ZGVmLT5vd25l ciAhPSBncmFudG9yLT5kZWYtPnVpZCAmJgorIGdyYW50b3ItPmRlZi0+dWlkICE9IEFETUlOKSB7 CisgZGlhZ19zZXQoQWNjZXNzRGVuaWVkRXJyb3IsCisgcHJpdl9uYW1lKHByaXZfdHlwZSksCisg c2NoZW1hX29iamVjdF9uYW1lKFNDX1VTRVIpLCBuYW1lLAorIGdyYW50b3ItPmRlZi0+bmFtZSk7 CisgcmV0dXJuIC0xOworIH0KKyBicmVhazsKKyB9CisgY2FzZSBTQ19FTlRJVFlfU1BBQ0U6Cisg Y2FzZSBTQ19FTlRJVFlfRlVOQ1RJT046CisgY2FzZSBTQ19FTlRJVFlfU0VRVUVOQ0U6CisgY2Fz ZSBTQ19FTlRJVFlfUk9MRToKKyBjYXNlIFNDX0VOVElUWV9VU0VSOiB7CisgLyogT25seSBhZG1p biBtYXkgZ3JhbnQgcHJpdmlsZWdlcyBvbiBhbiBlbnRpcmUgZW50aXR5LiAqLworIGlmIChncmFu dG9yLT5kZWYtPnVpZCAhPSBBRE1JTikgeworIGRpYWdfc2V0KEFjY2Vzc0RlbmllZEVycm9yLCBw cml2X25hbWUocHJpdl90eXBlKSwKKyBzY2hlbWFfb2JqZWN0X25hbWUocHJpdi0+b2JqZWN0X3R5 cGUpLCBuYW1lLAorIGdyYW50b3ItPmRlZi0+bmFtZSk7CisgcmV0dXJuIC0xOworIH0KKyB9Cisg ZGVmYXVsdDoKKyBicmVhazsKfQppZiAocHJpdi0+YWNjZXNzID09IDApIHsKZGlhZ19zZXQoQ2xp ZW50RXJyb3IsIEVSX0dSQU5ULApkaWZmIC0tZ2l0IGEvc3JjL2JveC9yZXBsaWNhdGlvbi5jYyBi L3NyYy9ib3gvcmVwbGljYXRpb24uY2MKaW5kZXggNjhiYzFiMDY0Li5iZDNkNGMyM2YgMTAwNjQ0 Ci0tLSBhL3NyYy9ib3gvcmVwbGljYXRpb24uY2MKKysrIGIvc3JjL2JveC9yZXBsaWNhdGlvbi5j YwpAQCAtMzg2LDIyICszODYsMjIgQEAgc3RhdGljIHZvaWQKcmVwbGljYV9vbl9hcHBsaWVyX2Rp c2Nvbm5lY3Qoc3RydWN0IHJlcGxpY2EgKnJlcGxpY2EpCnsKc3dpdGNoIChyZXBsaWNhLT5hcHBs aWVyX3N5bmNfc3RhdGUpIHsKLSBjYXNlIEFQUExJRVJfU1lOQzoKLSBhc3NlcnQocmVwbGljYXNl dC5hcHBsaWVyLnN5bmNlZCA+IDApOwotIHJlcGxpY2FzZXQuYXBwbGllci5zeW5jZWQtLTsKLSBG QUxMVEhST1VHSDsKLSBjYXNlIEFQUExJRVJfQ09OTkVDVEVEOgotIGFzc2VydChyZXBsaWNhc2V0 LmFwcGxpZXIuY29ubmVjdGVkID4gMCk7Ci0gcmVwbGljYXNldC5hcHBsaWVyLmNvbm5lY3RlZC0t OwotIGJyZWFrOwotIGNhc2UgQVBQTElFUl9MT0FESU5HOgotIGFzc2VydChyZXBsaWNhc2V0LmFw cGxpZXIubG9hZGluZyA+IDApOwotIHJlcGxpY2FzZXQuYXBwbGllci5sb2FkaW5nLS07Ci0gYnJl YWs7Ci0gY2FzZSBBUFBMSUVSX0RJU0NPTk5FQ1RFRDoKLSBicmVhazsKLSBkZWZhdWx0OgotIHVu cmVhY2hhYmxlKCk7CisgY2FzZSBBUFBMSUVSX1NZTkM6CisgYXNzZXJ0KHJlcGxpY2FzZXQuYXBw bGllci5zeW5jZWQgPiAwKTsKKyByZXBsaWNhc2V0LmFwcGxpZXIuc3luY2VkLS07CisgRkFMTFRI Uk9VR0g7CisgY2FzZSBBUFBMSUVSX0NPTk5FQ1RFRDoKKyBhc3NlcnQocmVwbGljYXNldC5hcHBs aWVyLmNvbm5lY3RlZCA+IDApOworIHJlcGxpY2FzZXQuYXBwbGllci5jb25uZWN0ZWQtLTsKKyBi cmVhazsKKyBjYXNlIEFQUExJRVJfTE9BRElORzoKKyBhc3NlcnQocmVwbGljYXNldC5hcHBsaWVy LmxvYWRpbmcgPiAwKTsKKyByZXBsaWNhc2V0LmFwcGxpZXIubG9hZGluZy0tOworIGJyZWFrOwor IGNhc2UgQVBQTElFUl9ESVNDT05ORUNURUQ6CisgYnJlYWs7CisgZGVmYXVsdDoKKyB1bnJlYWNo YWJsZSgpOwp9CnJlcGxpY2EtPmFwcGxpZXJfc3luY19zdGF0ZSA9IHJlcGxpY2EtPmFwcGxpZXIt PnN0YXRlOwppZiAocmVwbGljYS0+YXBwbGllcl9zeW5jX3N0YXRlID09IEFQUExJRVJfTE9BRElO RykKQEAgLTQxNSw0MyArNDE1LDQzIEBAIHJlcGxpY2Ffb25fYXBwbGllcl9zdGF0ZV9mKHN0cnVj dCB0cmlnZ2VyICp0cmlnZ2VyLCB2b2lkICpldmVudCkKc3RydWN0IHJlcGxpY2EgKnJlcGxpY2Eg PSBjb250YWluZXJfb2YodHJpZ2dlciwKc3RydWN0IHJlcGxpY2EsIG9uX2FwcGxpZXJfc3RhdGUp Owpzd2l0Y2ggKHJlcGxpY2EtPmFwcGxpZXItPnN0YXRlKSB7Ci0gY2FzZSBBUFBMSUVSX0lOSVRJ QUxfSk9JTjoKLSByZXBsaWNhc2V0LmlzX2pvaW5pbmcgPSB0cnVlOwotIGJyZWFrOwotIGNhc2Ug QVBQTElFUl9KT0lORUQ6Ci0gcmVwbGljYXNldC5pc19qb2luaW5nID0gZmFsc2U7Ci0gYnJlYWs7 Ci0gY2FzZSBBUFBMSUVSX0NPTk5FQ1RFRDoKLSB0cnkgewotIGlmICh0dF91dWlkX2lzX25pbCgm cmVwbGljYS0+dXVpZCkpCi0gcmVwbGljYV9vbl9hcHBsaWVyX2Nvbm5lY3QocmVwbGljYSk7Ci0g ZWxzZQotIHJlcGxpY2Ffb25fYXBwbGllcl9yZWNvbm5lY3QocmVwbGljYSk7Ci0gfSBjYXRjaCAo RXhjZXB0aW9uICplKSB7Ci0gcmV0dXJuIC0xOwotIH0KLSBicmVhazsKLSBjYXNlIEFQUExJRVJf TE9BRElORzoKLSBjYXNlIEFQUExJRVJfRElTQ09OTkVDVEVEOgotIHJlcGxpY2Ffb25fYXBwbGll cl9kaXNjb25uZWN0KHJlcGxpY2EpOwotIGJyZWFrOwotIGNhc2UgQVBQTElFUl9GT0xMT1c6Ci0g cmVwbGljYV9vbl9hcHBsaWVyX3N5bmMocmVwbGljYSk7Ci0gYnJlYWs7Ci0gY2FzZSBBUFBMSUVS X09GRjoKLSAvKgotICogQ29ubmVjdGlvbiB0byBzZWxmLCBkdXBsaWNhdGUgY29ubmVjdGlvbgot ICogdG8gdGhlIHNhbWUgbWFzdGVyLCBvciB0aGUgYXBwbGllciBmaWJlcgotICogaGFzIGJlZW4g Y2FuY2VsbGVkLiBBc3N1bWUgc3luY2VkLgotICovCi0gcmVwbGljYV9vbl9hcHBsaWVyX3N5bmMo cmVwbGljYSk7Ci0gYnJlYWs7Ci0gY2FzZSBBUFBMSUVSX1NUT1BQRUQ6Ci0gLyogVW5yZWNvdmVy YWJsZSBlcnJvci4gKi8KLSByZXBsaWNhX29uX2FwcGxpZXJfZGlzY29ubmVjdChyZXBsaWNhKTsK LSBicmVhazsKLSBkZWZhdWx0OgotIGJyZWFrOworIGNhc2UgQVBQTElFUl9JTklUSUFMX0pPSU46 CisgcmVwbGljYXNldC5pc19qb2luaW5nID0gdHJ1ZTsKKyBicmVhazsKKyBjYXNlIEFQUExJRVJf Sk9JTkVEOgorIHJlcGxpY2FzZXQuaXNfam9pbmluZyA9IGZhbHNlOworIGJyZWFrOworIGNhc2Ug QVBQTElFUl9DT05ORUNURUQ6CisgdHJ5IHsKKyBpZiAodHRfdXVpZF9pc19uaWwoJnJlcGxpY2Et PnV1aWQpKQorIHJlcGxpY2Ffb25fYXBwbGllcl9jb25uZWN0KHJlcGxpY2EpOworIGVsc2UKKyBy ZXBsaWNhX29uX2FwcGxpZXJfcmVjb25uZWN0KHJlcGxpY2EpOworIH0gY2F0Y2ggKEV4Y2VwdGlv biAqZSkgeworIHJldHVybiAtMTsKKyB9CisgYnJlYWs7CisgY2FzZSBBUFBMSUVSX0xPQURJTkc6 CisgY2FzZSBBUFBMSUVSX0RJU0NPTk5FQ1RFRDoKKyByZXBsaWNhX29uX2FwcGxpZXJfZGlzY29u bmVjdChyZXBsaWNhKTsKKyBicmVhazsKKyBjYXNlIEFQUExJRVJfRk9MTE9XOgorIHJlcGxpY2Ff b25fYXBwbGllcl9zeW5jKHJlcGxpY2EpOworIGJyZWFrOworIGNhc2UgQVBQTElFUl9PRkY6Cisg LyoKKyAqIENvbm5lY3Rpb24gdG8gc2VsZiwgZHVwbGljYXRlIGNvbm5lY3Rpb24KKyAqIHRvIHRo ZSBzYW1lIG1hc3Rlciwgb3IgdGhlIGFwcGxpZXIgZmliZXIKKyAqIGhhcyBiZWVuIGNhbmNlbGxl ZC4gQXNzdW1lIHN5bmNlZC4KKyAqLworIHJlcGxpY2Ffb25fYXBwbGllcl9zeW5jKHJlcGxpY2Ep OworIGJyZWFrOworIGNhc2UgQVBQTElFUl9TVE9QUEVEOgorIC8qIFVucmVjb3ZlcmFibGUgZXJy b3IuICovCisgcmVwbGljYV9vbl9hcHBsaWVyX2Rpc2Nvbm5lY3QocmVwbGljYSk7CisgYnJlYWs7 CisgZGVmYXVsdDoKKyBicmVhazsKfQpmaWJlcl9jb25kX3NpZ25hbCgmcmVwbGljYXNldC5hcHBs aWVyLmNvbmQpOwpyZXR1cm4gMDsKQEAgLTQ3MiwxMSArNDcyLDExIEBAIHJlcGxpY2FzZXRfdXBk YXRlKHN0cnVjdCBhcHBsaWVyICoqYXBwbGllcnMsIGludCBjb3VudCkKc3RydWN0IGFwcGxpZXIg KmFwcGxpZXI7CgphdXRvIHVuaXFfZ3VhcmQgPSBtYWtlX3Njb3BlZF9ndWFyZChbJl17Ci0gcmVw bGljYV9oYXNoX2ZvcmVhY2hfc2FmZSgmdW5pcSwgcmVwbGljYSwgbmV4dCkgewotIHJlcGxpY2Ff aGFzaF9yZW1vdmUoJnVuaXEsIHJlcGxpY2EpOwotIHJlcGxpY2FfY2xlYXJfYXBwbGllcihyZXBs aWNhKTsKLSByZXBsaWNhX2RlbGV0ZShyZXBsaWNhKTsKLSB9CisgcmVwbGljYV9oYXNoX2ZvcmVh Y2hfc2FmZSgmdW5pcSwgcmVwbGljYSwgbmV4dCkgeworIHJlcGxpY2FfaGFzaF9yZW1vdmUoJnVu aXEsIHJlcGxpY2EpOworIHJlcGxpY2FfY2xlYXJfYXBwbGllcihyZXBsaWNhKTsKKyByZXBsaWNh X2RlbGV0ZShyZXBsaWNhKTsKKyB9Cn0pOwoKLyogQ2hlY2sgZm9yIGR1cGxpY2F0ZSBVVUlEICov CkBAIC01OTYsMTUgKzU5NiwxNSBAQCBhcHBsaWVyX29uX2Nvbm5lY3RfZihzdHJ1Y3QgdHJpZ2dl ciAqdHJpZ2dlciwgdm9pZCAqZXZlbnQpCnN0cnVjdCBhcHBsaWVyICphcHBsaWVyID0gKHN0cnVj dCBhcHBsaWVyICopZXZlbnQ7Cgpzd2l0Y2ggKGFwcGxpZXItPnN0YXRlKSB7Ci0gY2FzZSBBUFBM SUVSX09GRjoKLSBjYXNlIEFQUExJRVJfU1RPUFBFRDoKLSBzdGF0ZS0+ZmFpbGVkKys7Ci0gYnJl YWs7Ci0gY2FzZSBBUFBMSUVSX0NPTk5FQ1RFRDoKLSBzdGF0ZS0+Y29ubmVjdGVkKys7Ci0gYnJl YWs7Ci0gZGVmYXVsdDoKLSByZXR1cm4gMDsKKyBjYXNlIEFQUExJRVJfT0ZGOgorIGNhc2UgQVBQ TElFUl9TVE9QUEVEOgorIHN0YXRlLT5mYWlsZWQrKzsKKyBicmVhazsKKyBjYXNlIEFQUExJRVJf Q09OTkVDVEVEOgorIHN0YXRlLT5jb25uZWN0ZWQrKzsKKyBicmVhazsKKyBkZWZhdWx0OgorIHJl dHVybiAwOwp9CmZpYmVyX2NvbmRfc2lnbmFsKCZzdGF0ZS0+d2FrZXVwKTsKYXBwbGllcl9wYXVz ZShhcHBsaWVyKTsKZGlmZiAtLWdpdCBhL3NyYy9ib3gvdXNlci5jYyBiL3NyYy9ib3gvdXNlci5j YwppbmRleCA1MDYxNGM2ZjIuLjM2NmViY2Q3MiAxMDA2NDQKLS0tIGEvc3JjL2JveC91c2VyLmNj CisrKyBiL3NyYy9ib3gvdXNlci5jYwpAQCAtMzAyLDYgKzMwMiwxMiBAQCB1c2VyX3NldF9lZmZl Y3RpdmVfYWNjZXNzKHN0cnVjdCB1c2VyICp1c2VyKQp9Cn0KCitzdGF0aWMgdm9pZCBwcml2X2Rl Zl9jcmVhdGVfZnJvbV90dXBsZV94YyhzdHJ1Y3QgcHJpdl9kZWYgKnByaXYsIHN0cnVjdCB0dXBs ZSAqdHVwbGUpCit7CisgaWYgKHByaXZfZGVmX2NyZWF0ZV9mcm9tX3R1cGxlKHByaXYsIHR1cGxl KSAhPSAwKQorIGRpYWdfcmFpc2UoKTsKK30KKwovKioKKiBSZWxvYWQgdXNlciBwcml2aWxlZ2Vz IGFuZCByZS1ncmFudCB0aGVtLgoqLwpAQCAtMzM5LDggKzM0NSw3IEBAIHVzZXJfcmVsb2FkX3By aXZzKHN0cnVjdCB1c2VyICp1c2VyKQpzdHJ1Y3QgdHVwbGUgKnR1cGxlOwp3aGlsZSAoKHR1cGxl ID0gaXRlcmF0b3JfbmV4dF94YyhpdCkpICE9IE5VTEwpIHsKc3RydWN0IHByaXZfZGVmIHByaXY7 Ci0gaWYgKHByaXZfZGVmX2NyZWF0ZV9mcm9tX3R1cGxlKCZwcml2LCB0dXBsZSkgIT0gMCkKLSBk aWFnX3JhaXNlKCk7CisgcHJpdl9kZWZfY3JlYXRlX2Zyb21fdHVwbGVfeGMoJnByaXYsIHR1cGxl KTsKLyoqCiogU2tpcCByb2xlIGdyYW50cywgd2UncmUgb25seQoqIGludGVyZXN0ZWQgaW4gcmVh bCBvYmplY3RzLgpkaWZmIC0tZ2l0IGEvc3JjL2JveC92eV9zY2hlZHVsZXIuYyBiL3NyYy9ib3gv dnlfc2NoZWR1bGVyLmMKaW5kZXggZWUzNjFjMzFmLi44NmJlZDgwMTMgMTAwNjQ0Ci0tLSBhL3Ny Yy9ib3gvdnlfc2NoZWR1bGVyLmMKKysrIGIvc3JjL2JveC92eV9zY2hlZHVsZXIuYwpAQCAtNTEw LDcgKzUxMCw3IEBAIHZ5X3NjaGVkdWxlcl9yZXNldF9zdGF0KHN0cnVjdCB2eV9zY2hlZHVsZXIg KnNjaGVkdWxlcikKc3RhdC0+Y29tcGFjdGlvbl9vdXRwdXQgPSAwOwp9Cgotc3RhdGljIHZvaWQK K3N0YXRpYyBpbnQKdnlfc2NoZWR1bGVyX29uX2RlbGV0ZV9sc20oc3RydWN0IHRyaWdnZXIgKnRy aWdnZXIsIHZvaWQgKmV2ZW50KQp7CnN0cnVjdCB2eV9sc20gKmxzbSA9IGV2ZW50OwpAQCAtNTIx LDYgKzUyMSw3IEBAIHZ5X3NjaGVkdWxlcl9vbl9kZWxldGVfbHNtKHN0cnVjdCB0cmlnZ2VyICp0 cmlnZ2VyLCB2b2lkICpldmVudCkKdnlfY29tcGFjdGlvbl9oZWFwX2RlbGV0ZSgmc2NoZWR1bGVy LT5jb21wYWN0aW9uX2hlYXAsIGxzbSk7CnRyaWdnZXJfY2xlYXIodHJpZ2dlcik7CmZyZWUodHJp Z2dlcik7CisgcmV0dXJuIDA7Cn0KCmludAotLSAKMi4xNy4x ----ALT--m3YiODMOHBa7EFrT8m8HWNOm1C2dH5Ix1567425238 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiAnRHJvaWQgU2FucyBNb25vJywg bW9ub3NwYWNlLCBtb25vc3BhY2UsICdEcm9pZCBTYW5zIEZhbGxiYWNrJzsgZm9udC1zaXplOiAx NHB4OyBsaW5lLWhlaWdodDogMTlweDsgd2hpdGUtc3BhY2U6IHByZTsiIGRhdGEtbWNlLXN0eWxl PSJmb250LWZhbWlseTogJ0Ryb2lkIFNhbnMgTW9ubycsIG1vbm9zcGFjZSwgbW9ub3NwYWNlLCAn RHJvaWQgU2FucyBGYWxsYmFjayc7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE5cHg7 IHdoaXRlLXNwYWNlOiBwcmU7Ij48ZGl2PkZyb20gMWE1NTEzMmM0NTNlM2Y2ZjJmYjdmNzNjZDFm MWExMGZmZDg4NTcyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDE8L2Rpdj48ZGl2PkZyb206IEls eWEgS29zYXJldiAmbHQ7aS5rb3NhcmV2QHRhcmFudG9vbC5vcmcmZ3Q7PC9kaXY+PGRpdj5EYXRl OiBNb24sIDIgU2VwIDIwMTkgMTQ6Mzc6MTkgKzAzMDA8L2Rpdj48ZGl2PlN1YmplY3Q6IFtQQVRD SF0gcmVmYWN0b3Jpbmc6IGZpeCBjb2Rlc3R5bGU8L2Rpdj48L2Rpdj48cD48YnI+c3dpdGNoIC4u IGNhc2UgaW5kZW50YXRpb25zIGFyZSByZWZhY3RvcmVkLjxicj5FeHRyYSBjb25zZXF1ZW50IHdo aXRlc3BhY2VzIGFyZSByZXBsYWNlZCB3aXRoIHRhYnMuPGJyPlN1aXRhYmxlIF94YyBmdW5jdGlv biBpbXBsZW1lbnRlZC48L3A+PHA+Q2xvc2VzICM0MjQ3PGJyPkJyYW5jaDogaHR0cHM6Ly9naXRo dWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wvdHJlZS9pLmtvc2FyZXYvZ2gtNDI0Ny1yZW1vdmUt ZXhjZXB0aW9ucy1mcm9tLXRyaWdnZXJzIDxicj5Jc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL3Rh cmFudG9vbC90YXJhbnRvb2wvaXNzdWVzLzQyNDc8L3A+PHA+LS0tPGJyPiBzcmMvYm94L2FsdGVy LmNjIHwgMzExICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPiBz cmMvYm94L3JlcGxpY2F0aW9uLmNjIHwgMTM0ICsrKysrKysrKy0tLS0tLS0tLTxicj4gc3JjL2Jv eC91c2VyLmNjIHwgOSArLTxicj4gc3JjL2JveC92eV9zY2hlZHVsZXIuYyB8IDMgKy08YnI+IDQg ZmlsZXMgY2hhbmdlZCwgMjMyIGluc2VydGlvbnMoKyksIDIyNSBkZWxldGlvbnMoLSk8L3A+PHA+ ZGlmZiAtLWdpdCBhL3NyYy9ib3gvYWx0ZXIuY2MgYi9zcmMvYm94L2FsdGVyLmNjPGJyPmluZGV4 IDAyZDY2NzQxYi4uZmFhNTc1NTU5IDEwMDY0NDxicj4tLS0gYS9zcmMvYm94L2FsdGVyLmNjPGJy PisrKyBiL3NyYy9ib3gvYWx0ZXIuY2M8YnI+QEAgLTEzMzAsMzAgKzEzMzAsMzAgQEAgTW92ZUlu ZGV4Ojpyb2xsYmFjayhzdHJ1Y3QgYWx0ZXJfc3BhY2UgKmFsdGVyKTxicj4gY2xhc3MgTW9kaWZ5 SW5kZXg6IHB1YmxpYyBBbHRlclNwYWNlT3A8YnI+IHs8YnI+IHB1YmxpYzo8YnI+LSBNb2RpZnlJ bmRleChzdHJ1Y3QgYWx0ZXJfc3BhY2UgKmFsdGVyLDxicj4tIHN0cnVjdCBpbmRleCAqaW5kZXgs IHN0cnVjdCBpbmRleF9kZWYgKmRlZik8YnI+LSA6IEFsdGVyU3BhY2VPcChhbHRlciksIG9sZF9p bmRleChpbmRleCksPGJyPi0gbmV3X2luZGV4KE5VTEwpLCBuZXdfaW5kZXhfZGVmKGRlZikgezxi cj4tIGlmIChuZXdfaW5kZXhfZGVmLSZndDtpaWQgPT0gMCAmYW1wOyZhbXA7PGJyPi0ga2V5X3Bh cnRfY21wKG5ld19pbmRleF9kZWYtJmd0O2tleV9kZWYtJmd0O3BhcnRzLDxicj4tIG5ld19pbmRl eF9kZWYtJmd0O2tleV9kZWYtJmd0O3BhcnRfY291bnQsPGJyPi0gb2xkX2luZGV4LSZndDtkZWYt Jmd0O2tleV9kZWYtJmd0O3BhcnRzLDxicj4tIG9sZF9pbmRleC0mZ3Q7ZGVmLSZndDtrZXlfZGVm LSZndDtwYXJ0X2NvdW50KSAhPSAwKSB7PGJyPi0gLyo8YnI+LSAqIFByaW1hcnkgcGFydHMgaGF2 ZSBiZWVuIGNoYW5nZWQgLTxicj4tICogdXBkYXRlIHNlY29uZGFyeSBpbmRleGVzLjxicj4tICov PGJyPi0gYWx0ZXItJmd0O3BrX2RlZiA9IG5ld19pbmRleF9kZWYtJmd0O2tleV9kZWY7PGJyPi0g fTxicj4tIH08YnI+LSBzdHJ1Y3QgaW5kZXggKm9sZF9pbmRleDs8YnI+LSBzdHJ1Y3QgaW5kZXgg Km5ld19pbmRleDs8YnI+LSBzdHJ1Y3QgaW5kZXhfZGVmICpuZXdfaW5kZXhfZGVmOzxicj4tIHZp cnR1YWwgdm9pZCBhbHRlcl9kZWYoc3RydWN0IGFsdGVyX3NwYWNlICphbHRlcik7PGJyPi0gdmly dHVhbCB2b2lkIGFsdGVyKHN0cnVjdCBhbHRlcl9zcGFjZSAqYWx0ZXIpOzxicj4tIHZpcnR1YWwg dm9pZCBjb21taXQoc3RydWN0IGFsdGVyX3NwYWNlICphbHRlciwgaW50NjRfdCBsc24pOzxicj4t IHZpcnR1YWwgdm9pZCByb2xsYmFjayhzdHJ1Y3QgYWx0ZXJfc3BhY2UgKmFsdGVyKTs8YnI+LSB2 aXJ0dWFsIH5Nb2RpZnlJbmRleCgpOzxicj4rIE1vZGlmeUluZGV4KHN0cnVjdCBhbHRlcl9zcGFj ZSAqYWx0ZXIsPGJyPisgc3RydWN0IGluZGV4ICppbmRleCwgc3RydWN0IGluZGV4X2RlZiAqZGVm KTxicj4rIDogQWx0ZXJTcGFjZU9wKGFsdGVyKSwgb2xkX2luZGV4KGluZGV4KSw8YnI+KyBuZXdf aW5kZXgoTlVMTCksIG5ld19pbmRleF9kZWYoZGVmKSB7PGJyPisgaWYgKG5ld19pbmRleF9kZWYt Jmd0O2lpZCA9PSAwICZhbXA7JmFtcDs8YnI+KyBrZXlfcGFydF9jbXAobmV3X2luZGV4X2RlZi0m Z3Q7a2V5X2RlZi0mZ3Q7cGFydHMsPGJyPisgbmV3X2luZGV4X2RlZi0mZ3Q7a2V5X2RlZi0mZ3Q7 cGFydF9jb3VudCw8YnI+KyBvbGRfaW5kZXgtJmd0O2RlZi0mZ3Q7a2V5X2RlZi0mZ3Q7cGFydHMs PGJyPisgb2xkX2luZGV4LSZndDtkZWYtJmd0O2tleV9kZWYtJmd0O3BhcnRfY291bnQpICE9IDAp IHs8YnI+KyAvKjxicj4rICogUHJpbWFyeSBwYXJ0cyBoYXZlIGJlZW4gY2hhbmdlZCAtPGJyPisg KiB1cGRhdGUgc2Vjb25kYXJ5IGluZGV4ZXMuPGJyPisgKi88YnI+KyBhbHRlci0mZ3Q7cGtfZGVm ID0gbmV3X2luZGV4X2RlZi0mZ3Q7a2V5X2RlZjs8YnI+KyB9PGJyPisgfTxicj4rIHN0cnVjdCBp bmRleCAqb2xkX2luZGV4Ozxicj4rIHN0cnVjdCBpbmRleCAqbmV3X2luZGV4Ozxicj4rIHN0cnVj dCBpbmRleF9kZWYgKm5ld19pbmRleF9kZWY7PGJyPisgdmlydHVhbCB2b2lkIGFsdGVyX2RlZihz dHJ1Y3QgYWx0ZXJfc3BhY2UgKmFsdGVyKTs8YnI+KyB2aXJ0dWFsIHZvaWQgYWx0ZXIoc3RydWN0 IGFsdGVyX3NwYWNlICphbHRlcik7PGJyPisgdmlydHVhbCB2b2lkIGNvbW1pdChzdHJ1Y3QgYWx0 ZXJfc3BhY2UgKmFsdGVyLCBpbnQ2NF90IGxzbik7PGJyPisgdmlydHVhbCB2b2lkIHJvbGxiYWNr KHN0cnVjdCBhbHRlcl9zcGFjZSAqYWx0ZXIpOzxicj4rIHZpcnR1YWwgfk1vZGlmeUluZGV4KCk7 PGJyPiB9Ozxicj4gPGJyPiAvKiogVXBkYXRlIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBuZXcgc3Bh Y2UgKi88YnI+QEAgLTMxMTEsMTYgKzMxMTEsMTYgQEAgZnVuY19kZWZfbmV3X2Zyb21fdHVwbGUo c3RydWN0IHR1cGxlICp0dXBsZSk8YnI+IHVpbnQzMl90IGxlbjs8YnI+IGNvbnN0IGNoYXIgKnN0 ciA9IG1wX2RlY29kZV9zdHIoJmFtcDtleHBvcnRzLCAmYW1wO2xlbik7PGJyPiBzd2l0Y2ggKFNU Uk4yRU5VTShmdW5jX2xhbmd1YWdlLCBzdHIsIGxlbikpIHs8YnI+LSBjYXNlIEZVTkNfTEFOR1VB R0VfTFVBOjxicj4tIGRlZi0mZ3Q7ZXhwb3J0cy5sdWEgPSB0cnVlOzxicj4tIGJyZWFrOzxicj4t IGNhc2UgRlVOQ19MQU5HVUFHRV9TUUw6PGJyPi0gZGVmLSZndDtleHBvcnRzLnNxbCA9IHRydWU7 PGJyPi0gYnJlYWs7PGJyPi0gZGVmYXVsdDo8YnI+LSBkaWFnX3NldChDbGllbnRFcnJvciwgRVJf Q1JFQVRFX0ZVTkNUSU9OLDxicj4tIGRlZi0mZ3Q7bmFtZSwgImludmFsaWQgZXhwb3J0cyB2YWx1 ZSIpOzxicj4tIHJldHVybiBOVUxMOzxicj4rIGNhc2UgRlVOQ19MQU5HVUFHRV9MVUE6PGJyPisg ZGVmLSZndDtleHBvcnRzLmx1YSA9IHRydWU7PGJyPisgYnJlYWs7PGJyPisgY2FzZSBGVU5DX0xB TkdVQUdFX1NRTDo8YnI+KyBkZWYtJmd0O2V4cG9ydHMuc3FsID0gdHJ1ZTs8YnI+KyBicmVhazs8 YnI+KyBkZWZhdWx0Ojxicj4rIGRpYWdfc2V0KENsaWVudEVycm9yLCBFUl9DUkVBVEVfRlVOQ1RJ T04sPGJyPisgZGVmLSZndDtuYW1lLCAiaW52YWxpZCBleHBvcnRzIHZhbHVlIik7PGJyPisgcmV0 dXJuIE5VTEw7PGJyPiB9PGJyPiB9PGJyPiBjb25zdCBjaGFyICphZ2dyZWdhdGUgPTxicj5AQCAt MzI3OCw5ICszMjc4LDEwIEBAIG9uX3JlcGxhY2VfZGRfZnVuYyhzdHJ1Y3QgdHJpZ2dlciAqIC8q IHRyaWdnZXIgKi8sIHZvaWQgKmV2ZW50KTxicj4gfTxicj4gLyogQ2FuJ3QnIGRyb3AgYSBidWls dGluIGZ1bmN0aW9uLiAqLzxicj4gaWYgKG9sZF9mdW5jLSZndDtkZWYtJmd0O2xhbmd1YWdlID09 IEZVTkNfTEFOR1VBR0VfU1FMX0JVSUxUSU4pIHs8YnI+LSB0bnRfcmFpc2UoQ2xpZW50RXJyb3Is IEVSX0RST1BfRlVOQ1RJT04sPGJyPisgZGlhZ19zZXQoQ2xpZW50RXJyb3IsIEVSX0RST1BfRlVO Q1RJT04sPGJyPiAodW5zaWduZWQpIG9sZF9mdW5jLSZndDtkZWYtJmd0O3VpZCw8YnI+ICJmdW5j dGlvbiBpcyBTUUwgYnVpbHQtaW4iKTs8YnI+KyByZXR1cm4gLTE7PGJyPiB9PGJyPiBzdHJ1Y3Qg dHJpZ2dlciAqb25fY29tbWl0ID08YnI+IHR4bl9hbHRlcl90cmlnZ2VyX25ldyhvbl9kcm9wX2Z1 bmNfY29tbWl0LCBvbGRfZnVuYyk7PGJyPkBAIC0zNTc5LDE3ICszNTgwLDE3IEBAIHByaXZfZGVm X2NyZWF0ZV9mcm9tX3R1cGxlKHN0cnVjdCBwcml2X2RlZiAqcHJpdiwgc3RydWN0IHR1cGxlICp0 dXBsZSk8YnI+ICogU28gY2hlY2sgZm9yIHRoYXQgZmlyc3QuPGJyPiAqLzxicj4gc3dpdGNoICht cF90eXBlb2YoKmRhdGEpKSB7PGJyPi0gY2FzZSBNUF9TVFI6PGJyPi0gaWYgKG1wX2RlY29kZV9z dHJsKCZhbXA7ZGF0YSkgPT0gMCkgezxicj4tIC8qIEVudGl0eS13aWRlIHByaXZpbGVnZS4gKi88 YnI+LSBwcml2LSZndDtvYmplY3RfaWQgPSAwOzxicj4tIHByaXYtJmd0O29iamVjdF90eXBlID0g c2NoZW1hX2VudGl0eV90eXBlKHByaXYtJmd0O29iamVjdF90eXBlKTs8YnI+LSBicmVhazs8YnI+ LSB9PGJyPi0gRkFMTFRIUk9VR0g7PGJyPi0gZGVmYXVsdDo8YnI+LSBpZiAodHVwbGVfZmllbGRf dTMyKHR1cGxlLEJPWF9QUklWX0ZJRUxEX09CSkVDVF9JRCwgJmFtcDsocHJpdi0mZ3Q7b2JqZWN0 X2lkKSkgIT0gMCk8YnI+LSByZXR1cm4gLTE7PGJyPisgY2FzZSBNUF9TVFI6PGJyPisgaWYgKG1w X2RlY29kZV9zdHJsKCZhbXA7ZGF0YSkgPT0gMCkgezxicj4rIC8qIEVudGl0eS13aWRlIHByaXZp bGVnZS4gKi88YnI+KyBwcml2LSZndDtvYmplY3RfaWQgPSAwOzxicj4rIHByaXYtJmd0O29iamVj dF90eXBlID0gc2NoZW1hX2VudGl0eV90eXBlKHByaXYtJmd0O29iamVjdF90eXBlKTs8YnI+KyBi cmVhazs8YnI+KyB9PGJyPisgRkFMTFRIUk9VR0g7PGJyPisgZGVmYXVsdDo8YnI+KyBpZiAodHVw bGVfZmllbGRfdTMyKHR1cGxlLEJPWF9QUklWX0ZJRUxEX09CSkVDVF9JRCwgJmFtcDsocHJpdi0m Z3Q7b2JqZWN0X2lkKSkgIT0gMCk8YnI+KyByZXR1cm4gLTE7PGJyPiB9PGJyPiBpZiAocHJpdi0m Z3Q7b2JqZWN0X3R5cGUgPT0gU0NfVU5LTk9XTikgezxicj4gZGlhZ19zZXQoQ2xpZW50RXJyb3Is IEVSX1VOS05PV05fU0NIRU1BX09CSkVDVCw8YnI+QEAgLTM2MzEsMTIxICszNjMyLDEyMSBAQCBw cml2X2RlZl9jaGVjayhzdHJ1Y3QgcHJpdl9kZWYgKnByaXYsIGVudW0gcHJpdl90eXBlIHByaXZf dHlwZSk8YnI+IHByaXYtJmd0O29iamVjdF90eXBlLCBwcml2X3R5cGUpICE9IDApPGJyPiByZXR1 cm4gLTE7PGJyPiBzd2l0Y2ggKHByaXYtJmd0O29iamVjdF90eXBlKSB7PGJyPi0gY2FzZSBTQ19V TklWRVJTRTo8YnI+LSBpZiAoZ3JhbnRvci0mZ3Q7ZGVmLSZndDt1aWQgIT0gQURNSU4pIHs8YnI+ LSBkaWFnX3NldChBY2Nlc3NEZW5pZWRFcnJvciw8YnI+LSBwcml2X25hbWUocHJpdl90eXBlKSw8 YnI+LSBzY2hlbWFfb2JqZWN0X25hbWUoU0NfVU5JVkVSU0UpLDxicj4tIG5hbWUsPGJyPi0gZ3Jh bnRvci0mZ3Q7ZGVmLSZndDtuYW1lKTs8YnI+LSByZXR1cm4gLTE7PGJyPi0gfTxicj4tIGJyZWFr Ozxicj4tIGNhc2UgU0NfU1BBQ0U6IHs8YnI+LSBzdHJ1Y3Qgc3BhY2UgKnNwYWNlID0gc3BhY2Vf Y2FjaGVfZmluZChwcml2LSZndDtvYmplY3RfaWQpOzxicj4tIGlmIChzcGFjZSA9PSBOVUxMKTxi cj4tIHJldHVybiAtMTs8YnI+LSBpZiAoc3BhY2UtJmd0O2RlZi0mZ3Q7dWlkICE9IGdyYW50b3It Jmd0O2RlZi0mZ3Q7dWlkICZhbXA7JmFtcDs8YnI+LSBncmFudG9yLSZndDtkZWYtJmd0O3VpZCAh PSBBRE1JTikgezxicj4tIGRpYWdfc2V0KEFjY2Vzc0RlbmllZEVycm9yLDxicj4tIHByaXZfbmFt ZShwcml2X3R5cGUpLDxicj4tIHNjaGVtYV9vYmplY3RfbmFtZShTQ19TUEFDRSksIG5hbWUsPGJy Pi0gZ3JhbnRvci0mZ3Q7ZGVmLSZndDtuYW1lKTs8YnI+LSByZXR1cm4gLTE7PGJyPi0gfTxicj4t IGJyZWFrOzxicj4rIGNhc2UgU0NfVU5JVkVSU0U6PGJyPisgaWYgKGdyYW50b3ItJmd0O2RlZi0m Z3Q7dWlkICE9IEFETUlOKSB7PGJyPisgZGlhZ19zZXQoQWNjZXNzRGVuaWVkRXJyb3IsPGJyPisg cHJpdl9uYW1lKHByaXZfdHlwZSksPGJyPisgc2NoZW1hX29iamVjdF9uYW1lKFNDX1VOSVZFUlNF KSw8YnI+KyBuYW1lLDxicj4rIGdyYW50b3ItJmd0O2RlZi0mZ3Q7bmFtZSk7PGJyPisgcmV0dXJu IC0xOzxicj4gfTxicj4tIGNhc2UgU0NfRlVOQ1RJT046IHs8YnI+LSBzdHJ1Y3QgZnVuYyAqZnVu YyA9IGZ1bmNfYnlfaWQocHJpdi0mZ3Q7b2JqZWN0X2lkKTs8YnI+LSBpZiAoZnVuYyA9PSBOVUxM KSB7PGJyPi0gZGlhZ19zZXQoQ2xpZW50RXJyb3IsIEVSX05PX1NVQ0hfRlVOQ1RJT04sIGludDJz dHIocHJpdi0mZ3Q7b2JqZWN0X2lkKSk7PGJyPi0gcmV0dXJuIC0xOzxicj4tIH08YnI+LSBpZiAo ZnVuYy0mZ3Q7ZGVmLSZndDt1aWQgIT0gZ3JhbnRvci0mZ3Q7ZGVmLSZndDt1aWQgJmFtcDsmYW1w Ozxicj4tIGdyYW50b3ItJmd0O2RlZi0mZ3Q7dWlkICE9IEFETUlOKSB7PGJyPi0gZGlhZ19zZXQo QWNjZXNzRGVuaWVkRXJyb3IsPGJyPi0gcHJpdl9uYW1lKHByaXZfdHlwZSksPGJyPi0gc2NoZW1h X29iamVjdF9uYW1lKFNDX0ZVTkNUSU9OKSwgbmFtZSw8YnI+LSBncmFudG9yLSZndDtkZWYtJmd0 O25hbWUpOzxicj4tIHJldHVybiAtMTs8YnI+LSB9PGJyPi0gYnJlYWs7PGJyPisgYnJlYWs7PGJy PisgY2FzZSBTQ19TUEFDRTogezxicj4rIHN0cnVjdCBzcGFjZSAqc3BhY2UgPSBzcGFjZV9jYWNo ZV9maW5kKHByaXYtJmd0O29iamVjdF9pZCk7PGJyPisgaWYgKHNwYWNlID09IE5VTEwpPGJyPisg cmV0dXJuIC0xOzxicj4rIGlmIChzcGFjZS0mZ3Q7ZGVmLSZndDt1aWQgIT0gZ3JhbnRvci0mZ3Q7 ZGVmLSZndDt1aWQgJmFtcDsmYW1wOzxicj4rIGdyYW50b3ItJmd0O2RlZi0mZ3Q7dWlkICE9IEFE TUlOKSB7PGJyPisgZGlhZ19zZXQoQWNjZXNzRGVuaWVkRXJyb3IsPGJyPisgcHJpdl9uYW1lKHBy aXZfdHlwZSksPGJyPisgc2NoZW1hX29iamVjdF9uYW1lKFNDX1NQQUNFKSwgbmFtZSw8YnI+KyBn cmFudG9yLSZndDtkZWYtJmd0O25hbWUpOzxicj4rIHJldHVybiAtMTs8YnI+IH08YnI+LSBjYXNl IFNDX1NFUVVFTkNFOiB7PGJyPi0gc3RydWN0IHNlcXVlbmNlICpzZXEgPSBzZXF1ZW5jZV9ieV9p ZChwcml2LSZndDtvYmplY3RfaWQpOzxicj4tIGlmIChzZXEgPT0gTlVMTCkgezxicj4tIGRpYWdf c2V0KENsaWVudEVycm9yLCBFUl9OT19TVUNIX1NFUVVFTkNFLCBpbnQyc3RyKHByaXYtJmd0O29i amVjdF9pZCkpOzxicj4tIHJldHVybiAtMTs8YnI+LSB9PGJyPi0gaWYgKHNlcS0mZ3Q7ZGVmLSZn dDt1aWQgIT0gZ3JhbnRvci0mZ3Q7ZGVmLSZndDt1aWQgJmFtcDsmYW1wOzxicj4tIGdyYW50b3It Jmd0O2RlZi0mZ3Q7dWlkICE9IEFETUlOKSB7PGJyPi0gZGlhZ19zZXQoQWNjZXNzRGVuaWVkRXJy b3IsPGJyPi0gcHJpdl9uYW1lKHByaXZfdHlwZSksPGJyPi0gc2NoZW1hX29iamVjdF9uYW1lKFND X1NFUVVFTkNFKSwgbmFtZSw8YnI+LSBncmFudG9yLSZndDtkZWYtJmd0O25hbWUpOzxicj4tIHJl dHVybiAtMTs8YnI+LSB9PGJyPi0gYnJlYWs7PGJyPisgYnJlYWs7PGJyPisgfTxicj4rIGNhc2Ug U0NfRlVOQ1RJT046IHs8YnI+KyBzdHJ1Y3QgZnVuYyAqZnVuYyA9IGZ1bmNfYnlfaWQocHJpdi0m Z3Q7b2JqZWN0X2lkKTs8YnI+KyBpZiAoZnVuYyA9PSBOVUxMKSB7PGJyPisgZGlhZ19zZXQoQ2xp ZW50RXJyb3IsIEVSX05PX1NVQ0hfRlVOQ1RJT04sIGludDJzdHIocHJpdi0mZ3Q7b2JqZWN0X2lk KSk7PGJyPisgcmV0dXJuIC0xOzxicj4gfTxicj4tIGNhc2UgU0NfUk9MRTogezxicj4tIHN0cnVj dCB1c2VyICpyb2xlID0gdXNlcl9ieV9pZChwcml2LSZndDtvYmplY3RfaWQpOzxicj4tIGlmIChy b2xlID09IE5VTEwgfHwgcm9sZS0mZ3Q7ZGVmLSZndDt0eXBlICE9IFNDX1JPTEUpIHs8YnI+LSBk aWFnX3NldChDbGllbnRFcnJvciwgRVJfTk9fU1VDSF9ST0xFLDxicj4tIHJvbGUgPyByb2xlLSZn dDtkZWYtJmd0O25hbWUgOjxicj4tIGludDJzdHIocHJpdi0mZ3Q7b2JqZWN0X2lkKSk7PGJyPi0g cmV0dXJuIC0xOzxicj4tIH08YnI+LSAvKjxicj4tICogT25seSB0aGUgY3JlYXRvciBvZiB0aGUg cm9sZSBjYW4gZ3JhbnQgb3IgcmV2b2tlIGl0Ljxicj4tICogRXZlcnlvbmUgY2FuIGdyYW50ICdQ VUJMSUMnIHJvbGUuPGJyPi0gKi88YnI+LSBpZiAocm9sZS0mZ3Q7ZGVmLSZndDtvd25lciAhPSBn cmFudG9yLSZndDtkZWYtJmd0O3VpZCAmYW1wOyZhbXA7PGJyPi0gZ3JhbnRvci0mZ3Q7ZGVmLSZn dDt1aWQgIT0gQURNSU4gJmFtcDsmYW1wOzxicj4tIChyb2xlLSZndDtkZWYtJmd0O3VpZCAhPSBQ VUJMSUMgfHwgcHJpdi0mZ3Q7YWNjZXNzICE9IFBSSVZfWCkpIHs8YnI+LSBkaWFnX3NldChBY2Nl c3NEZW5pZWRFcnJvciw8YnI+LSBwcml2X25hbWUocHJpdl90eXBlKSw8YnI+LSBzY2hlbWFfb2Jq ZWN0X25hbWUoU0NfUk9MRSksIG5hbWUsPGJyPi0gZ3JhbnRvci0mZ3Q7ZGVmLSZndDtuYW1lKTs8 YnI+LSByZXR1cm4gLTE7PGJyPi0gfTxicj4tIC8qIE5vdCBuZWNlc3NhcnkgdG8gZG8gZHVyaW5n IHJldm9rZSwgYnV0IHdobyBjYXJlcy4gKi88YnI+LSBpZiAocm9sZV9jaGVjayhncmFudGVlLCBy b2xlKSAhPSAwKTxicj4tIHJldHVybiAtMTs8YnI+LSBicmVhazs8YnI+KyBpZiAoZnVuYy0mZ3Q7 ZGVmLSZndDt1aWQgIT0gZ3JhbnRvci0mZ3Q7ZGVmLSZndDt1aWQgJmFtcDsmYW1wOzxicj4rIGdy YW50b3ItJmd0O2RlZi0mZ3Q7dWlkICE9IEFETUlOKSB7PGJyPisgZGlhZ19zZXQoQWNjZXNzRGVu aWVkRXJyb3IsPGJyPisgcHJpdl9uYW1lKHByaXZfdHlwZSksPGJyPisgc2NoZW1hX29iamVjdF9u YW1lKFNDX0ZVTkNUSU9OKSwgbmFtZSw8YnI+KyBncmFudG9yLSZndDtkZWYtJmd0O25hbWUpOzxi cj4rIHJldHVybiAtMTs8YnI+IH08YnI+LSBjYXNlIFNDX1VTRVI6IHs8YnI+LSBzdHJ1Y3QgdXNl ciAqdXNlciA9IHVzZXJfYnlfaWQocHJpdi0mZ3Q7b2JqZWN0X2lkKTs8YnI+LSBpZiAodXNlciA9 PSBOVUxMIHx8IHVzZXItJmd0O2RlZi0mZ3Q7dHlwZSAhPSBTQ19VU0VSKSB7PGJyPi0gZGlhZ19z ZXQoQ2xpZW50RXJyb3IsIEVSX05PX1NVQ0hfVVNFUiw8YnI+LSB1c2VyID8gdXNlci0mZ3Q7ZGVm LSZndDtuYW1lIDo8YnI+LSBpbnQyc3RyKHByaXYtJmd0O29iamVjdF9pZCkpOzxicj4tIHJldHVy biAtMTs8YnI+LSB9PGJyPi0gaWYgKHVzZXItJmd0O2RlZi0mZ3Q7b3duZXIgIT0gZ3JhbnRvci0m Z3Q7ZGVmLSZndDt1aWQgJmFtcDsmYW1wOzxicj4tIGdyYW50b3ItJmd0O2RlZi0mZ3Q7dWlkICE9 IEFETUlOKSB7PGJyPi0gZGlhZ19zZXQoQWNjZXNzRGVuaWVkRXJyb3IsPGJyPi0gcHJpdl9uYW1l KHByaXZfdHlwZSksPGJyPi0gc2NoZW1hX29iamVjdF9uYW1lKFNDX1VTRVIpLCBuYW1lLDxicj4t IGdyYW50b3ItJmd0O2RlZi0mZ3Q7bmFtZSk7PGJyPi0gcmV0dXJuIC0xOzxicj4tIH08YnI+LSBi cmVhazs8YnI+KyBicmVhazs8YnI+KyB9PGJyPisgY2FzZSBTQ19TRVFVRU5DRTogezxicj4rIHN0 cnVjdCBzZXF1ZW5jZSAqc2VxID0gc2VxdWVuY2VfYnlfaWQocHJpdi0mZ3Q7b2JqZWN0X2lkKTs8 YnI+KyBpZiAoc2VxID09IE5VTEwpIHs8YnI+KyBkaWFnX3NldChDbGllbnRFcnJvciwgRVJfTk9f U1VDSF9TRVFVRU5DRSwgaW50MnN0cihwcml2LSZndDtvYmplY3RfaWQpKTs8YnI+KyByZXR1cm4g LTE7PGJyPiB9PGJyPi0gY2FzZSBTQ19FTlRJVFlfU1BBQ0U6PGJyPi0gY2FzZSBTQ19FTlRJVFlf RlVOQ1RJT046PGJyPi0gY2FzZSBTQ19FTlRJVFlfU0VRVUVOQ0U6PGJyPi0gY2FzZSBTQ19FTlRJ VFlfUk9MRTo8YnI+LSBjYXNlIFNDX0VOVElUWV9VU0VSOiB7PGJyPi0gLyogT25seSBhZG1pbiBt YXkgZ3JhbnQgcHJpdmlsZWdlcyBvbiBhbiBlbnRpcmUgZW50aXR5LiAqLzxicj4tIGlmIChncmFu dG9yLSZndDtkZWYtJmd0O3VpZCAhPSBBRE1JTikgezxicj4tIGRpYWdfc2V0KEFjY2Vzc0Rlbmll ZEVycm9yLCBwcml2X25hbWUocHJpdl90eXBlKSw8YnI+LSBzY2hlbWFfb2JqZWN0X25hbWUocHJp di0mZ3Q7b2JqZWN0X3R5cGUpLCBuYW1lLDxicj4tIGdyYW50b3ItJmd0O2RlZi0mZ3Q7bmFtZSk7 PGJyPi0gcmV0dXJuIC0xOzxicj4tIH08YnI+KyBpZiAoc2VxLSZndDtkZWYtJmd0O3VpZCAhPSBn cmFudG9yLSZndDtkZWYtJmd0O3VpZCAmYW1wOyZhbXA7PGJyPisgZ3JhbnRvci0mZ3Q7ZGVmLSZn dDt1aWQgIT0gQURNSU4pIHs8YnI+KyBkaWFnX3NldChBY2Nlc3NEZW5pZWRFcnJvciw8YnI+KyBw cml2X25hbWUocHJpdl90eXBlKSw8YnI+KyBzY2hlbWFfb2JqZWN0X25hbWUoU0NfU0VRVUVOQ0Up LCBuYW1lLDxicj4rIGdyYW50b3ItJmd0O2RlZi0mZ3Q7bmFtZSk7PGJyPisgcmV0dXJuIC0xOzxi cj4gfTxicj4tIGRlZmF1bHQ6PGJyPi0gYnJlYWs7PGJyPisgYnJlYWs7PGJyPisgfTxicj4rIGNh c2UgU0NfUk9MRTogezxicj4rIHN0cnVjdCB1c2VyICpyb2xlID0gdXNlcl9ieV9pZChwcml2LSZn dDtvYmplY3RfaWQpOzxicj4rIGlmIChyb2xlID09IE5VTEwgfHwgcm9sZS0mZ3Q7ZGVmLSZndDt0 eXBlICE9IFNDX1JPTEUpIHs8YnI+KyBkaWFnX3NldChDbGllbnRFcnJvciwgRVJfTk9fU1VDSF9S T0xFLDxicj4rIHJvbGUgPyByb2xlLSZndDtkZWYtJmd0O25hbWUgOjxicj4rIGludDJzdHIocHJp di0mZ3Q7b2JqZWN0X2lkKSk7PGJyPisgcmV0dXJuIC0xOzxicj4rIH08YnI+KyAvKjxicj4rICog T25seSB0aGUgY3JlYXRvciBvZiB0aGUgcm9sZSBjYW4gZ3JhbnQgb3IgcmV2b2tlIGl0Ljxicj4r ICogRXZlcnlvbmUgY2FuIGdyYW50ICdQVUJMSUMnIHJvbGUuPGJyPisgKi88YnI+KyBpZiAocm9s ZS0mZ3Q7ZGVmLSZndDtvd25lciAhPSBncmFudG9yLSZndDtkZWYtJmd0O3VpZCAmYW1wOyZhbXA7 PGJyPisgZ3JhbnRvci0mZ3Q7ZGVmLSZndDt1aWQgIT0gQURNSU4gJmFtcDsmYW1wOzxicj4rIChy b2xlLSZndDtkZWYtJmd0O3VpZCAhPSBQVUJMSUMgfHwgcHJpdi0mZ3Q7YWNjZXNzICE9IFBSSVZf WCkpIHs8YnI+KyBkaWFnX3NldChBY2Nlc3NEZW5pZWRFcnJvciw8YnI+KyBwcml2X25hbWUocHJp dl90eXBlKSw8YnI+KyBzY2hlbWFfb2JqZWN0X25hbWUoU0NfUk9MRSksIG5hbWUsPGJyPisgZ3Jh bnRvci0mZ3Q7ZGVmLSZndDtuYW1lKTs8YnI+KyByZXR1cm4gLTE7PGJyPisgfTxicj4rIC8qIE5v dCBuZWNlc3NhcnkgdG8gZG8gZHVyaW5nIHJldm9rZSwgYnV0IHdobyBjYXJlcy4gKi88YnI+KyBp ZiAocm9sZV9jaGVjayhncmFudGVlLCByb2xlKSAhPSAwKTxicj4rIHJldHVybiAtMTs8YnI+KyBi cmVhazs8YnI+KyB9PGJyPisgY2FzZSBTQ19VU0VSOiB7PGJyPisgc3RydWN0IHVzZXIgKnVzZXIg PSB1c2VyX2J5X2lkKHByaXYtJmd0O29iamVjdF9pZCk7PGJyPisgaWYgKHVzZXIgPT0gTlVMTCB8 fCB1c2VyLSZndDtkZWYtJmd0O3R5cGUgIT0gU0NfVVNFUikgezxicj4rIGRpYWdfc2V0KENsaWVu dEVycm9yLCBFUl9OT19TVUNIX1VTRVIsPGJyPisgdXNlciA/IHVzZXItJmd0O2RlZi0mZ3Q7bmFt ZSA6PGJyPisgaW50MnN0cihwcml2LSZndDtvYmplY3RfaWQpKTs8YnI+KyByZXR1cm4gLTE7PGJy PisgfTxicj4rIGlmICh1c2VyLSZndDtkZWYtJmd0O293bmVyICE9IGdyYW50b3ItJmd0O2RlZi0m Z3Q7dWlkICZhbXA7JmFtcDs8YnI+KyBncmFudG9yLSZndDtkZWYtJmd0O3VpZCAhPSBBRE1JTikg ezxicj4rIGRpYWdfc2V0KEFjY2Vzc0RlbmllZEVycm9yLDxicj4rIHByaXZfbmFtZShwcml2X3R5 cGUpLDxicj4rIHNjaGVtYV9vYmplY3RfbmFtZShTQ19VU0VSKSwgbmFtZSw8YnI+KyBncmFudG9y LSZndDtkZWYtJmd0O25hbWUpOzxicj4rIHJldHVybiAtMTs8YnI+KyB9PGJyPisgYnJlYWs7PGJy PisgfTxicj4rIGNhc2UgU0NfRU5USVRZX1NQQUNFOjxicj4rIGNhc2UgU0NfRU5USVRZX0ZVTkNU SU9OOjxicj4rIGNhc2UgU0NfRU5USVRZX1NFUVVFTkNFOjxicj4rIGNhc2UgU0NfRU5USVRZX1JP TEU6PGJyPisgY2FzZSBTQ19FTlRJVFlfVVNFUjogezxicj4rIC8qIE9ubHkgYWRtaW4gbWF5IGdy YW50IHByaXZpbGVnZXMgb24gYW4gZW50aXJlIGVudGl0eS4gKi88YnI+KyBpZiAoZ3JhbnRvci0m Z3Q7ZGVmLSZndDt1aWQgIT0gQURNSU4pIHs8YnI+KyBkaWFnX3NldChBY2Nlc3NEZW5pZWRFcnJv ciwgcHJpdl9uYW1lKHByaXZfdHlwZSksPGJyPisgc2NoZW1hX29iamVjdF9uYW1lKHByaXYtJmd0 O29iamVjdF90eXBlKSwgbmFtZSw8YnI+KyBncmFudG9yLSZndDtkZWYtJmd0O25hbWUpOzxicj4r IHJldHVybiAtMTs8YnI+KyB9PGJyPisgfTxicj4rIGRlZmF1bHQ6PGJyPisgYnJlYWs7PGJyPiB9 PGJyPiBpZiAocHJpdi0mZ3Q7YWNjZXNzID09IDApIHs8YnI+IGRpYWdfc2V0KENsaWVudEVycm9y LCBFUl9HUkFOVCw8YnI+ZGlmZiAtLWdpdCBhL3NyYy9ib3gvcmVwbGljYXRpb24uY2MgYi9zcmMv Ym94L3JlcGxpY2F0aW9uLmNjPGJyPmluZGV4IDY4YmMxYjA2NC4uYmQzZDRjMjNmIDEwMDY0NDxi cj4tLS0gYS9zcmMvYm94L3JlcGxpY2F0aW9uLmNjPGJyPisrKyBiL3NyYy9ib3gvcmVwbGljYXRp b24uY2M8YnI+QEAgLTM4NiwyMiArMzg2LDIyIEBAIHN0YXRpYyB2b2lkPGJyPiByZXBsaWNhX29u X2FwcGxpZXJfZGlzY29ubmVjdChzdHJ1Y3QgcmVwbGljYSAqcmVwbGljYSk8YnI+IHs8YnI+IHN3 aXRjaCAocmVwbGljYS0mZ3Q7YXBwbGllcl9zeW5jX3N0YXRlKSB7PGJyPi0gY2FzZSBBUFBMSUVS X1NZTkM6PGJyPi0gYXNzZXJ0KHJlcGxpY2FzZXQuYXBwbGllci5zeW5jZWQgJmd0OyAwKTs8YnI+ LSByZXBsaWNhc2V0LmFwcGxpZXIuc3luY2VkLS07PGJyPi0gRkFMTFRIUk9VR0g7PGJyPi0gY2Fz ZSBBUFBMSUVSX0NPTk5FQ1RFRDo8YnI+LSBhc3NlcnQocmVwbGljYXNldC5hcHBsaWVyLmNvbm5l Y3RlZCAmZ3Q7IDApOzxicj4tIHJlcGxpY2FzZXQuYXBwbGllci5jb25uZWN0ZWQtLTs8YnI+LSBi cmVhazs8YnI+LSBjYXNlIEFQUExJRVJfTE9BRElORzo8YnI+LSBhc3NlcnQocmVwbGljYXNldC5h cHBsaWVyLmxvYWRpbmcgJmd0OyAwKTs8YnI+LSByZXBsaWNhc2V0LmFwcGxpZXIubG9hZGluZy0t Ozxicj4tIGJyZWFrOzxicj4tIGNhc2UgQVBQTElFUl9ESVNDT05ORUNURUQ6PGJyPi0gYnJlYWs7 PGJyPi0gZGVmYXVsdDo8YnI+LSB1bnJlYWNoYWJsZSgpOzxicj4rIGNhc2UgQVBQTElFUl9TWU5D Ojxicj4rIGFzc2VydChyZXBsaWNhc2V0LmFwcGxpZXIuc3luY2VkICZndDsgMCk7PGJyPisgcmVw bGljYXNldC5hcHBsaWVyLnN5bmNlZC0tOzxicj4rIEZBTExUSFJPVUdIOzxicj4rIGNhc2UgQVBQ TElFUl9DT05ORUNURUQ6PGJyPisgYXNzZXJ0KHJlcGxpY2FzZXQuYXBwbGllci5jb25uZWN0ZWQg Jmd0OyAwKTs8YnI+KyByZXBsaWNhc2V0LmFwcGxpZXIuY29ubmVjdGVkLS07PGJyPisgYnJlYWs7 PGJyPisgY2FzZSBBUFBMSUVSX0xPQURJTkc6PGJyPisgYXNzZXJ0KHJlcGxpY2FzZXQuYXBwbGll ci5sb2FkaW5nICZndDsgMCk7PGJyPisgcmVwbGljYXNldC5hcHBsaWVyLmxvYWRpbmctLTs8YnI+ KyBicmVhazs8YnI+KyBjYXNlIEFQUExJRVJfRElTQ09OTkVDVEVEOjxicj4rIGJyZWFrOzxicj4r IGRlZmF1bHQ6PGJyPisgdW5yZWFjaGFibGUoKTs8YnI+IH08YnI+IHJlcGxpY2EtJmd0O2FwcGxp ZXJfc3luY19zdGF0ZSA9IHJlcGxpY2EtJmd0O2FwcGxpZXItJmd0O3N0YXRlOzxicj4gaWYgKHJl cGxpY2EtJmd0O2FwcGxpZXJfc3luY19zdGF0ZSA9PSBBUFBMSUVSX0xPQURJTkcpPGJyPkBAIC00 MTUsNDMgKzQxNSw0MyBAQCByZXBsaWNhX29uX2FwcGxpZXJfc3RhdGVfZihzdHJ1Y3QgdHJpZ2dl ciAqdHJpZ2dlciwgdm9pZCAqZXZlbnQpPGJyPiBzdHJ1Y3QgcmVwbGljYSAqcmVwbGljYSA9IGNv bnRhaW5lcl9vZih0cmlnZ2VyLDxicj4gc3RydWN0IHJlcGxpY2EsIG9uX2FwcGxpZXJfc3RhdGUp Ozxicj4gc3dpdGNoIChyZXBsaWNhLSZndDthcHBsaWVyLSZndDtzdGF0ZSkgezxicj4tIGNhc2Ug QVBQTElFUl9JTklUSUFMX0pPSU46PGJyPi0gcmVwbGljYXNldC5pc19qb2luaW5nID0gdHJ1ZTs8 YnI+LSBicmVhazs8YnI+LSBjYXNlIEFQUExJRVJfSk9JTkVEOjxicj4tIHJlcGxpY2FzZXQuaXNf am9pbmluZyA9IGZhbHNlOzxicj4tIGJyZWFrOzxicj4tIGNhc2UgQVBQTElFUl9DT05ORUNURUQ6 PGJyPi0gdHJ5IHs8YnI+LSBpZiAodHRfdXVpZF9pc19uaWwoJmFtcDtyZXBsaWNhLSZndDt1dWlk KSk8YnI+LSByZXBsaWNhX29uX2FwcGxpZXJfY29ubmVjdChyZXBsaWNhKTs8YnI+LSBlbHNlPGJy Pi0gcmVwbGljYV9vbl9hcHBsaWVyX3JlY29ubmVjdChyZXBsaWNhKTs8YnI+LSB9IGNhdGNoIChF eGNlcHRpb24gKmUpIHs8YnI+LSByZXR1cm4gLTE7PGJyPi0gfTxicj4tIGJyZWFrOzxicj4tIGNh c2UgQVBQTElFUl9MT0FESU5HOjxicj4tIGNhc2UgQVBQTElFUl9ESVNDT05ORUNURUQ6PGJyPi0g cmVwbGljYV9vbl9hcHBsaWVyX2Rpc2Nvbm5lY3QocmVwbGljYSk7PGJyPi0gYnJlYWs7PGJyPi0g Y2FzZSBBUFBMSUVSX0ZPTExPVzo8YnI+LSByZXBsaWNhX29uX2FwcGxpZXJfc3luYyhyZXBsaWNh KTs8YnI+LSBicmVhazs8YnI+LSBjYXNlIEFQUExJRVJfT0ZGOjxicj4tIC8qPGJyPi0gKiBDb25u ZWN0aW9uIHRvIHNlbGYsIGR1cGxpY2F0ZSBjb25uZWN0aW9uPGJyPi0gKiB0byB0aGUgc2FtZSBt YXN0ZXIsIG9yIHRoZSBhcHBsaWVyIGZpYmVyPGJyPi0gKiBoYXMgYmVlbiBjYW5jZWxsZWQuIEFz c3VtZSBzeW5jZWQuPGJyPi0gKi88YnI+LSByZXBsaWNhX29uX2FwcGxpZXJfc3luYyhyZXBsaWNh KTs8YnI+LSBicmVhazs8YnI+LSBjYXNlIEFQUExJRVJfU1RPUFBFRDo8YnI+LSAvKiBVbnJlY292 ZXJhYmxlIGVycm9yLiAqLzxicj4tIHJlcGxpY2Ffb25fYXBwbGllcl9kaXNjb25uZWN0KHJlcGxp Y2EpOzxicj4tIGJyZWFrOzxicj4tIGRlZmF1bHQ6PGJyPi0gYnJlYWs7PGJyPisgY2FzZSBBUFBM SUVSX0lOSVRJQUxfSk9JTjo8YnI+KyByZXBsaWNhc2V0LmlzX2pvaW5pbmcgPSB0cnVlOzxicj4r IGJyZWFrOzxicj4rIGNhc2UgQVBQTElFUl9KT0lORUQ6PGJyPisgcmVwbGljYXNldC5pc19qb2lu aW5nID0gZmFsc2U7PGJyPisgYnJlYWs7PGJyPisgY2FzZSBBUFBMSUVSX0NPTk5FQ1RFRDo8YnI+ KyB0cnkgezxicj4rIGlmICh0dF91dWlkX2lzX25pbCgmYW1wO3JlcGxpY2EtJmd0O3V1aWQpKTxi cj4rIHJlcGxpY2Ffb25fYXBwbGllcl9jb25uZWN0KHJlcGxpY2EpOzxicj4rIGVsc2U8YnI+KyBy ZXBsaWNhX29uX2FwcGxpZXJfcmVjb25uZWN0KHJlcGxpY2EpOzxicj4rIH0gY2F0Y2ggKEV4Y2Vw dGlvbiAqZSkgezxicj4rIHJldHVybiAtMTs8YnI+KyB9PGJyPisgYnJlYWs7PGJyPisgY2FzZSBB UFBMSUVSX0xPQURJTkc6PGJyPisgY2FzZSBBUFBMSUVSX0RJU0NPTk5FQ1RFRDo8YnI+KyByZXBs aWNhX29uX2FwcGxpZXJfZGlzY29ubmVjdChyZXBsaWNhKTs8YnI+KyBicmVhazs8YnI+KyBjYXNl IEFQUExJRVJfRk9MTE9XOjxicj4rIHJlcGxpY2Ffb25fYXBwbGllcl9zeW5jKHJlcGxpY2EpOzxi cj4rIGJyZWFrOzxicj4rIGNhc2UgQVBQTElFUl9PRkY6PGJyPisgLyo8YnI+KyAqIENvbm5lY3Rp b24gdG8gc2VsZiwgZHVwbGljYXRlIGNvbm5lY3Rpb248YnI+KyAqIHRvIHRoZSBzYW1lIG1hc3Rl ciwgb3IgdGhlIGFwcGxpZXIgZmliZXI8YnI+KyAqIGhhcyBiZWVuIGNhbmNlbGxlZC4gQXNzdW1l IHN5bmNlZC48YnI+KyAqLzxicj4rIHJlcGxpY2Ffb25fYXBwbGllcl9zeW5jKHJlcGxpY2EpOzxi cj4rIGJyZWFrOzxicj4rIGNhc2UgQVBQTElFUl9TVE9QUEVEOjxicj4rIC8qIFVucmVjb3ZlcmFi bGUgZXJyb3IuICovPGJyPisgcmVwbGljYV9vbl9hcHBsaWVyX2Rpc2Nvbm5lY3QocmVwbGljYSk7 PGJyPisgYnJlYWs7PGJyPisgZGVmYXVsdDo8YnI+KyBicmVhazs8YnI+IH08YnI+IGZpYmVyX2Nv bmRfc2lnbmFsKCZhbXA7cmVwbGljYXNldC5hcHBsaWVyLmNvbmQpOzxicj4gcmV0dXJuIDA7PGJy PkBAIC00NzIsMTEgKzQ3MiwxMSBAQCByZXBsaWNhc2V0X3VwZGF0ZShzdHJ1Y3QgYXBwbGllciAq KmFwcGxpZXJzLCBpbnQgY291bnQpPGJyPiBzdHJ1Y3QgYXBwbGllciAqYXBwbGllcjs8YnI+IDxi cj4gYXV0byB1bmlxX2d1YXJkID0gbWFrZV9zY29wZWRfZ3VhcmQoWyZhbXA7XXs8YnI+LSByZXBs aWNhX2hhc2hfZm9yZWFjaF9zYWZlKCZhbXA7dW5pcSwgcmVwbGljYSwgbmV4dCkgezxicj4tIHJl cGxpY2FfaGFzaF9yZW1vdmUoJmFtcDt1bmlxLCByZXBsaWNhKTs8YnI+LSByZXBsaWNhX2NsZWFy X2FwcGxpZXIocmVwbGljYSk7PGJyPi0gcmVwbGljYV9kZWxldGUocmVwbGljYSk7PGJyPi0gfTxi cj4rIHJlcGxpY2FfaGFzaF9mb3JlYWNoX3NhZmUoJmFtcDt1bmlxLCByZXBsaWNhLCBuZXh0KSB7 PGJyPisgcmVwbGljYV9oYXNoX3JlbW92ZSgmYW1wO3VuaXEsIHJlcGxpY2EpOzxicj4rIHJlcGxp Y2FfY2xlYXJfYXBwbGllcihyZXBsaWNhKTs8YnI+KyByZXBsaWNhX2RlbGV0ZShyZXBsaWNhKTs8 YnI+KyB9PGJyPiB9KTs8YnI+IDxicj4gLyogQ2hlY2sgZm9yIGR1cGxpY2F0ZSBVVUlEICovPGJy PkBAIC01OTYsMTUgKzU5NiwxNSBAQCBhcHBsaWVyX29uX2Nvbm5lY3RfZihzdHJ1Y3QgdHJpZ2dl ciAqdHJpZ2dlciwgdm9pZCAqZXZlbnQpPGJyPiBzdHJ1Y3QgYXBwbGllciAqYXBwbGllciA9IChz dHJ1Y3QgYXBwbGllciAqKWV2ZW50Ozxicj4gPGJyPiBzd2l0Y2ggKGFwcGxpZXItJmd0O3N0YXRl KSB7PGJyPi0gY2FzZSBBUFBMSUVSX09GRjo8YnI+LSBjYXNlIEFQUExJRVJfU1RPUFBFRDo8YnI+ LSBzdGF0ZS0mZ3Q7ZmFpbGVkKys7PGJyPi0gYnJlYWs7PGJyPi0gY2FzZSBBUFBMSUVSX0NPTk5F Q1RFRDo8YnI+LSBzdGF0ZS0mZ3Q7Y29ubmVjdGVkKys7PGJyPi0gYnJlYWs7PGJyPi0gZGVmYXVs dDo8YnI+LSByZXR1cm4gMDs8YnI+KyBjYXNlIEFQUExJRVJfT0ZGOjxicj4rIGNhc2UgQVBQTElF Ul9TVE9QUEVEOjxicj4rIHN0YXRlLSZndDtmYWlsZWQrKzs8YnI+KyBicmVhazs8YnI+KyBjYXNl IEFQUExJRVJfQ09OTkVDVEVEOjxicj4rIHN0YXRlLSZndDtjb25uZWN0ZWQrKzs8YnI+KyBicmVh azs8YnI+KyBkZWZhdWx0Ojxicj4rIHJldHVybiAwOzxicj4gfTxicj4gZmliZXJfY29uZF9zaWdu YWwoJmFtcDtzdGF0ZS0mZ3Q7d2FrZXVwKTs8YnI+IGFwcGxpZXJfcGF1c2UoYXBwbGllcik7PGJy PmRpZmYgLS1naXQgYS9zcmMvYm94L3VzZXIuY2MgYi9zcmMvYm94L3VzZXIuY2M8YnI+aW5kZXgg NTA2MTRjNmYyLi4zNjZlYmNkNzIgMTAwNjQ0PGJyPi0tLSBhL3NyYy9ib3gvdXNlci5jYzxicj4r KysgYi9zcmMvYm94L3VzZXIuY2M8YnI+QEAgLTMwMiw2ICszMDIsMTIgQEAgdXNlcl9zZXRfZWZm ZWN0aXZlX2FjY2VzcyhzdHJ1Y3QgdXNlciAqdXNlcik8YnI+IH08YnI+IH08YnI+IDxicj4rc3Rh dGljIHZvaWQgcHJpdl9kZWZfY3JlYXRlX2Zyb21fdHVwbGVfeGMoc3RydWN0IHByaXZfZGVmICpw cml2LCBzdHJ1Y3QgdHVwbGUgKnR1cGxlKTxicj4rezxicj4rIGlmIChwcml2X2RlZl9jcmVhdGVf ZnJvbV90dXBsZShwcml2LCB0dXBsZSkgIT0gMCk8YnI+KyBkaWFnX3JhaXNlKCk7PGJyPit9PGJy Pis8YnI+IC8qKjxicj4gKiBSZWxvYWQgdXNlciBwcml2aWxlZ2VzIGFuZCByZS1ncmFudCB0aGVt Ljxicj4gKi88YnI+QEAgLTMzOSw4ICszNDUsNyBAQCB1c2VyX3JlbG9hZF9wcml2cyhzdHJ1Y3Qg dXNlciAqdXNlcik8YnI+IHN0cnVjdCB0dXBsZSAqdHVwbGU7PGJyPiB3aGlsZSAoKHR1cGxlID0g aXRlcmF0b3JfbmV4dF94YyhpdCkpICE9IE5VTEwpIHs8YnI+IHN0cnVjdCBwcml2X2RlZiBwcml2 Ozxicj4tIGlmIChwcml2X2RlZl9jcmVhdGVfZnJvbV90dXBsZSgmYW1wO3ByaXYsIHR1cGxlKSAh PSAwKTxicj4tIGRpYWdfcmFpc2UoKTs8YnI+KyBwcml2X2RlZl9jcmVhdGVfZnJvbV90dXBsZV94 YygmYW1wO3ByaXYsIHR1cGxlKTs8YnI+IC8qKjxicj4gKiBTa2lwIHJvbGUgZ3JhbnRzLCB3ZSdy ZSBvbmx5PGJyPiAqIGludGVyZXN0ZWQgaW4gcmVhbCBvYmplY3RzLjxicj5kaWZmIC0tZ2l0IGEv c3JjL2JveC92eV9zY2hlZHVsZXIuYyBiL3NyYy9ib3gvdnlfc2NoZWR1bGVyLmM8YnI+aW5kZXgg ZWUzNjFjMzFmLi44NmJlZDgwMTMgMTAwNjQ0PGJyPi0tLSBhL3NyYy9ib3gvdnlfc2NoZWR1bGVy LmM8YnI+KysrIGIvc3JjL2JveC92eV9zY2hlZHVsZXIuYzxicj5AQCAtNTEwLDcgKzUxMCw3IEBA IHZ5X3NjaGVkdWxlcl9yZXNldF9zdGF0KHN0cnVjdCB2eV9zY2hlZHVsZXIgKnNjaGVkdWxlcik8 YnI+IHN0YXQtJmd0O2NvbXBhY3Rpb25fb3V0cHV0ID0gMDs8YnI+IH08YnI+IDxicj4tc3RhdGlj IHZvaWQ8YnI+K3N0YXRpYyBpbnQ8YnI+IHZ5X3NjaGVkdWxlcl9vbl9kZWxldGVfbHNtKHN0cnVj dCB0cmlnZ2VyICp0cmlnZ2VyLCB2b2lkICpldmVudCk8YnI+IHs8YnI+IHN0cnVjdCB2eV9sc20g KmxzbSA9IGV2ZW50Ozxicj5AQCAtNTIxLDYgKzUyMSw3IEBAIHZ5X3NjaGVkdWxlcl9vbl9kZWxl dGVfbHNtKHN0cnVjdCB0cmlnZ2VyICp0cmlnZ2VyLCB2b2lkICpldmVudCk8YnI+IHZ5X2NvbXBh Y3Rpb25faGVhcF9kZWxldGUoJmFtcDtzY2hlZHVsZXItJmd0O2NvbXBhY3Rpb25faGVhcCwgbHNt KTs8YnI+IHRyaWdnZXJfY2xlYXIodHJpZ2dlcik7PGJyPiBmcmVlKHRyaWdnZXIpOzxicj4rIHJl dHVybiAwOzxicj4gfTxicj4gPGJyPiBpbnQ8YnI+LS0gPGJyPjIuMTcuMTwvcD48L0JPRFk+PC9I VE1MPgo= ----ALT--m3YiODMOHBa7EFrT8m8HWNOm1C2dH5Ix1567425238--