From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgau2.qq.com (smtpbgau2.qq.com [54.206.34.216]) by sourceware.org (Postfix) with ESMTPS id 183E13858D1E for ; Wed, 8 May 2024 03:58:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 183E13858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 183E13858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.206.34.216 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1715140733; cv=none; b=KTXa69nOvdhq74LamTnVbFwL/3kl4gmu/QnrsCmGERx/+9D5Rn1juDzH7sZd+zOUcahiBeOpf5GRy6dHoZ1jG2RJ+I3Mm9xepslY25mhpd/rMPhFVEVVr0W/G+73ZGdKu6rUkTxzG1pIBet/s3UELBZ/MQhIPKOZfw5Y21QUCHc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1715140733; c=relaxed/simple; bh=351pkmZN4gmN7tLQdpzenmqTYhZKDQBEZrvsVy7uG94=; h=Date:From:To:Subject:Mime-Version:Message-ID; b=Y3ZC8U5k5CjgVRRTCXAuWUlxpyqclJjJntLpzOrhNPYd75oxZl7v8j0dkZnMae9s65vMxjfgjDh2OkHEa7Rx1JWI/MDHVtjfJZ2ei1bXLns0VaTIscvbFKLksxtoWZo9HVt13hzmuCpuDI776uyCUDM0NNwakzG3IF1toDP2+Z8= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtpsz7t1715140704t0kkfpg X-QQ-Originating-IP: 7kC6bjH7i6cDbxWxd7+RPMB/cnj+8NIxcNDWji4PJ6o= Received: from LAPTOP-EPITNQBU ( [113.104.211.197]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 08 May 2024 11:58:22 +0800 (CST) X-QQ-SSF: 01400000000000H0V000000A0000000 X-QQ-FEAT: zT6n3Y95oi2Cl8HTEJaV8aP2BmNCe916D2Af4dWvtU0LdjNN85RXgOhFr6uOr W1igYYt9R945uG8aDkySS2fB8tvZW+gCROGKyHqdPA1ISZJnWaSMkWSEPuGT3wbfJb3K4vf 4YnOYhkWBndyTa61ricQx8bNqiNxOi/sXrOPi7Xn4hNxUav4UvuWuE8scN+sU6S2osJ49Bo vpNchlkXQhSSP4jWWsNyEUNAmD3IQm07+QUvY71/46U8WFjGi6uNzEOSh4AI0/2/ywvW/y1 yj02+EkSuHmhUPsu+O3+KT8j2az3218U8D4R3XWgM5hdOT5h9gxceEPuWSCjBAtOW2zVMrw /3+BzSvGgSn5D1DB9wKuyPL8xwr82oDGlR3PL5jvKVE+Il5J+XZT4BCtMY/P9bqCdj7XFDY j7deP+DefPoYWTZEWn0jZQpPIwmbpt3ueD0vbJQkZmc= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 15054013103338993032 Date: Wed, 8 May 2024 11:58:23 +0800 From: "juzhe.zhong@rivai.ai" To: =?GB2312?B?s8LLtg==?= , gcc-patches Cc: =?GB2312?B?s8LLtg==?= , =?GB2312?B?z8S9+g==?= , "vmakarov@redhat.com" , richard.sandiford , =?GB2312?B?tqHA1ruq?= , xtan , yi.lizzy.li Subject: Re: [df-Add-DF_LIVE_SUBREG-problem] df: Add DF_LIVE_SUBREG problem References: <20240508032521.137334-1-shuo.chen@rivai.ai> X-Priority: 3 X-GUID: 2FCD6D76-E3AB-4414-8F90-7630C0CFC941 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart686272376722_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. ------=_001_NextPart686272376722_=---- Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 VGhhbmtzIENoZW5zaHVvIGZvciB3b3Jpbmcgb24gaXQuDQoNCkhpLCByZXZp ZXdlcnMuDQoNCldlIChSaXZhaSkgb2ZmY2lhbGx5IGFubm91bmNlIG91ciBh bm90aGVyIGVuZ2luZWVyIChzaHVvLmNoZW5Acml2YWkuYWkpIHdpbGwgY29u dGludWUgb24gDQp3b3JraW5nIG9uIG9wdGltaXppbmcgYW5kIHRlc3Rpbmcg Y29kZXMgb2YgPHN1YnJlZyBvcHRpbWl6YXRpb24+IGFjY29yZGluZyB0byB0 aGUgY29tbWVudHMNCmZyb20gcmV2aWV3ZXJzLiANCg0KVGhhbmtzLg0KDQoN Cmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBzaHVvLmNoZW4NCkRh dGU6IDIwMjQtMDUtMDggMTE6MjUNClRvOiBnY2MtcGF0Y2hlcw0KQ0M6IHNo dW8uY2hlbjsganV6aGUuemhvbmc7IGppbi54aWE7IHZtYWthcm92OyByaWNo YXJkLnNhbmRpZm9yZDsgTGVodWEgRGluZw0KU3ViamVjdDogW2RmLUFkZC1E Rl9MSVZFX1NVQlJFRy1wcm9ibGVtXSBkZjogQWRkIERGX0xJVkVfU1VCUkVH IHByb2JsZW0NCkZyb206IExlaHVhIERpbmcgPGxlaHVhLmRpbmdAcml2YWku YWk+DQogDQpUaGlzIHBhdGNoIGFkZCBhIG5ldyBERiBwcm9ibGVtLCBuYW1l ZCBERl9MSVZFX1NVQlJFRy4gVGhpcyBwcm9ibGVtDQppcyBleHRlbmRlZCBm cm9tIHRoZSBERl9MUiBwcm9ibGVtIGFuZCBzdXBwb3J0IHRyYWNrIHRoZSBz dWJyZWcgbGl2ZW5lc3MNCm9mIG11bHRpcmVnIHBzZXVkbyBpZiB0aGVzZSBw c2V1ZG8gc2F0aXNmeSB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogDQog IDEuIHRoZSBtb2RlIHNpemUgZ3JlYXRlciB0aGFuIGl0J3MgUkVHTU9ERV9O QVRVUkFMX1NJWkUuDQogIDIuIHRoZSByZWcgaXMgdXNlZCBpbiBpbnNucyB2 aWEgc3VicmVnIHBhdHRlcm4uDQogDQpUaGUgbWFpbiBtZXRob2RzIGFyZSBh cyBmb2xsb3dzOg0KIA0KICAxLiBzcGxpdCBiaXRtYXAgaW4vb3V0L2RlZi91 c2UgZmlsZWRzIHRvIGZ1bGxfaW4vb3V0L2RlZi91c2UgYW5kDQogICAgIHBh cnRpYWxfaW4vb3V0L2RlZi91c2UuIElmIGEgcHNldWRvIG5lZWQgdG8gYmUg dHJhY2tlZCBpdCdzIHN1YnJlZw0KICAgICBsaXZlbmVzcywgdGhlbiBpdCBp cyByZWNvcmRlZCBpbiBwYXJ0aWFsX2luL291dC9kZWYvdXNlIGZpbGVkcy4N CiAgICAgTWVhbnRpbWVzLCB0aGVyZSBhcmUgcmFuZ2VfaW4vb3V0L2RlZi91 c2UgZmlsZWRzIHdoaWNoIHJlY29yZHMgdGhlIGxpdmUNCiAgICAgcmFuZ2Ug b2YgdGhlIHRyYWNrZWQgcHNldWRvLg0KICAyLiBpbiB0aGUgZGZfbGl2ZV9z dWJyZWdfZmluYWxpemUgZnVuY3Rpb24sIHdlIG1vdmUgdGhlIHRyYWNrZWQg cHNldWRvIGZyb20NCiAgICAgdGhlIHBhcnRpYWxfaW4vb3V0L2RlZi91c2Ug dG8gZnVsbF9pbi9vdXQvZGVmL3VzZSBpZiB0aGUgcHNldWRvJ3MgbGl2ZQ0K ICAgICByYW5nZSBpcyBmdWxsLg0KIA0KZ2NjL0NoYW5nZUxvZzoNCiANCiog TWFrZWZpbGUuaW46IEFkZCBzdWJyZWctbGl2ZS1yYW5nZSBvYmplY3QgZmls ZS4NCiogZGYtcHJvYmxlbXMuY2MgKHN0cnVjdCBkZl9saXZlX3N1YnJlZ19w cm9ibGVtX2RhdGEpOiBQcml2YXRlIHN0cnVjdA0KZm9yIERGX0xJVkVfU1VC UkVHIHByb2JsZW0uDQooZGZfbGl2ZV9zdWJyZWdfZ2V0X2JiX2luZm8pOiBn ZXR0aW5nIGJiIHJlZ3MgaW4vb3V0IGRhdGEuDQooZ2V0X2xpdmVfc3VicmVn X2xvY2FsX2JiX2luZm8pOiBnZXR0aW5nIGJiIHJlZ3MgdXNlL2RlZiBkYXRh Lg0KKG11bHRpcmVnX3ApOiBjaGVja2luZyBpcyB0aGUgcmVnbm8gYSBwc2V1 ZG8gbXVsdGlyZWcuDQoobmVlZF90cmFja19zdWJyZWdfcCk6IGNoZWNraW5n IGlzIHRoZSByZWdubyBuZWVkIHRvIGJlIHRyYWNrZWQuDQooaW5pdF9yYW5n ZSk6IGdldHRpbmcgdGhlIHJhbmdlIG9mIHN1YnJlZyBydHguDQoocmVtb3Zl X3N1YnJlZ19yYW5nZSk6IHJlbW92aW5nIHVzZSBkYXRhIGZvciB0aGUgcmVn L3N1YnJlZyBydHguDQooYWRkX3N1YnJlZ19yYW5nZV9kZWYpOiBhZGRpbmcg ZGVmIGRhdGEgZm9yIHRoZSByZWcvc3VicmVnIHJ0eC4NCihhZGRfc3VicmVn X3JhbmdlX3VzZSk6IGFkZGluZyB1c2UgZGF0YSBmb3IgdGhlIHJlZy9zdWJy ZWcgcnR4Lg0KKGRmX2xpdmVfc3VicmVnX2ZyZWVfYmJfaW5mbyk6IEZyZWUg YmFzaWMgYmxvY2sgZGYgZGF0YS4NCihkZl9saXZlX3N1YnJlZ19hbGxvYyk6 IEFsbG9jYXRlIGFuZCBpbml0IGRmIGRhdGEuDQooZGZfbGl2ZV9zdWJyZWdf cmVzZXQpOiBSZXNldCB0aGUgbGl2ZSBpbi9vdXQgZGYgZGF0YS4NCihkZl9s aXZlX3N1YnJlZ19iYl9sb2NhbF9jb21wdXRlKTogQ29tcHV0ZSBiYXNpYyBi bG9jayBkZiBkYXRhLg0KKGRmX2xpdmVfc3VicmVnX2xvY2FsX2NvbXB1dGUp OiBDb21wdXRlIGFsbCBiYXNpYyBibG9ja3MgZGYgZGF0YS4NCihkZl9saXZl X3N1YnJlZ19pbml0KTogSW5pdCB0aGUgaW4vb3V0IGRmIGRhdGEuDQooZGZf bGl2ZV9zdWJyZWdfY2hlY2tfcmVzdWx0KTogQXNzZXJ0IHRoZSBmdWxsIGFu ZCBwYXJ0aWFsIGRmIGRhdGEuDQooZGZfbGl2ZV9zdWJyZWdfY29uZmx1ZW5j ZV8wKTogQ29uZmx1ZW5jZSBmdW5jdGlvbiBmb3IgaW5maW5pdGUgbG9vcHMu DQooZGZfbGl2ZV9zdWJyZWdfY29uZmx1ZW5jZV9uKTogQ29uZmx1ZW5jZSBm dW5jdGlvbiBmb3Igbm9ybWFsIGVkZ2UuDQooZGZfbGl2ZV9zdWJyZWdfdHJh bnNmZXJfZnVuY3Rpb24pOiBUcmFuc2ZlciBmdW5jdGlvbi4NCihkZl9saXZl X3N1YnJlZ19maW5hbGl6ZSk6IEZpbmFsaXplIHRoZSBhbGxfaW4vYWxsX291 dCBkZiBkYXRhLg0KKGRmX2xpdmVfc3VicmVnX2ZyZWUpOiBGcmVlIHRoZSBk ZiBkYXRhLg0KKGRmX2xpdmVfc3VicmVnX3RvcF9kdW1wKTogRHVtcCB0b3Ag ZGYgZGF0YS4NCihkZl9saXZlX3N1YnJlZ19ib3R0b21fZHVtcCk6IER1bXAg Ym90dG9tIGRmIGRhdGEuDQooZGZfbGl2ZV9zdWJyZWdfYWRkX3Byb2JsZW0p OiBBZGQgdGhlIERGX0xJVkVfU1VCUkVHIHByb2JsZW0uDQoqIGRmLmggKGVu dW0gZGZfcHJvYmxlbV9pZCk6IEFkZCBERl9MSVZFX1NVQlJFRy4NCihjbGFz cyBzdWJyZWdzX2xpdmUpOiBTaW1wbGUgZGVjYWxhcmUuDQooY2xhc3MgZGZf bGl2ZV9zdWJyZWdfbG9jYWxfYmJfaW5mbyk6IE5ldyBjbGFzcyBmb3IgZnVs bC9wYXJ0aWFsIGRlZi91c2UNCmRmIGRhdGEuDQooY2xhc3MgZGZfbGl2ZV9z dWJyZWdfYmJfaW5mbyk6IE5ldyBjbGFzcyBmb3IgZnVsbC9wYXJ0aWFsIGlu L291dA0KZGYgZGF0YS4NCihkZl9saXZlX3N1YnJlZyk6IGdldHRpbmcgdGhl IGRmX2xpdmVfc3VicmVnIGRhdGEuDQooZGZfbGl2ZV9zdWJyZWdfYWRkX3By b2JsZW0pOiBFeHBvcnRlZC4NCihkZl9saXZlX3N1YnJlZ19maW5hbGl6ZSk6 IERpdHRvLg0KKGRmX2xpdmVfc3VicmVnX2NoZWNrX3Jlc3VsdCk6IERpdHRv Lg0KKG11bHRpcmVnX3ApOiBEaXR0by4NCihpbml0X3JhbmdlKTogRGl0dG8u DQooYWRkX3N1YnJlZ19yYW5nZSk6IERpdHRvLg0KKHJlbW92ZV9zdWJyZWdf cmFuZ2UpOiBEaXR0by4NCihkZl9nZXRfc3VicmVnX2xpdmVfaW4pOiBBY2Nl c3NvciB0aGUgYWxsX2luIGRmIGRhdGEuDQooZGZfZ2V0X3N1YnJlZ19saXZl X291dCk6IEFjY2Vzc29yIHRoZSBhbGxfb3V0IGRmIGRhdGEuDQooZGZfZ2V0 X3N1YnJlZ19saXZlX2Z1bGxfaW4pOiBBY2Nlc3NvciB0aGUgZnVsbF9pbiBk ZiBkYXRhLg0KKGRmX2dldF9zdWJyZWdfbGl2ZV9mdWxsX291dCk6IEFjY2Vz c29yIHRoZSBmdWxsX291dCBkZiBkYXRhLg0KKGRmX2dldF9zdWJyZWdfbGl2 ZV9wYXJ0aWFsX2luKTogQWNjZXNzb3IgdGhlIHBhcnRpYWxfaW4gZGYgZGF0 YS4NCihkZl9nZXRfc3VicmVnX2xpdmVfcGFydGlhbF9vdXQpOiBBY2Nlc3Nv ciB0aGUgcGFydGlhbF9vdXQgZGYgZGF0YS4NCihkZl9nZXRfc3VicmVnX2xp dmVfcmFuZ2VfaW4pOiBBY2Nlc3NvciB0aGUgcmFuZ2VfaW4gZGYgZGF0YS4N CihkZl9nZXRfc3VicmVnX2xpdmVfcmFuZ2Vfb3V0KTogQWNjZXNzb3IgdGhl IHJhbmdlX291dCBkZiBkYXRhLg0KKiByZWdzLmggKGdldF9uYmxvY2tzKTog R2V0IHRoZSBibG9ja3Mgb2YgbW9kZS4NCiogc2JpdG1hcC5jYyAoYml0bWFw X2Z1bGxfcCk6IHNiaXRtYXAgcHJlZGljYXRvci4NCihiaXRtYXBfc2FtZV9w KTogc2JpdG1hcCBwcmVkaWNhdG9yLg0KKHRlc3RfZnVsbCk6IHRlc3QgYml0 bWFwX2Z1bGxfcC4NCih0ZXN0X3NhbWUpOiB0ZXN0IGJpdG1hcF9zYW1lX3Au DQooc2JpdG1hcF9jY190ZXN0cyk6IEFkZCB0ZXN0X2Z1bGwgYW5kIHRlc3Rf c2FtZS4NCiogc2JpdG1hcC5oIChiaXRtYXBfZnVsbF9wKTogRXhwb3J0ZWQu DQooYml0bWFwX3NhbWVfcCk6IERpdHRvLg0KKiB0aW1ldmFyLmRlZiAoVFZf REZfTElWRV9TVUJSRUcpOiBhZGQgREZfTElWRV9TVUJSRUcgdGltZXZhci4N Ciogc3VicmVnLWxpdmUtcmFuZ2UuY2M6IE5ldyBmaWxlLg0KKiBzdWJyZWct bGl2ZS1yYW5nZS5oOiBOZXcgZmlsZS4NCi0tLQ0KZ2NjL01ha2VmaWxlLmlu ICAgICAgICAgIHwgICAgMSArDQpnY2MvZGYtcHJvYmxlbXMuY2MgICAgICAg fCAxMTc5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t DQpnY2MvZGYuaCAgICAgICAgICAgICAgICAgfCAgMTU4ICsrKysrDQpnY2Mv cmVncy5oICAgICAgICAgICAgICAgfCAgICA1ICsNCmdjYy9zYml0bWFwLmNj ICAgICAgICAgICB8ICAgOTggKysrKw0KZ2NjL3NiaXRtYXAuaCAgICAgICAg ICAgIHwgICAgMiArDQpnY2Mvc3VicmVnLWxpdmUtcmFuZ2UuY2MgfCAgIDUz ICsrDQpnY2Mvc3VicmVnLWxpdmUtcmFuZ2UuaCAgfCAgMjA2ICsrKysrKysN CmdjYy90aW1ldmFyLmRlZiAgICAgICAgICB8ICAgIDEgKw0KOSBmaWxlcyBj aGFuZ2VkLCAxNTYzIGluc2VydGlvbnMoKyksIDE0MCBkZWxldGlvbnMoLSkN CmNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mvc3VicmVnLWxpdmUtcmFuZ2UuY2MN CmNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mvc3VicmVnLWxpdmUtcmFuZ2UuaA0K IA0KZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmls ZS5pbg0KaW5kZXggYTc0NzYxYjdhYjMuLmUxOTUyMzhmNmFiIDEwMDY0NA0K LS0tIGEvZ2NjL01ha2VmaWxlLmluDQorKysgYi9nY2MvTWFrZWZpbGUuaW4N CkBAIC0xNjg0LDYgKzE2ODQsNyBAQCBPQkpTID0gXA0Kc3RvcmUtbW90aW9u Lm8gXA0Kc3RyZWFtZXItaG9va3MubyBcDQpzdHJpbmdwb29sLm8gXA0KKyBz dWJyZWctbGl2ZS1yYW5nZS5vIFwNCnN1YnN0cmluZy1sb2NhdGlvbnMubyBc DQp0YXJnZXQtZ2xvYmFscy5vIFwNCnRhcmdob29rcy5vIFwNCmRpZmYgLS1n aXQgYS9nY2MvZGYtcHJvYmxlbXMuY2MgYi9nY2MvZGYtcHJvYmxlbXMuY2MN CmluZGV4IDg4ZWUwZGQ2N2ZjLi42NTg3YTY3NzQ1NCAxMDA2NDQNCi0tLSBh L2djYy9kZi1wcm9ibGVtcy5jYw0KKysrIGIvZ2NjL2RmLXByb2JsZW1zLmNj DQpAQCAtMjgsNiArMjgsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBm aWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQ0KI2luY2x1ZGUgInRhcmdldC5o Ig0KI2luY2x1ZGUgInJ0bC5oIg0KI2luY2x1ZGUgImRmLmgiDQorI2luY2x1 ZGUgInN1YnJlZy1saXZlLXJhbmdlLmgiDQojaW5jbHVkZSAibWVtbW9kZWwu aCINCiNpbmNsdWRlICJ0bV9wLmgiDQojaW5jbHVkZSAiaW5zbi1jb25maWcu aCINCkBAIC00OSw5ICs1MCw5IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhl IGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlDQpzdGF0aWMgYml0bWFwX2hl YWQgc2Vlbl9pbl9ibG9jazsNCnN0YXRpYyBiaXRtYXBfaGVhZCBzZWVuX2lu X2luc247DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIFV0aWxpdHkg ZnVuY3Rpb25zLg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q Lw0KKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi8qIEdl bmVyaWMgdmVyc2lvbnMgdG8gZ2V0IHRoZSB2b2lkKiB2ZXJzaW9uIG9mIHRo ZSBibG9jayBpbmZvLiAgT25seQ0KICAgIHVzZWQgaW5zaWRlIHRoZSBwcm9i bGVtIGluc3RhbmNlIHZlY3RvcnMuICAqLw0KQEAgLTEwMSw3ICsxMDIsNyBA QCBkZl9wcmludF9iYl9pbmRleCAoYmFzaWNfYmxvY2sgYmIsIEZJTEUgKmZp bGUpDQp9DQogDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIFJF QUNISU5HIERFRklOSVRJT05TDQogICAgRmluZCB0aGUgbG9jYXRpb25zIGlu IHRoZSBmdW5jdGlvbiB3aGVyZSBlYWNoIGRlZmluaXRpb24gc2l0ZSBmb3Ig YQ0KQEAgLTExOSw3ICsxMjAsNyBAQCBkZl9wcmludF9iYl9pbmRleCAoYmFz aWNfYmxvY2sgYmIsIEZJTEUgKmZpbGUpDQogICAgQ0ZHLiAgRm9yIGEgVVNF IHRoYXQgaXMgbm90IHJlYWNoZWQgYnkgYSBERUYgb24gYWxsIHBhdGhzLCB3 ZSBzdGlsbCB3YW50DQogICAgdG8gbWFrZSB0aG9zZSBERUZzIHRoYXQgZG8g cmVhY2ggdGhlIFVTRSB2aXNpYmxlLCBhbmQgcHJ1bmluZyBiYXNlZCBvbg0K ICAgIERGX0xJVkUgd291bGQgbWFrZSB0aGF0IGltcG9zc2libGUuDQotICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLyogVGhpcyBwcm9ibGVt IHBsYXlzIGEgbGFyZ2UgbnVtYmVyIG9mIGdhbWVzIGZvciB0aGUgc2FrZSBv Zg0KICAgIGVmZmljaWVuY3kuDQpAQCAtNTYwLDcgKzU2MSw3IEBAIGRmX3Jk X2ZyZWUgKHZvaWQpDQogICAgICAgZGZfcmQtPmJsb2NrX2luZm9fc2l6ZSA9 IDA7DQogICAgICAgZnJlZSAoZGZfcmQtPmJsb2NrX2luZm8pOw0KLSAgICAg IGRmX3JkLT5ibG9ja19pbmZvID0gTlVMTDsNCisgICAgICBkZl9yZC0+Ymxv Y2tfaW5mbyA9IG51bGxwdHI7DQogICAgICAgZnJlZSAoZGZfcmQtPnByb2Js ZW1fZGF0YSk7DQogICAgIH0NCiAgIGZyZWUgKGRmX3JkKTsNCkBAIC02NzQs MjUgKzY3NSwyNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRmX3Byb2JsZW0g cHJvYmxlbV9SRCA9DQogICBERl9SRCwgICAgICAgICAgICAgICAgICAgICAg LyogUHJvYmxlbSBpZC4gICovDQogICBERl9GT1JXQVJELCAgICAgICAgICAg ICAgICAgLyogRGlyZWN0aW9uLiAgKi8NCiAgIGRmX3JkX2FsbG9jLCAgICAg ICAgICAgICAgICAvKiBBbGxvY2F0ZSB0aGUgcHJvYmxlbSBzcGVjaWZpYyBk YXRhLiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBS ZXNldCBnbG9iYWwgaW5mb3JtYXRpb24uICAqLw0KKyAgbnVsbHB0ciwgICAg ICAgICAgICAgICAgICAgIC8qIFJlc2V0IGdsb2JhbCBpbmZvcm1hdGlvbi4g ICovDQogICBkZl9yZF9mcmVlX2JiX2luZm8sICAgICAgICAgLyogRnJlZSBi YXNpYyBibG9jayBpbmZvLiAgKi8NCiAgIGRmX3JkX2xvY2FsX2NvbXB1dGUs ICAgICAgICAvKiBMb2NhbCBjb21wdXRlIGZ1bmN0aW9uLiAgKi8NCiAgIGRm X3JkX2luaXRfc29sdXRpb24sICAgICAgICAvKiBJbml0IHRoZSBzb2x1dGlv biBzcGVjaWZpYyBkYXRhLiAgKi8NCiAgIGRmX3dvcmtsaXN0X2RhdGFmbG93 LCAgICAgICAvKiBXb3JrbGlzdCBzb2x2ZXIuICAqLw0KLSAgTlVMTCwgICAg ICAgICAgICAgICAgICAgICAgIC8qIENvbmZsdWVuY2Ugb3BlcmF0b3IgMC4g ICovDQorICBudWxscHRyLCAgICAgICAgICAgICAgICAgICAgLyogQ29uZmx1 ZW5jZSBvcGVyYXRvciAwLiAgKi8NCiAgIGRmX3JkX2NvbmZsdWVuY2Vfbiwg ICAgICAgICAvKiBDb25mbHVlbmNlIG9wZXJhdG9yIG4uICAqLw0KICAgZGZf cmRfdHJhbnNmZXJfZnVuY3Rpb24sICAgIC8qIFRyYW5zZmVyIGZ1bmN0aW9u LiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBGaW5h bGl6ZSBmdW5jdGlvbi4gICovDQorICBudWxscHRyLCAgICAgICAgICAgICAg ICAgICAgICAgLyogRmluYWxpemUgZnVuY3Rpb24uICAqLw0KICAgZGZfcmRf ZnJlZSwgICAgICAgICAgICAgICAgIC8qIEZyZWUgYWxsIG9mIHRoZSBwcm9i bGVtIGluZm9ybWF0aW9uLiAgKi8NCiAgIGRmX3JkX2ZyZWUsICAgICAgICAg ICAgICAgICAvKiBSZW1vdmUgdGhpcyBwcm9ibGVtIGZyb20gdGhlIHN0YWNr IG9mIGRhdGFmbG93IHByb2JsZW1zLiAgKi8NCiAgIGRmX3JkX3N0YXJ0X2R1 bXAsICAgICAgICAgICAvKiBEZWJ1Z2dpbmcuICAqLw0KICAgZGZfcmRfdG9w X2R1bXAsICAgICAgICAgICAgIC8qIERlYnVnZ2luZyBzdGFydCBibG9jay4g ICovDQogICBkZl9yZF9ib3R0b21fZHVtcCwgICAgICAgICAgLyogRGVidWdn aW5nIGVuZCBibG9jay4gICovDQotICBOVUxMLCAgICAgICAgICAgICAgICAg ICAgICAgLyogRGVidWdnaW5nIHN0YXJ0IGluc24uICAqLw0KLSAgTlVMTCwg ICAgICAgICAgICAgICAgICAgICAgIC8qIERlYnVnZ2luZyBlbmQgaW5zbi4g ICovDQotICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogSW5jcmVt ZW50YWwgc29sdXRpb24gdmVyaWZ5IHN0YXJ0LiAgKi8NCi0gIE5VTEwsICAg ICAgICAgICAgICAgICAgICAgICAvKiBJbmNyZW1lbnRhbCBzb2x1dGlvbiB2 ZXJpZnkgZW5kLiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAgICAgICAgICAg ICAvKiBEZXBlbmRlbnQgcHJvYmxlbS4gICovDQorICBudWxscHRyLCAgICAg ICAgICAgICAgICAgICAgLyogRGVidWdnaW5nIHN0YXJ0IGluc24uICAqLw0K KyAgbnVsbHB0ciwgICAgICAgICAgICAgICAgICAgIC8qIERlYnVnZ2luZyBl bmQgaW5zbi4gICovDQorICBudWxscHRyLCAgICAgICAgICAgICAgICAgICAg LyogSW5jcmVtZW50YWwgc29sdXRpb24gdmVyaWZ5IHN0YXJ0LiAgKi8NCisg IG51bGxwdHIsICAgICAgICAgICAgICAgICAgICAvKiBJbmNyZW1lbnRhbCBz b2x1dGlvbiB2ZXJpZnkgZW5kLiAgKi8NCisgIG51bGxwdHIsICAgICAgICAg ICAgICAgICAgICAvKiBEZXBlbmRlbnQgcHJvYmxlbS4gICovDQogICBzaXpl b2YgKGNsYXNzIGRmX3JkX2JiX2luZm8pLC8qIFNpemUgb2YgZW50cnkgb2Yg YmxvY2tfaW5mbyBhcnJheS4gICovDQogICBUVl9ERl9SRCwgICAgICAgICAg ICAgICAgICAgLyogVGltaW5nIHZhcmlhYmxlLiAgKi8NCiAgIHRydWUgICAg ICAgICAgICAgICAgICAgICAgICAvKiBSZXNldCBibG9ja3Mgb24gZHJvcHBp bmcgb3V0IG9mIGJsb2Nrc190b19hbmFseXplLiAgKi8NCkBAIC03MTEsMTQg KzcxMiwxNCBAQCBkZl9yZF9hZGRfcHJvYmxlbSAodm9pZCkNCiANCi0vKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgTElWRSBSRUdJU1RFUlMNCiAg ICBGaW5kIHRoZSBsb2NhdGlvbnMgaW4gdGhlIGZ1bmN0aW9uIHdoZXJlIGFu eSB1c2Ugb2YgYSBwc2V1ZG8gY2FuDQogICAgcmVhY2ggaW4gdGhlIGJhY2t3 YXJkcyBkaXJlY3Rpb24uICBJbiBhbmQgb3V0IGJpdHZlY3RvcnMgYXJlIGJ1 aWx0DQogICAgZm9yIGVhY2ggYmFzaWMgYmxvY2suICBUaGUgcmVnbm8gaXMg dXNlZCB0byBpbmRleCBpbnRvIHRoZXNlIHNldHMuDQogICAgU2VlIGRmLmgg Zm9yIGRldGFpbHMuDQotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSovDQorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq Lw0KLyogUHJpdmF0ZSBkYXRhIHVzZWQgdG8gdmVyaWZ5IHRoZSBzb2x1dGlv biBmb3IgdGhpcyBwcm9ibGVtLiAgKi8NCnN0cnVjdCBkZl9scl9wcm9ibGVt X2RhdGENCkBAIC03NjQsOCArNzY1LDggQEAgZGZfbHJfYWxsb2MgKGJpdG1h cCBhbGxfYmxvY2tzIEFUVFJJQlVURV9VTlVTRUQpDQogICAgICAgcHJvYmxl bV9kYXRhID0gWE5FVyAoc3RydWN0IGRmX2xyX3Byb2JsZW1fZGF0YSk7DQog ICAgICAgZGZfbHItPnByb2JsZW1fZGF0YSA9IHByb2JsZW1fZGF0YTsNCi0g ICAgICBwcm9ibGVtX2RhdGEtPm91dCA9IE5VTEw7DQotICAgICAgcHJvYmxl bV9kYXRhLT5pbiA9IE5VTEw7DQorICAgICAgcHJvYmxlbV9kYXRhLT5vdXQg PSBudWxscHRyOw0KKyAgICAgIHByb2JsZW1fZGF0YS0+aW4gPSBudWxscHRy Ow0KICAgICAgIGJpdG1hcF9vYnN0YWNrX2luaXRpYWxpemUgKCZwcm9ibGVt X2RhdGEtPmxyX2JpdG1hcHMpOw0KICAgICB9DQpAQCAtMTEwMCwxMCArMTEw MSwxMCBAQCBkZl9scl9mcmVlICh2b2lkKQ0KICAgICAgIGRmX2xyLT5ibG9j a19pbmZvX3NpemUgPSAwOw0KICAgICAgIGZyZWUgKGRmX2xyLT5ibG9ja19p bmZvKTsNCi0gICAgICBkZl9sci0+YmxvY2tfaW5mbyA9IE5VTEw7DQorICAg ICAgZGZfbHItPmJsb2NrX2luZm8gPSBudWxscHRyOw0KICAgICAgIGJpdG1h cF9vYnN0YWNrX3JlbGVhc2UgKCZwcm9ibGVtX2RhdGEtPmxyX2JpdG1hcHMp Ow0KICAgICAgIGZyZWUgKGRmX2xyLT5wcm9ibGVtX2RhdGEpOw0KLSAgICAg IGRmX2xyLT5wcm9ibGVtX2RhdGEgPSBOVUxMOw0KKyAgICAgIGRmX2xyLT5w cm9ibGVtX2RhdGEgPSBudWxscHRyOw0KICAgICB9DQogICBCSVRNQVBfRlJF RSAoZGZfbHItPm91dF9vZl9kYXRlX3RyYW5zZmVyX2Z1bmN0aW9ucyk7DQpA QCAtMTIzMCw4ICsxMjMxLDggQEAgZGZfbHJfdmVyaWZ5X3NvbHV0aW9uX2Vu ZCAodm9pZCkNCiAgIGZyZWUgKHByb2JsZW1fZGF0YS0+aW4pOw0KICAgZnJl ZSAocHJvYmxlbV9kYXRhLT5vdXQpOw0KLSAgcHJvYmxlbV9kYXRhLT5pbiA9 IE5VTEw7DQotICBwcm9ibGVtX2RhdGEtPm91dCA9IE5VTEw7DQorICBwcm9i bGVtX2RhdGEtPmluID0gbnVsbHB0cjsNCisgIHByb2JsZW1fZGF0YS0+b3V0 ID0gbnVsbHB0cjsNCn0NCkBAIC0xMjUyLDE1ICsxMjUzLDE1IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZGZfcHJvYmxlbSBwcm9ibGVtX0xSID0NCiAgIGRm X2xyX3RyYW5zZmVyX2Z1bmN0aW9uLCAgICAvKiBUcmFuc2ZlciBmdW5jdGlv bi4gICovDQogICBkZl9scl9maW5hbGl6ZSwgICAgICAgICAgICAgLyogRmlu YWxpemUgZnVuY3Rpb24uICAqLw0KICAgZGZfbHJfZnJlZSwgICAgICAgICAg ICAgICAgIC8qIEZyZWUgYWxsIG9mIHRoZSBwcm9ibGVtIGluZm9ybWF0aW9u LiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBSZW1v dmUgdGhpcyBwcm9ibGVtIGZyb20gdGhlIHN0YWNrIG9mIGRhdGFmbG93IHBy b2JsZW1zLiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAv KiBEZWJ1Z2dpbmcuICAqLw0KKyAgbnVsbHB0ciwgICAgICAgICAgICAgICAg ICAgICAgIC8qIFJlbW92ZSB0aGlzIHByb2JsZW0gZnJvbSB0aGUgc3RhY2sg b2YgZGF0YWZsb3cgcHJvYmxlbXMuICAqLw0KKyAgbnVsbHB0ciwgICAgICAg ICAgICAgICAgICAgICAgIC8qIERlYnVnZ2luZy4gICovDQogICBkZl9scl90 b3BfZHVtcCwgICAgICAgICAgICAgLyogRGVidWdnaW5nIHN0YXJ0IGJsb2Nr LiAgKi8NCiAgIGRmX2xyX2JvdHRvbV9kdW1wLCAgICAgICAgICAvKiBEZWJ1 Z2dpbmcgZW5kIGJsb2NrLiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAgICAg ICAgICAgICAvKiBEZWJ1Z2dpbmcgc3RhcnQgaW5zbi4gICovDQotICBOVUxM LCAgICAgICAgICAgICAgICAgICAgICAgLyogRGVidWdnaW5nIGVuZCBpbnNu LiAgKi8NCisgIG51bGxwdHIsICAgICAgICAgICAgICAgICAgICAgICAvKiBE ZWJ1Z2dpbmcgc3RhcnQgaW5zbi4gICovDQorICBudWxscHRyLCAgICAgICAg ICAgICAgICAgICAgICAgLyogRGVidWdnaW5nIGVuZCBpbnNuLiAgKi8NCiAg IGRmX2xyX3ZlcmlmeV9zb2x1dGlvbl9zdGFydCwvKiBJbmNyZW1lbnRhbCBz b2x1dGlvbiB2ZXJpZnkgc3RhcnQuICAqLw0KICAgZGZfbHJfdmVyaWZ5X3Nv bHV0aW9uX2VuZCwgIC8qIEluY3JlbWVudGFsIHNvbHV0aW9uIHZlcmlmeSBl bmQuICAqLw0KLSAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIERl cGVuZGVudCBwcm9ibGVtLiAgKi8NCisgIG51bGxwdHIsICAgICAgICAgICAg ICAgICAgICAgICAvKiBEZXBlbmRlbnQgcHJvYmxlbS4gICovDQogICBzaXpl b2YgKGNsYXNzIGRmX2xyX2JiX2luZm8pLC8qIFNpemUgb2YgZW50cnkgb2Yg YmxvY2tfaW5mbyBhcnJheS4gICovDQogICBUVl9ERl9MUiwgICAgICAgICAg ICAgICAgICAgLyogVGltaW5nIHZhcmlhYmxlLiAgKi8NCiAgIGZhbHNlICAg ICAgICAgICAgICAgICAgICAgICAvKiBSZXNldCBibG9ja3Mgb24gZHJvcHBp bmcgb3V0IG9mIGJsb2Nrc190b19hbmFseXplLiAgKi8NCkBAIC0xMzQ0LDkg KzEzNDUsOTA4IEBAIGRmX2xyX3ZlcmlmeV90cmFuc2Zlcl9mdW5jdGlvbnMg KHZvaWQpDQogICBiaXRtYXBfY2xlYXIgKCZhbGxfYmxvY2tzKTsNCn0NCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAgUkVHSVNU RVIgQU5EIFNVQlJFR1MgTElWRVMNCisgICBMaWtlIERGX0xSLCBidXQgaW5j bHVkZSB0cmFja2luZyBzdWJyZWcgbGl2ZW5lc3MuIEN1cnJlbnRseSB1c2Vk IHRvIHByb3ZpZGUNCisgICBzdWJyZWcgbGl2ZW5lc3MgcmVsYXRlZCBpbmZv cm1hdGlvbiB0byB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yLiBUaGUgc3VicmVn DQorICAgaW5mb3JtYXRpb24gaXMgY3VycmVudGx5IHRyYWNrZWQgZm9yIHJl Z2lzdGVycyB0aGF0IHNhdGlzZnkgdGhlIGZvbGxvd2luZw0KKyAgIGNvbmRp dGlvbnM6DQorICAgICAxLiBSRUcgaXMgYSBwc2V1ZG8gcmVnaXN0ZXINCisg ICAgIDIuIE1PREVfU0laRSA+IFVOSVRfU0laRQ0KKyAgICAgMy4gTU9ERV9T SVpFIGlzIGEgbXVsdGlwbGUgb2YgVU5JVF9TSVpFDQorICAgICA0LiBSRUcg aXMgdXNlZCB2aWEgc3VicmVnIHBhdHRlcm4NCisgICBBc3N1bWluZzogTU9E RSA9IHRoZSBtYWNoaW5lIG1vZGUgb2YgdGhlIFJFRw0KKyAgICAgIE1PREVf U0laRSA9IEdFVF9NT0RFX1NJWkUgKE1PREUpDQorICAgICAgVU5JVF9TSVpF ID0gUkVHTU9ERV9OQVRVUkFMX1NJWkUgKE1PREUpDQorICAgQ29uZGl0aW9u IDMgaXMgY3VycmVudGx5IHN0cmljdCwgbWF5YmUgaXQgY2FuIGJlIHJlbW92 ZWQgaW4gdGhlIGZ1dHVyZSwgYnV0DQorICAgZm9yIG5vdyBpdCBpcyBzdWZm aWNpZW50Lg0KKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g Ki8NCisNCisvKiBUaGVzZSB0d28gZW1wdHkgZGF0YSBhcmUgdXNlZCBhcyBk ZWZhdWx0IGRhdGEgaW4gY2FzZSB0aGUgdXNlciBkb2VzIG5vdCB0dXJuDQor ICogb24gdGhlIHRyYWNrLXN1YnJlZy1saXZlbmVzcyBmZWF0dXJlLiAgKi8N CitiaXRtYXBfaGVhZCBkZl9lbXB0eV9iaXRtYXA7DQorc3VicmVnc19saXZl IGRmX2VtcHR5X2xpdmU7DQorDQorLyogUHJpdmF0ZSBkYXRhIGZvciBsaXZl X3N1YnJlZyBwcm9ibGVtLiAgKi8NCitzdHJ1Y3QgZGZfbGl2ZV9zdWJyZWdf cHJvYmxlbV9kYXRhDQorew0KKyAgLyogUmVjb3JkIHJlZ2lzdGVycyB0aGF0 IG5lZWQgdG8gdHJhY2sgc3VicmVnIGxpdmVuZXNzLiAgKi8NCisgIGJpdG1h cF9oZWFkIHRyYWNrZWRfcmVnczsNCisgIC8qIEFuIG9ic3RhY2sgZm9yIHRo ZSBiaXRtYXBzIHdlIG5lZWQgZm9yIHRoaXMgcHJvYmxlbS4gICovDQorICBi aXRtYXBfb2JzdGFjayBsaXZlX3N1YnJlZ19iaXRtYXBzOw0KK307DQotDQog DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLyogSGVs cGVyIGZ1bmN0aW9ucyAqLw0KKw0KK3N0YXRpYyBkZl9saXZlX3N1YnJlZ19i Yl9pbmZvICoNCitkZl9saXZlX3N1YnJlZ19nZXRfYmJfaW5mbyAodW5zaWdu ZWQgaW50IGluZGV4KQ0KK3sNCisgIGlmIChpbmRleCA8IGRmX2xpdmVfc3Vi cmVnLT5ibG9ja19pbmZvX3NpemUpDQorICAgIHJldHVybg0KKyAgICAgIHN0 YXRpY19jYXN0PGNsYXNzIGRmX2xpdmVfc3VicmVnX2JiX2luZm8gKj4oZGZf bGl2ZV9zdWJyZWctPmJsb2NrX2luZm8pICsgaW5kZXg7DQorICBlbHNlDQor ICAgIHJldHVybiBudWxscHRyOw0KK30NCisNCitzdGF0aWMgZGZfbGl2ZV9z dWJyZWdfbG9jYWxfYmJfaW5mbyAqDQorZ2V0X2xpdmVfc3VicmVnX2xvY2Fs X2JiX2luZm8gKHVuc2lnbmVkIGludCBiYl9pbmRleCkNCit7DQorICByZXR1 cm4gZGZfbGl2ZV9zdWJyZWdfZ2V0X2JiX2luZm8gKGJiX2luZGV4KTsNCit9 DQorDQorLyogUmV0dXJuIHRydWUgaWYgcmVnbm8gaXMgYSBtdWx0aXJlZy4g ICovDQorYm9vbA0KK211bHRpcmVnX3AgKGludCByZWdubykNCit7DQorICBp ZiAocmVnbm8gPCBGSVJTVF9QU0VVRE9fUkVHSVNURVIpDQorICAgIHJldHVy biBmYWxzZTsNCisgIHJ0eCByZWdub19ydHggPSByZWdub19yZWdfcnR4W3Jl Z25vXTsNCisgIG1hY2hpbmVfbW9kZSByZWdfbW9kZSA9IEdFVF9NT0RFIChy ZWdub19ydHgpOw0KKyAgcG9seV9pbnQ2NCB0b3RhbF9zaXplID0gR0VUX01P REVfU0laRSAocmVnX21vZGUpOw0KKyAgcG9seV9pbnQ2NCBuYXR1cmFsX3Np emUgPSBSRUdNT0RFX05BVFVSQUxfU0laRSAocmVnX21vZGUpOw0KKyAgcmV0 dXJuIG1heWJlX2d0ICh0b3RhbF9zaXplLCBuYXR1cmFsX3NpemUpDQorICYm IG11bHRpcGxlX3AgKHRvdGFsX3NpemUsIG5hdHVyYWxfc2l6ZSk7DQorfQ0K Kw0KKy8qIFJldHVybiB0cnVlIGlmIHRoZSBSRUdOTyBuZWVkIGJlIHRyYWNr IHdpdGggc3VicmVnIGxpdmVuZXNzLiAgKi8NCisNCitzdGF0aWMgYm9vbA0K K25lZWRfdHJhY2tfc3VicmVnX3AgKHVuc2lnbmVkIHJlZ25vKQ0KK3sNCisg IGF1dG8gKnByb2JsZW1fZGF0YSA9IHN0YXRpY19jYXN0PHN0cnVjdCBkZl9s aXZlX3N1YnJlZ19wcm9ibGVtX2RhdGEgKj4gKA0KKyAgICBkZl9saXZlX3N1 YnJlZy0+cHJvYmxlbV9kYXRhKTsNCisgIHJldHVybiBiaXRtYXBfYml0X3Ag KCZwcm9ibGVtX2RhdGEtPnRyYWNrZWRfcmVncywgcmVnbm8pOw0KK30NCisN CisvKiBJbml0aWFsaXplIHN1YnJlZyBsaXZlIHJhbmdlIG9mIE9QIHdpdGgg UkVHTU9ERV9OQVRVUkFMX1NJWkUuICovDQorDQordm9pZA0KK2luaXRfcmFu Z2UgKHJ0eCBvcCwgc2JpdG1hcCByYW5nZSkNCit7DQorICBydHggcmVnID0g U1VCUkVHX1AgKG9wKSA/IFNVQlJFR19SRUcgKG9wKSA6IG9wOw0KKyAgbWFj aGluZV9tb2RlIHJlZ19tb2RlID0gR0VUX01PREUgKHJlZyk7DQorDQorICBp ZiAoIXJlYWRfbW9kaWZ5X3N1YnJlZ19wIChvcCkpDQorICAgIHsNCisgICAg ICBiaXRtYXBfc2V0X3JhbmdlIChyYW5nZSwgMCwgZ2V0X25ibG9ja3MgKHJl Z19tb2RlKSk7DQorICAgICAgcmV0dXJuOw0KKyAgICB9DQorDQorICBydHgg c3VicmVnID0gb3A7DQorICBtYWNoaW5lX21vZGUgc3VicmVnX21vZGUgPSBH RVRfTU9ERSAoc3VicmVnKTsNCisgIHBvbHlfaW50NjQgb2Zmc2V0ID0gU1VC UkVHX0JZVEUgKHN1YnJlZyk7DQorICBpbnQgbmJsb2NrcyA9IGdldF9uYmxv Y2tzIChyZWdfbW9kZSk7DQorICBwb2x5X2ludDY0IHVuaXRfc2l6ZSA9IFJF R01PREVfTkFUVVJBTF9TSVpFIChyZWdfbW9kZSk7DQorICBwb2x5X2ludDY0 IHN1YnJlZ19zaXplID0gR0VUX01PREVfU0laRSAoc3VicmVnX21vZGUpOw0K KyAgcG9seV9pbnQ2NCBsZWZ0ID0gb2Zmc2V0ICsgc3VicmVnX3NpemU7DQor DQorICBpbnQgc3VicmVnX3N0YXJ0ID0gLTE7DQorICBpbnQgc3VicmVnX25i bG9ja3MgPSAtMTsNCisgIGZvciAoaW50IGkgPSAwOyBpIDwgbmJsb2Nrczsg aSArPSAxKQ0KKyAgICB7DQorICAgICAgcG9seV9pbnQ2NCByaWdodCA9IHVu aXRfc2l6ZSAqIChpICsgMSk7DQorICAgICAgaWYgKHN1YnJlZ19zdGFydCA8 IDAgJiYgbWF5YmVfbHQgKG9mZnNldCwgcmlnaHQpKQ0KKyBzdWJyZWdfc3Rh cnQgPSBpOw0KKyAgICAgIGlmIChzdWJyZWdfbmJsb2NrcyA8IDAgJiYgbWF5 YmVfbGUgKGxlZnQsIHJpZ2h0KSkNCisgew0KKyAgIHN1YnJlZ19uYmxvY2tz ID0gaSArIDEgLSBzdWJyZWdfc3RhcnQ7DQorICAgYnJlYWs7DQorIH0NCisg ICAgfQ0KKyAgZ2NjX2Fzc2VydCAoc3VicmVnX3N0YXJ0ID49IDAgJiYgc3Vi cmVnX25ibG9ja3MgPiAwKTsNCisNCisgIGJpdG1hcF9zZXRfcmFuZ2UgKHJh bmdlLCBzdWJyZWdfc3RhcnQsIHN1YnJlZ19uYmxvY2tzKTsNCit9DQorDQor LyogUmVtb3ZlIFJBTkdFIGZyb20gQkJfSU5GTydzIHVzZSBkYXRhLiAgKi8N Cit2b2lkDQorcmVtb3ZlX3N1YnJlZ19yYW5nZSAoZGZfbGl2ZV9zdWJyZWdf bG9jYWxfYmJfaW5mbyAqYmJfaW5mbywgdW5zaWduZWQgaW50IHJlZ25vLA0K KyAgICAgIGNvbnN0X3NiaXRtYXAgcmFuZ2UpDQorew0KKyAgYml0bWFwIHBh cnRpYWwgPSAmYmJfaW5mby0+cGFydGlhbF91c2U7DQorDQorICBiYl9pbmZv LT5yYW5nZV91c2UtPnJlbW92ZV9yYW5nZSAocmVnbm8sIHJhbmdlKTsNCisg IGlmIChiYl9pbmZvLT5yYW5nZV91c2UtPmVtcHR5X3AgKHJlZ25vKSkNCisg ICAgYml0bWFwX2NsZWFyX2JpdCAocGFydGlhbCwgcmVnbm8pOw0KK30NCisN CisvKiBSZW1vdmUgUkFOR0Ugb2YgUkVGIGZyb20gQkJfSU5GTydzIHVzZSBk YXRhLiAgKi8NCitzdGF0aWMgdm9pZA0KK3JlbW92ZV9zdWJyZWdfcmFuZ2Ug KGRmX2xpdmVfc3VicmVnX2xvY2FsX2JiX2luZm8gKmJiX2luZm8sIGRmX3Jl ZiByZWYpDQorew0KKyAgdW5zaWduZWQgaW50IHJlZ25vID0gREZfUkVGX1JF R05PIChyZWYpOw0KKyAgbWFjaGluZV9tb2RlIHJlZ19tb2RlID0gR0VUX01P REUgKERGX1JFRl9SRUFMX1JFRyAocmVmKSk7DQorDQorICBpZiAobmVlZF90 cmFja19zdWJyZWdfcCAocmVnbm8pKQ0KKyAgICB7DQorICAgICAgYXV0b19z Yml0bWFwIHJhbmdlIChnZXRfbmJsb2NrcyAocmVnX21vZGUpKTsNCisgICAg ICBpbml0X3JhbmdlIChERl9SRUZfUkVHIChyZWYpLCByYW5nZSk7DQorICAg ICAgcmVtb3ZlX3N1YnJlZ19yYW5nZSAoYmJfaW5mbywgcmVnbm8sIHJhbmdl KTsNCisgICAgfQ0KKyAgZWxzZQ0KKyAgICB7DQorICAgICAgYml0bWFwX2Ns ZWFyX2JpdCAoJmJiX2luZm8tPmZ1bGxfdXNlLCByZWdubyk7DQorICAgICAg Z2NjX2Fzc2VydCAoIWJpdG1hcF9iaXRfcCAoJmJiX2luZm8tPnBhcnRpYWxf dXNlLCByZWdubykpOw0KKyAgICAgIGdjY19hc3NlcnQgKCFiaXRtYXBfYml0 X3AgKCZiYl9pbmZvLT5wYXJ0aWFsX2RlZiwgcmVnbm8pKTsNCisgICAgfQ0K K30NCisNCisvLyAvKiBhZGQgUkFOR0UgdG8gQkJfSU5GTydzIGRlZi91c2Uu IElmIGlzX2RlZiBpcyB0cnVlLCBtZWFucyBmb3IgQkJfSU5GTydzIGRlZiwN CisvLyAgICBvdGhlcndpc2UgZm9yIEJCX0lORk8ncyB1c2UuICAqLw0KKy8v IHZvaWQNCisvLyBhZGRfc3VicmVnX3JhbmdlIChkZl9saXZlX3N1YnJlZ19s b2NhbF9iYl9pbmZvICpiYl9pbmZvLCB1bnNpZ25lZCBpbnQgcmVnbm8sDQor Ly8gICBjb25zdF9zYml0bWFwIHJhbmdlLCBib29sIGlzX2RlZikNCisvLyB7 DQorLy8gICBiaXRtYXAgcGFydGlhbCA9IGlzX2RlZiA/ICZiYl9pbmZvLT5w YXJ0aWFsX2RlZiA6ICZiYl9pbmZvLT5wYXJ0aWFsX3VzZTsNCisvLyAgIHN1 YnJlZ3NfbGl2ZSAqcmFuZ2VfbGl2ZSA9IGlzX2RlZiA/IGJiX2luZm8tPnJh bmdlX2RlZiA6IGJiX2luZm8tPnJhbmdlX3VzZTsNCisNCisvLyAgIGJpdG1h cF9zZXRfYml0IChwYXJ0aWFsLCByZWdubyk7DQorLy8gICByYW5nZV9saXZl LT5hZGRfcmFuZ2UgKHJlZ25vLCByYW5nZSk7DQorLy8gfQ0KKw0KKw0KKy8q IGFkZCBSQU5HRSB0byBCQl9JTkZPJ3MgZGVmICovDQorDQordm9pZA0KK2Fk ZF9zdWJyZWdfcmFuZ2VfZGVmIChkZl9saXZlX3N1YnJlZ19sb2NhbF9iYl9p bmZvICpiYl9pbmZvLCB1bnNpZ25lZCBpbnQgcmVnbm8sDQorICAgY29uc3Rf c2JpdG1hcCByYW5nZSkNCit7DQorICBiaXRtYXAgcGFydGlhbCA9ICZiYl9p bmZvLT5wYXJ0aWFsX2RlZiA7DQorICBzdWJyZWdzX2xpdmUgKnJhbmdlX2xp dmUgPSBiYl9pbmZvLT5yYW5nZV9kZWY7DQorDQorICBiaXRtYXBfc2V0X2Jp dCAocGFydGlhbCwgcmVnbm8pOw0KKyAgcmFuZ2VfbGl2ZS0+YWRkX3Jhbmdl IChyZWdubywgcmFuZ2UpOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK2FkZF9z dWJyZWdfcmFuZ2VfZGVmIChkZl9saXZlX3N1YnJlZ19sb2NhbF9iYl9pbmZv ICpiYl9pbmZvLCBkZl9yZWYgcmVmKQ0KK3sNCisgIHVuc2lnbmVkIGludCBy ZWdubyA9IERGX1JFRl9SRUdOTyAocmVmKTsNCisgIG1hY2hpbmVfbW9kZSBy ZWdfbW9kZSA9IEdFVF9NT0RFIChERl9SRUZfUkVBTF9SRUcgKHJlZikpOw0K Kw0KKyAgaWYgKG5lZWRfdHJhY2tfc3VicmVnX3AgKHJlZ25vKSkNCisgICAg ew0KKyAgICAgIGF1dG9fc2JpdG1hcCByYW5nZSAoZ2V0X25ibG9ja3MgKHJl Z19tb2RlKSk7DQorICAgICAgaW5pdF9yYW5nZSAoREZfUkVGX1JFRyAocmVm KSwgcmFuZ2UpOw0KKyAgICAgIGFkZF9zdWJyZWdfcmFuZ2VfZGVmIChiYl9p bmZvLCByZWdubywgcmFuZ2UpOw0KKyAgICB9DQorICBlbHNlDQorICAgIHsN CisgICAgICBiaXRtYXAgZnVsbCA9ICZiYl9pbmZvLT5mdWxsX2RlZjsNCisg ICAgICBiaXRtYXAgcGFydGlhbCA9ICZiYl9pbmZvLT5wYXJ0aWFsX2RlZjsN CisgICAgICBiaXRtYXBfc2V0X2JpdCAoZnVsbCwgcmVnbm8pOw0KKyAgICAg IGdjY19hc3NlcnQgKCFiaXRtYXBfYml0X3AgKHBhcnRpYWwsIHJlZ25vKSk7 DQorICAgIH0NCit9DQorDQorLyogYWRkIFJBTkdFIHRvIEJCX0lORk8ncyB1 c2UuICovDQorDQordm9pZA0KK2FkZF9zdWJyZWdfcmFuZ2VfdXNlIChkZl9s aXZlX3N1YnJlZ19sb2NhbF9iYl9pbmZvICpiYl9pbmZvLCB1bnNpZ25lZCBp bnQgcmVnbm8sDQorICAgY29uc3Rfc2JpdG1hcCByYW5nZSkNCit7DQorICBi aXRtYXAgcGFydGlhbCA9ICZiYl9pbmZvLT5wYXJ0aWFsX3VzZTsNCisgIHN1 YnJlZ3NfbGl2ZSAqcmFuZ2VfbGl2ZSA9IGJiX2luZm8tPnJhbmdlX3VzZTsN CisNCisgIGJpdG1hcF9zZXRfYml0IChwYXJ0aWFsLCByZWdubyk7DQorICBy YW5nZV9saXZlLT5hZGRfcmFuZ2UgKHJlZ25vLCByYW5nZSk7DQorfQ0KKw0K K3N0YXRpYyB2b2lkDQorYWRkX3N1YnJlZ19yYW5nZV91c2UgKGRmX2xpdmVf c3VicmVnX2xvY2FsX2JiX2luZm8gKmJiX2luZm8sIGRmX3JlZiByZWYpDQor ew0KKyAgdW5zaWduZWQgaW50IHJlZ25vID0gREZfUkVGX1JFR05PIChyZWYp Ow0KKyAgbWFjaGluZV9tb2RlIHJlZ19tb2RlID0gR0VUX01PREUgKERGX1JF Rl9SRUFMX1JFRyAocmVmKSk7DQorDQorICBpZiAobmVlZF90cmFja19zdWJy ZWdfcCAocmVnbm8pKQ0KKyAgICB7DQorICAgICAgYXV0b19zYml0bWFwIHJh bmdlIChnZXRfbmJsb2NrcyAocmVnX21vZGUpKTsNCisgICAgICBpbml0X3Jh bmdlIChERl9SRUZfUkVHIChyZWYpLCByYW5nZSk7DQorICAgICAgYWRkX3N1 YnJlZ19yYW5nZV91c2UgKGJiX2luZm8sIHJlZ25vLCByYW5nZSk7DQorICAg IH0NCisgIGVsc2UNCisgICAgew0KKyAgICAgIGJpdG1hcCBmdWxsID0gJmJi X2luZm8tPmZ1bGxfdXNlOw0KKyAgICAgIGJpdG1hcCBwYXJ0aWFsID0gJmJi X2luZm8tPnBhcnRpYWxfdXNlOw0KKyAgICAgIGJpdG1hcF9zZXRfYml0IChm dWxsLCByZWdubyk7DQorICAgICAgZ2NjX2Fzc2VydCAoIWJpdG1hcF9iaXRf cCAocGFydGlhbCwgcmVnbm8pKTsNCisgICAgfQ0KK30NCisNCisNCisvKiBG cmVlIGJhc2ljIGJsb2NrIGluZm8uICAqLw0KKw0KK3N0YXRpYyB2b2lkDQor ZGZfbGl2ZV9zdWJyZWdfZnJlZV9iYl9pbmZvIChiYXNpY19ibG9jayBiYiBB VFRSSUJVVEVfVU5VU0VELCB2b2lkICp2YmJfaW5mbykNCit7DQorICBhdXRv ICpiYl9pbmZvID0gc3RhdGljX2Nhc3Q8ZGZfbGl2ZV9zdWJyZWdfYmJfaW5m byAqPiAodmJiX2luZm8pOw0KKyAgaWYgKGJiX2luZm8pDQorICAgIHsNCisg ICAgICBkZWxldGUgYmJfaW5mby0+cmFuZ2VfaW47DQorICAgICAgYmJfaW5m by0+cmFuZ2VfaW4gPSBudWxscHRyOw0KKyAgICAgIGRlbGV0ZSBiYl9pbmZv LT5yYW5nZV9vdXQ7DQorICAgICAgYmJfaW5mby0+cmFuZ2Vfb3V0ID0gbnVs bHB0cjsNCisNCisgICAgICBiaXRtYXBfY2xlYXIgKCZiYl9pbmZvLT5hbGxf aW4pOw0KKyAgICAgIGJpdG1hcF9jbGVhciAoJmJiX2luZm8tPmZ1bGxfaW4p Ow0KKyAgICAgIGJpdG1hcF9jbGVhciAoJmJiX2luZm8tPnBhcnRpYWxfaW4p Ow0KKyAgICAgIGJpdG1hcF9jbGVhciAoJmJiX2luZm8tPmFsbF9vdXQpOw0K KyAgICAgIGJpdG1hcF9jbGVhciAoJmJiX2luZm8tPmZ1bGxfb3V0KTsNCisg ICAgICBiaXRtYXBfY2xlYXIgKCZiYl9pbmZvLT5wYXJ0aWFsX291dCk7DQor ICAgIH0NCit9DQorDQorLyogQWxsb2NhdGUgb3IgcmVzZXQgYml0bWFwcyBm b3IgREZfTElWRV9TVUJSRUcgYmxvY2tzLiBUaGUgc29sdXRpb24gYml0cyBh cmUNCisgICBub3QgdG91Y2hlZCB1bmxlc3MgdGhlIGJsb2NrIGlzIG5ldy4g ICovDQorDQorc3RhdGljIHZvaWQNCitkZl9saXZlX3N1YnJlZ19hbGxvYyAo Yml0bWFwIGFsbF9ibG9ja3MgQVRUUklCVVRFX1VOVVNFRCkNCit7DQorICBz dHJ1Y3QgZGZfbGl2ZV9zdWJyZWdfcHJvYmxlbV9kYXRhICpwcm9ibGVtX2Rh dGE7DQorICBkZl9ncm93X2JiX2luZm8gKGRmX2xpdmVfc3VicmVnKTsNCisg IGlmIChkZl9saXZlX3N1YnJlZy0+cHJvYmxlbV9kYXRhKQ0KKyAgICBwcm9i bGVtX2RhdGENCisgICAgICA9IChzdHJ1Y3QgZGZfbGl2ZV9zdWJyZWdfcHJv YmxlbV9kYXRhICopIGRmX2xpdmVfc3VicmVnLT5wcm9ibGVtX2RhdGE7DQor ICBlbHNlDQorICAgIHsNCisgICAgICBwcm9ibGVtX2RhdGEgPSBYTkVXIChz dHJ1Y3QgZGZfbGl2ZV9zdWJyZWdfcHJvYmxlbV9kYXRhKTsNCisgICAgICBk Zl9saXZlX3N1YnJlZy0+cHJvYmxlbV9kYXRhID0gcHJvYmxlbV9kYXRhOw0K Kw0KKyAgICAgIGJpdG1hcF9vYnN0YWNrX2luaXRpYWxpemUgKCZwcm9ibGVt X2RhdGEtPmxpdmVfc3VicmVnX2JpdG1hcHMpOw0KKyAgICAgIGJpdG1hcF9p bml0aWFsaXplICgmcHJvYmxlbV9kYXRhLT50cmFja2VkX3JlZ3MsDQorICZw cm9ibGVtX2RhdGEtPmxpdmVfc3VicmVnX2JpdG1hcHMpOw0KKyAgICB9DQor DQorICBiaXRtYXBfY2xlYXIgKCZwcm9ibGVtX2RhdGEtPnRyYWNrZWRfcmVn cyk7DQorDQorICBiYXNpY19ibG9jayBiYjsNCisgIEZPUl9FQUNIX0JCX0ZO IChiYiwgY2Z1bikNCisgICAgYml0bWFwX3NldF9iaXQgKGRmX2xpdmVfc3Vi cmVnLT5vdXRfb2ZfZGF0ZV90cmFuc2Zlcl9mdW5jdGlvbnMsIGJiLT5pbmRl eCk7DQorDQorICBiaXRtYXBfc2V0X2JpdCAoZGZfbGl2ZV9zdWJyZWctPm91 dF9vZl9kYXRlX3RyYW5zZmVyX2Z1bmN0aW9ucywgRU5UUllfQkxPQ0spOw0K KyAgYml0bWFwX3NldF9iaXQgKGRmX2xpdmVfc3VicmVnLT5vdXRfb2ZfZGF0 ZV90cmFuc2Zlcl9mdW5jdGlvbnMsIEVYSVRfQkxPQ0spOw0KKw0KKyAgdW5z aWduZWQgaW50IGJiX2luZGV4Ow0KKyAgYml0bWFwX2l0ZXJhdG9yIGJpOw0K KyAgRVhFQ1VURV9JRl9TRVRfSU5fQklUTUFQIChkZl9saXZlX3N1YnJlZy0+ b3V0X29mX2RhdGVfdHJhbnNmZXJfZnVuY3Rpb25zLCAwLA0KKyAgICAgYmJf aW5kZXgsIGJpKQ0KKyAgICB7DQorICAgICAgLyogRmluZCB0aGUgcmVncyB3 aGljaCB3ZSBuZWVkIHRvIHRyYWNrIGl0J3Mgc3VicmVnIGxpdmVuZXNzLiAg Ki8NCisgICAgICBydHhfaW5zbiAqaW5zbjsNCisgICAgICBkZl9yZWYgdXNl Ow0KKyAgICAgIEZPUl9CQl9JTlNOUyAoYmIsIGluc24pDQorIHsNCisgICBp ZiAoIU5PTkRFQlVHX0lOU05fUCAoaW5zbikpDQorICAgICBjb250aW51ZTsN CisNCisgICBkZl9pbnNuX2luZm8gKmluc25faW5mbyA9IERGX0lOU05fSU5G T19HRVQgKGluc24pOw0KKw0KKyAgIEZPUl9FQUNIX0lOU05fSU5GT19VU0Ug KHVzZSwgaW5zbl9pbmZvKQ0KKyAgICAgew0KKyAgICAgICB1bnNpZ25lZCBp bnQgcmVnbm8gPSBERl9SRUZfUkVHTk8gKHVzZSk7DQorICAgICAgICAgICAg ICAvKiBBIG11bHRpcmVnIHdoaWNoIGlzIHVzZWQgdmlhIHN1YnJlZyBwYXR0 ZXJuLiAgKi8NCisgICAgICAgaWYgKG11bHRpcmVnX3AgKHJlZ25vKQ0KKyAg ICYmIERGX1JFRl9GTEFHUyAodXNlKSAmIChERl9SRUZfU1VCUkVHKSkNCisg Yml0bWFwX3NldF9iaXQgKCZwcm9ibGVtX2RhdGEtPnRyYWNrZWRfcmVncywg cmVnbm8pOw0KKyAgICAgfQ0KKyB9DQorICAgIH0NCisNCisgIGlmIChkdW1w X2ZpbGUpDQorICAgIHsNCisgICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICI7 OyByZWdzIG5lZWQgdG8gYmUgdHJhY2tlZCBzdWJyZWcgbGl2ZW5lc3M6ICIp Ow0KKyAgICAgIGRmX3ByaW50X3JlZ3NldCAoZHVtcF9maWxlLCAmcHJvYmxl bV9kYXRhLT50cmFja2VkX3JlZ3MpOw0KKyAgICB9DQorDQorICBzaXplX3Qg biA9IGJpdG1hcF9jb3VudF9iaXRzICgmcHJvYmxlbV9kYXRhLT50cmFja2Vk X3JlZ3MpOw0KKw0KKyAgRVhFQ1VURV9JRl9TRVRfSU5fQklUTUFQIChkZl9s aXZlX3N1YnJlZy0+b3V0X29mX2RhdGVfdHJhbnNmZXJfZnVuY3Rpb25zLCAw LA0KKyAgICAgYmJfaW5kZXgsIGJpKQ0KKyAgICB7DQorICAgICAgLyogQ2xl YW4gZ2xvYmFsIGluZm9zLiAgKi8NCisgICAgICBhdXRvICpiYl9pbmZvID0g ZGZfbGl2ZV9zdWJyZWdfZ2V0X2JiX2luZm8gKGJiX2luZGV4KTsNCisNCisg ICAgICAvKiBXaGVuIGJpdG1hcHMgYXJlIGFscmVhZHkgaW5pdGlhbGl6ZWQs IGp1c3QgY2xlYXIgdGhlbS4gICovDQorICAgICAgaWYgKGJiX2luZm8tPmFs bF9pbi5vYnN0YWNrKQ0KKyB7DQorICAgYml0bWFwX2NsZWFyICgmYmJfaW5m by0+YWxsX2luKTsNCisgICBiaXRtYXBfY2xlYXIgKCZiYl9pbmZvLT5mdWxs X2luKTsNCisgICBiaXRtYXBfY2xlYXIgKCZiYl9pbmZvLT5wYXJ0aWFsX2lu KTsNCisgICBiaXRtYXBfY2xlYXIgKCZiYl9pbmZvLT5hbGxfb3V0KTsNCisg ICBiaXRtYXBfY2xlYXIgKCZiYl9pbmZvLT5mdWxsX291dCk7DQorICAgYml0 bWFwX2NsZWFyICgmYmJfaW5mby0+cGFydGlhbF9vdXQpOw0KKyB9DQorICAg ICAgZWxzZQ0KKyB7DQorICAgYml0bWFwX2luaXRpYWxpemUgKCZiYl9pbmZv LT5hbGxfaW4sDQorICAgICAgJnByb2JsZW1fZGF0YS0+bGl2ZV9zdWJyZWdf Yml0bWFwcyk7DQorICAgYml0bWFwX2luaXRpYWxpemUgKCZiYl9pbmZvLT5m dWxsX2luLA0KKyAgICAgICZwcm9ibGVtX2RhdGEtPmxpdmVfc3VicmVnX2Jp dG1hcHMpOw0KKyAgIGJpdG1hcF9pbml0aWFsaXplICgmYmJfaW5mby0+cGFy dGlhbF9pbiwNCisgICAgICAmcHJvYmxlbV9kYXRhLT5saXZlX3N1YnJlZ19i aXRtYXBzKTsNCisgICBiaXRtYXBfaW5pdGlhbGl6ZSAoJmJiX2luZm8tPmFs bF9vdXQsDQorICAgICAgJnByb2JsZW1fZGF0YS0+bGl2ZV9zdWJyZWdfYml0 bWFwcyk7DQorICAgYml0bWFwX2luaXRpYWxpemUgKCZiYl9pbmZvLT5mdWxs X291dCwNCisgICAgICAmcHJvYmxlbV9kYXRhLT5saXZlX3N1YnJlZ19iaXRt YXBzKTsNCisgICBiaXRtYXBfaW5pdGlhbGl6ZSAoJmJiX2luZm8tPnBhcnRp YWxfb3V0LA0KKyAgICAgICZwcm9ibGVtX2RhdGEtPmxpdmVfc3VicmVnX2Jp dG1hcHMpOw0KKyB9DQorDQorICAgICAgaWYgKGJiX2luZm8tPnJhbmdlX2lu KQ0KKyB7DQorICAgYmJfaW5mby0+cmFuZ2VfaW4tPmNsZWFyIChuKTsNCisg ICBiYl9pbmZvLT5yYW5nZV9vdXQtPmNsZWFyIChuKTsNCisgfQ0KKyAgICAg IGVsc2UNCisgew0KKyAgIGJiX2luZm8tPnJhbmdlX2luID0gbmV3IHN1YnJl Z3NfbGl2ZSAobik7DQorICAgYmJfaW5mby0+cmFuZ2Vfb3V0ID0gbmV3IHN1 YnJlZ3NfbGl2ZSAobik7DQorIH0NCisNCisgICAgICAvKiBDbGVhbiBsb2Nh bCBpbmZvcy4gICovDQorICAgICAgZGZfbGl2ZV9zdWJyZWdfbG9jYWxfYmJf aW5mbyAqbG9jYWxfYmJfaW5mbw0KKyA9IGdldF9saXZlX3N1YnJlZ19sb2Nh bF9iYl9pbmZvIChiYl9pbmRleCk7DQorDQorICAgICAgLyogV2hlbiBiaXRt YXBzIGFyZSBhbHJlYWR5IGluaXRpYWxpemVkLCBqdXN0IGNsZWFyIHRoZW0u ICAqLw0KKyAgICAgIGlmIChsb2NhbF9iYl9pbmZvLT5mdWxsX3VzZS5vYnN0 YWNrKQ0KKyB7DQorICAgYml0bWFwX2NsZWFyICgmbG9jYWxfYmJfaW5mby0+ ZnVsbF9kZWYpOw0KKyAgIGJpdG1hcF9jbGVhciAoJmxvY2FsX2JiX2luZm8t PnBhcnRpYWxfZGVmKTsNCisgICBiaXRtYXBfY2xlYXIgKCZsb2NhbF9iYl9p bmZvLT5mdWxsX3VzZSk7DQorICAgYml0bWFwX2NsZWFyICgmbG9jYWxfYmJf aW5mby0+cGFydGlhbF91c2UpOw0KKyB9DQorICAgICAgZWxzZQ0KKyB7DQor ICAgYml0bWFwX2luaXRpYWxpemUgKCZsb2NhbF9iYl9pbmZvLT5mdWxsX2Rl ZiwNCisgICAgICAmcHJvYmxlbV9kYXRhLT5saXZlX3N1YnJlZ19iaXRtYXBz KTsNCisgICBiaXRtYXBfaW5pdGlhbGl6ZSAoJmxvY2FsX2JiX2luZm8tPnBh cnRpYWxfZGVmLA0KKyAgICAgICZwcm9ibGVtX2RhdGEtPmxpdmVfc3VicmVn X2JpdG1hcHMpOw0KKyAgIGJpdG1hcF9pbml0aWFsaXplICgmbG9jYWxfYmJf aW5mby0+ZnVsbF91c2UsDQorICAgICAgJnByb2JsZW1fZGF0YS0+bGl2ZV9z dWJyZWdfYml0bWFwcyk7DQorICAgYml0bWFwX2luaXRpYWxpemUgKCZsb2Nh bF9iYl9pbmZvLT5wYXJ0aWFsX3VzZSwNCisgICAgICAmcHJvYmxlbV9kYXRh LT5saXZlX3N1YnJlZ19iaXRtYXBzKTsNCisgfQ0KKw0KKyAgICAgIGlmIChs b2NhbF9iYl9pbmZvLT5yYW5nZV9kZWYpDQorIHsNCisgICBsb2NhbF9iYl9p bmZvLT5yYW5nZV9kZWYtPmNsZWFyIChuKTsNCisgICBsb2NhbF9iYl9pbmZv LT5yYW5nZV91c2UtPmNsZWFyIChuKTsNCisgfQ0KKyAgICAgIGVsc2UNCisg ew0KKyAgIGxvY2FsX2JiX2luZm8tPnJhbmdlX2RlZiA9IG5ldyBzdWJyZWdz X2xpdmUgKG4pOw0KKyAgIGxvY2FsX2JiX2luZm8tPnJhbmdlX3VzZSA9IG5l dyBzdWJyZWdzX2xpdmUgKG4pOw0KKyB9DQorICAgIH0NCisNCisgIGRmX2xp dmVfc3VicmVnLT5vcHRpb25hbF9wID0gdHJ1ZTsNCit9DQorDQorLyogUmVz ZXQgdGhlIGdsb2JhbCBzb2x1dGlvbiBmb3IgcmVjYWxjdWxhdGlvbi4gICov DQorDQorc3RhdGljIHZvaWQNCitkZl9saXZlX3N1YnJlZ19yZXNldCAoYml0 bWFwIGFsbF9ibG9ja3MpDQorew0KKyAgdW5zaWduZWQgaW50IGJiX2luZGV4 Ow0KKyAgYml0bWFwX2l0ZXJhdG9yIGJpOw0KKw0KKyAgRVhFQ1VURV9JRl9T RVRfSU5fQklUTUFQIChhbGxfYmxvY2tzLCAwLCBiYl9pbmRleCwgYmkpDQor ICAgIHsNCisgICAgICBhdXRvICpiYl9pbmZvID0gZGZfbGl2ZV9zdWJyZWdf Z2V0X2JiX2luZm8gKGJiX2luZGV4KTsNCisgICAgICBnY2NfYXNzZXJ0IChi Yl9pbmZvKTsNCisgICAgICBiaXRtYXBfY2xlYXIgKCZiYl9pbmZvLT5hbGxf aW4pOw0KKyAgICAgIGJpdG1hcF9jbGVhciAoJmJiX2luZm8tPmZ1bGxfaW4p Ow0KKyAgICAgIGJpdG1hcF9jbGVhciAoJmJiX2luZm8tPnBhcnRpYWxfaW4p Ow0KKyAgICAgIGJpdG1hcF9jbGVhciAoJmJiX2luZm8tPmFsbF9vdXQpOw0K KyAgICAgIGJpdG1hcF9jbGVhciAoJmJiX2luZm8tPmZ1bGxfb3V0KTsNCisg ICAgICBiaXRtYXBfY2xlYXIgKCZiYl9pbmZvLT5wYXJ0aWFsX291dCk7DQor ICAgICAgYmJfaW5mby0+cmFuZ2VfaW4tPmNsZWFyICgpOw0KKyAgICAgIGJi X2luZm8tPnJhbmdlX291dC0+Y2xlYXIgKCk7DQorICAgIH0NCit9DQorDQor LyogQ29tcHV0ZSBsb2NhbCBsaXZlIHJlZ2lzdGVyIGluZm8gZm9yIGJhc2lj IGJsb2NrIEJCLiAgKi8NCisNCitzdGF0aWMgdm9pZA0KK2RmX2xpdmVfc3Vi cmVnX2JiX2xvY2FsX2NvbXB1dGUgKHVuc2lnbmVkIGludCBiYl9pbmRleCkN Cit7DQorICBiYXNpY19ibG9jayBiYiA9IEJBU0lDX0JMT0NLX0ZPUl9GTiAo Y2Z1biwgYmJfaW5kZXgpOw0KKyAgZGZfbGl2ZV9zdWJyZWdfbG9jYWxfYmJf aW5mbyAqbG9jYWxfYmJfaW5mbw0KKyAgICA9IGdldF9saXZlX3N1YnJlZ19s b2NhbF9iYl9pbmZvIChiYl9pbmRleCk7DQorDQorICBydHhfaW5zbiAqaW5z bjsNCisgIGRmX3JlZiBkZWYsIHVzZTsNCisNCisgIC8qIFByb2Nlc3MgdGhl IHJlZ2lzdGVycyBzZXQgaW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIuICAqLw0K KyAgRk9SX0VBQ0hfQVJUSUZJQ0lBTF9ERUYgKGRlZiwgYmJfaW5kZXgpDQor ICAgIGlmICgoREZfUkVGX0ZMQUdTIChkZWYpICYgREZfUkVGX0FUX1RPUCkg PT0gMCkNCisgICAgICB7DQorIGFkZF9zdWJyZWdfcmFuZ2VfZGVmIChsb2Nh bF9iYl9pbmZvLCBkZWYpOw0KKyByZW1vdmVfc3VicmVnX3JhbmdlIChsb2Nh bF9iYl9pbmZvLCBkZWYpOw0KKyAgICAgIH0NCisNCisgIC8qIFByb2Nlc3Mg dGhlIGhhcmR3YXJlIHJlZ2lzdGVycyB0aGF0IGFyZSBhbHdheXMgbGl2ZS4g ICovDQorICBGT1JfRUFDSF9BUlRJRklDSUFMX1VTRSAodXNlLCBiYl9pbmRl eCkNCisgICAgaWYgKChERl9SRUZfRkxBR1MgKHVzZSkgJiBERl9SRUZfQVRf VE9QKSA9PSAwKQ0KKyAgICAgIGFkZF9zdWJyZWdfcmFuZ2VfdXNlIChsb2Nh bF9iYl9pbmZvLCB1c2UpOw0KKw0KKyAgRk9SX0JCX0lOU05TX1JFVkVSU0Ug KGJiLCBpbnNuKQ0KKyAgICB7DQorICAgICAgaWYgKCFOT05ERUJVR19JTlNO X1AgKGluc24pKQ0KKyBjb250aW51ZTsNCisNCisgICAgICBkZl9pbnNuX2lu Zm8gKmluc25faW5mbyA9IERGX0lOU05fSU5GT19HRVQgKGluc24pOw0KKyAg ICAgIEZPUl9FQUNIX0lOU05fSU5GT19ERUYgKGRlZiwgaW5zbl9pbmZvKQ0K KyB7DQorICAgcmVtb3ZlX3N1YnJlZ19yYW5nZSAobG9jYWxfYmJfaW5mbywg ZGVmKTsNCisgICBhZGRfc3VicmVnX3JhbmdlX2RlZiAobG9jYWxfYmJfaW5m bywgZGVmKTsNCisgfQ0KKw0KKyAgICAgIEZPUl9FQUNIX0lOU05fSU5GT19V U0UgKHVzZSwgaW5zbl9pbmZvKQ0KKyB7DQorICAgdW5zaWduZWQgaW50IHJl Z25vID0gREZfUkVGX1JFR05PICh1c2UpOw0KKyAgIC8qIElnbm9yZSB0aGUg dXNlIG9mIHN1YnJlZyB3aGljaCBpcyB1c2VkIGFzIGRlc3Qgb3BlcmFuZC4g ICovDQorICAgaWYgKG5lZWRfdHJhY2tfc3VicmVnX3AgKHJlZ25vKQ0KKyAg ICAgICAmJiBERl9SRUZfRkxBR1MgKHVzZSkgJiAoREZfUkVGX1JFQURfV1JJ VEUgfCBERl9SRUZfU1VCUkVHKSkNCisgICAgIGNvbnRpbnVlOw0KKyAgIGFk ZF9zdWJyZWdfcmFuZ2VfdXNlIChsb2NhbF9iYl9pbmZvLCB1c2UpOw0KKyB9 DQorICAgIH0NCisNCisgIC8qIFByb2Nlc3MgdGhlIHJlZ2lzdGVycyBzZXQg aW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgb3IgdGhlIGhhcmQNCisgICAgIGZy YW1lIHBvaW50ZXIgaWYgdGhpcyBibG9jayBpcyB0aGUgdGFyZ2V0IG9mIGEg bm9uIGxvY2FsDQorICAgICBnb3RvLiAgKi8NCisgIEZPUl9FQUNIX0FSVElG SUNJQUxfREVGIChkZWYsIGJiX2luZGV4KQ0KKyAgICBpZiAoREZfUkVGX0ZM QUdTIChkZWYpICYgREZfUkVGX0FUX1RPUCkNCisgICAgICB7DQorIGFkZF9z dWJyZWdfcmFuZ2VfdXNlIChsb2NhbF9iYl9pbmZvLCBkZWYpOw0KKyByZW1v dmVfc3VicmVnX3JhbmdlIChsb2NhbF9iYl9pbmZvLCBkZWYpOw0KKyAgICAg IH0NCisNCisjaWZkZWYgRUhfVVNFUw0KKyAgLyogUHJvY2VzcyB0aGUgdXNl cyB0aGF0IGFyZSBsaXZlIGludG8gYW4gZXhjZXB0aW9uIGhhbmRsZXIuICAq Lw0KKyAgRk9SX0VBQ0hfQVJUSUZJQ0lBTF9VU0UgKHVzZSwgYmJfaW5kZXgp DQorICAgIC8qIEFkZCB1c2UgdG8gc2V0IG9mIHVzZXMgaW4gdGhpcyBCQi4g ICovDQorICAgIGlmIChERl9SRUZfRkxBR1MgKHVzZSkgJiBERl9SRUZfQVRf VE9QKQ0KKyAgICAgIGFkZF9zdWJyZWdfcmFuZ2VfdXNlIChsb2NhbF9iYl9p bmZvLCB1c2UpOw0KKyNlbmRpZg0KK30NCisNCisvKiBDb21wdXRlIGxvY2Fs IGxpdmUgcmVnaXN0ZXIgaW5mbyBmb3IgZWFjaCBiYXNpYyBibG9jayB3aXRo aW4gQkxPQ0tTLiAgKi8NCisNCitzdGF0aWMgdm9pZA0KK2RmX2xpdmVfc3Vi cmVnX2xvY2FsX2NvbXB1dGUgKGJpdG1hcCBhbGxfYmxvY2tzIEFUVFJJQlVU RV9VTlVTRUQpDQorew0KKyAgdW5zaWduZWQgaW50IGJiX2luZGV4LCBpOw0K KyAgYml0bWFwX2l0ZXJhdG9yIGJpOw0KKw0KKyAgYml0bWFwX2NsZWFyICgm ZGYtPmhhcmR3YXJlX3JlZ3NfdXNlZCk7DQorDQorICAvKiBUaGUgYWxsLWlt cG9ydGFudCBzdGFjayBwb2ludGVyIG11c3QgYWx3YXlzIGJlIGxpdmUuICAq Lw0KKyAgYml0bWFwX3NldF9iaXQgKCZkZi0+aGFyZHdhcmVfcmVnc191c2Vk LCBTVEFDS19QT0lOVEVSX1JFR05VTSk7DQorDQorICAvKiBHbG9iYWwgcmVn cyBhcmUgYWx3YXlzIGxpdmUsIHRvby4gICovDQorICBmb3IgKGkgPSAwOyBp IDwgRklSU1RfUFNFVURPX1JFR0lTVEVSOyBpKyspDQorICAgIGlmIChnbG9i YWxfcmVnc1tpXSkNCisgICAgICBiaXRtYXBfc2V0X2JpdCAoJmRmLT5oYXJk d2FyZV9yZWdzX3VzZWQsIGkpOw0KKw0KKyAgLyogQmVmb3JlIHJlbG9hZCwg dGhlcmUgYXJlIGEgZmV3IHJlZ2lzdGVycyB0aGF0IG11c3QgYmUgZm9yY2Vk DQorICAgICBsaXZlIGV2ZXJ5d2hlcmUgLS0gd2hpY2ggbWlnaHQgbm90IGFs cmVhZHkgYmUgdGhlIGNhc2UgZm9yDQorICAgICBibG9ja3Mgd2l0aGluIGlu ZmluaXRlIGxvb3BzLiAgKi8NCisgIGlmICghcmVsb2FkX2NvbXBsZXRlZCkN CisgICAgew0KKyAgICAgIHVuc2lnbmVkIGludCBwaWNfb2Zmc2V0X3RhYmxl X3JlZ251bSA9IFBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNOw0KKyAgICAgIC8q IEFueSByZWZlcmVuY2UgdG8gYW55IHBzZXVkbyBiZWZvcmUgcmVsb2FkIGlz IGEgcG90ZW50aWFsDQorIHJlZmVyZW5jZSBvZiB0aGUgZnJhbWUgcG9pbnRl ci4gICovDQorICAgICAgYml0bWFwX3NldF9iaXQgKCZkZi0+aGFyZHdhcmVf cmVnc191c2VkLCBGUkFNRV9QT0lOVEVSX1JFR05VTSk7DQorDQorICAgICAg LyogUHNldWRvcyB3aXRoIGFyZ3VtZW50IGFyZWEgZXF1aXZhbGVuY2VzIG1h eSByZXF1aXJlDQorIHJlbG9hZGluZyB2aWEgdGhlIGFyZ3VtZW50IHBvaW50 ZXIuICAqLw0KKyAgICAgIGlmIChGUkFNRV9QT0lOVEVSX1JFR05VTSAhPSBB UkdfUE9JTlRFUl9SRUdOVU0NCisgICAmJiBmaXhlZF9yZWdzW0FSR19QT0lO VEVSX1JFR05VTV0pDQorIGJpdG1hcF9zZXRfYml0ICgmZGYtPmhhcmR3YXJl X3JlZ3NfdXNlZCwgQVJHX1BPSU5URVJfUkVHTlVNKTsNCisNCisgICAgICAv KiBBbnkgY29uc3RhbnQsIG9yIHBzZXVkbyB3aXRoIGNvbnN0YW50IGVxdWl2 YWxlbmNlcywgbWF5DQorIHJlcXVpcmUgcmVsb2FkaW5nIGZyb20gbWVtb3J5 IHVzaW5nIHRoZSBwaWMgcmVnaXN0ZXIuICAqLw0KKyAgICAgIGlmIChwaWNf b2Zmc2V0X3RhYmxlX3JlZ251bSAhPSBJTlZBTElEX1JFR05VTQ0KKyAgICYm IGZpeGVkX3JlZ3NbcGljX29mZnNldF90YWJsZV9yZWdudW1dKQ0KKyBiaXRt YXBfc2V0X2JpdCAoJmRmLT5oYXJkd2FyZV9yZWdzX3VzZWQsIHBpY19vZmZz ZXRfdGFibGVfcmVnbnVtKTsNCisgICAgfQ0KKw0KKyAgRVhFQ1VURV9JRl9T RVRfSU5fQklUTUFQIChkZl9saXZlX3N1YnJlZy0+b3V0X29mX2RhdGVfdHJh bnNmZXJfZnVuY3Rpb25zLCAwLA0KKyAgICAgYmJfaW5kZXgsIGJpKQ0KKyAg ICB7DQorICAgICAgaWYgKGJiX2luZGV4ID09IEVYSVRfQkxPQ0spDQorIHsN CisgICAvKiBUaGUgZXhpdCBibG9jayBpcyBzcGVjaWFsIGZvciB0aGlzIHBy b2JsZW0gYW5kIGl0cyBiaXRzIGFyZQ0KKyAgICAgIGNvbXB1dGVkIGZyb20g dGhpbiBhaXIuICAqLw0KKyAgIGRmX2xpdmVfc3VicmVnX2xvY2FsX2JiX2lu Zm8gKmxvY2FsX2JiX2luZm8NCisgICAgID0gZ2V0X2xpdmVfc3VicmVnX2xv Y2FsX2JiX2luZm8gKEVYSVRfQkxPQ0spOw0KKyAgIGJpdG1hcF9jb3B5ICgm bG9jYWxfYmJfaW5mby0+ZnVsbF91c2UsIGRmLT5leGl0X2Jsb2NrX3VzZXMp Ow0KKyB9DQorICAgICAgZWxzZQ0KKyBkZl9saXZlX3N1YnJlZ19iYl9sb2Nh bF9jb21wdXRlIChiYl9pbmRleCk7DQorICAgIH0NCisNCisgIGJpdG1hcF9j bGVhciAoZGZfbGl2ZV9zdWJyZWctPm91dF9vZl9kYXRlX3RyYW5zZmVyX2Z1 bmN0aW9ucyk7DQorfQ0KKw0KKy8qIEluaXRpYWxpemUgdGhlIHNvbHV0aW9u IHZlY3RvcnMuICAqLw0KKw0KK3N0YXRpYyB2b2lkDQorZGZfbGl2ZV9zdWJy ZWdfaW5pdCAoYml0bWFwIGFsbF9ibG9ja3MpDQorew0KKyAgdW5zaWduZWQg aW50IGJiX2luZGV4Ow0KKyAgYml0bWFwX2l0ZXJhdG9yIGJpOw0KKw0KKyAg RVhFQ1VURV9JRl9TRVRfSU5fQklUTUFQIChhbGxfYmxvY2tzLCAwLCBiYl9p bmRleCwgYmkpDQorICAgIHsNCisgICAgICBhdXRvICpiYl9pbmZvID0gZGZf bGl2ZV9zdWJyZWdfZ2V0X2JiX2luZm8gKGJiX2luZGV4KTsNCisgICAgICBk Zl9saXZlX3N1YnJlZ19sb2NhbF9iYl9pbmZvICpsb2NhbF9iYl9pbmZvDQor ID0gZ2V0X2xpdmVfc3VicmVnX2xvY2FsX2JiX2luZm8gKGJiX2luZGV4KTsN CisgICAgICBiaXRtYXBfY29weSAoJmJiX2luZm8tPmZ1bGxfaW4sICZsb2Nh bF9iYl9pbmZvLT5mdWxsX3VzZSk7DQorICAgICAgYml0bWFwX2NvcHkgKCZi Yl9pbmZvLT5wYXJ0aWFsX2luLCAmbG9jYWxfYmJfaW5mby0+cGFydGlhbF91 c2UpOw0KKyAgICAgIGJiX2luZm8tPnJhbmdlX2luLT5jb3B5X2xpdmVzICgq bG9jYWxfYmJfaW5mby0+cmFuZ2VfdXNlKTsNCisgICAgICBiaXRtYXBfY2xl YXIgKCZiYl9pbmZvLT5mdWxsX291dCk7DQorICAgICAgYml0bWFwX2NsZWFy ICgmYmJfaW5mby0+cGFydGlhbF9vdXQpOw0KKyAgICAgIGJiX2luZm8tPnJh bmdlX291dC0+Y2xlYXIgKCk7DQorICAgIH0NCit9DQorDQorLyogQ2hlY2sg dGhhdCB0aGUgc3RhdHVzIG9mIHRoZSBmaW5hbCByZXN1bHQgaXMgY29ycmVj dC4gICovDQorDQordm9pZA0KK2RmX2xpdmVfc3VicmVnX2NoZWNrX3Jlc3Vs dCAoYml0bWFwIGZ1bGwsIGJpdG1hcCBwYXJ0aWFsLA0KKyAgICAgIHN1YnJl Z3NfbGl2ZSAqcGFydGlhbF9saXZlKQ0KK3sNCisgIHVuc2lnbmVkIGludCBy ZWdubzsNCisgIGJpdG1hcF9pdGVyYXRvciBiaTsNCisgIC8qIE1ha2Ugc3Vy ZSB0aGF0IGZ1bGwgYW5kIHBhcnRpYWwgZG8gbm90IG92ZXJsYXAuICovDQor ICBnY2NfYXNzZXJ0ICghYml0bWFwX2ludGVyc2VjdF9wIChmdWxsLCBwYXJ0 aWFsKSk7DQorICAvKiBFbnN1cmUgdGhhdCByZWdpc3RlcnMgYmVsb25naW5n IHRvIGZ1bGwgYXJlIG5vdCBwYXJ0aWFsbHkgbGl2ZS4gKi8NCisgIEVYRUNV VEVfSUZfU0VUX0lOX0JJVE1BUCAoZnVsbCwgMCwgcmVnbm8sIGJpKQ0KKyAg ICBnY2NfYXNzZXJ0IChwYXJ0aWFsX2xpdmUtPmVtcHR5X3AgKHJlZ25vKSk7 DQorICAvKiBFbnN1cmUgdGhhdCByZWdpc3RlcnMgYmVsb25naW5nIHRvIHBh cnRpYWwgYXJlIHBhcnRpYWxseSBsaXZlLiAqLw0KKyAgRVhFQ1VURV9JRl9T RVRfSU5fQklUTUFQIChwYXJ0aWFsLCAwLCByZWdubywgYmkpDQorICAgIGdj Y19hc3NlcnQgKCFwYXJ0aWFsX2xpdmUtPmVtcHR5X3AgKHJlZ25vKSk7DQor fQ0KKw0KKy8qIENvbmZsdWVuY2UgZnVuY3Rpb24gdGhhdCBwcm9jZXNzZXMg aW5maW5pdGUgbG9vcHMuICBUaGlzIG1pZ2h0IGJlIGENCisgICBub3JldHVy biBmdW5jdGlvbiB0aGF0IHRocm93cy4gIEFuZCBldmVuIGlmIGl0IGlzbid0 LCBnZXR0aW5nIHRoZQ0KKyAgIHVud2luZCBpbmZvIHJpZ2h0IGhlbHBzIGRl YnVnZ2luZy4gICovDQorc3RhdGljIHZvaWQNCitkZl9saXZlX3N1YnJlZ19j b25mbHVlbmNlXzAgKGJhc2ljX2Jsb2NrIGJiKQ0KK3sNCisgIGJpdG1hcCBm dWxsX291dCA9ICZkZl9saXZlX3N1YnJlZ19nZXRfYmJfaW5mbyAoYmItPmlu ZGV4KS0+ZnVsbF9vdXQ7DQorICBpZiAoYmIgIT0gRVhJVF9CTE9DS19QVFJf Rk9SX0ZOIChjZnVuKSkNCisgICAgYml0bWFwX2NvcHkgKGZ1bGxfb3V0LCAm ZGYtPmhhcmR3YXJlX3JlZ3NfdXNlZCk7DQorfQ0KKw0KKy8qIENvbmZsdWVu Y2UgZnVuY3Rpb24gdGhhdCBpZ25vcmVzIGZha2UgZWRnZXMuICAqLw0KKw0K K3N0YXRpYyBib29sDQorZGZfbGl2ZV9zdWJyZWdfY29uZmx1ZW5jZV9uIChl ZGdlIGUpDQorew0KKyAgYXV0byAqc3JjX2JiX2luZm8NCisgICAgPSBkZl9s aXZlX3N1YnJlZ19nZXRfYmJfaW5mbyAoZS0+c3JjLT5pbmRleCk7DQorICBh dXRvICpkZXN0X2JiX2luZm8NCisgICAgPSBkZl9saXZlX3N1YnJlZ19nZXRf YmJfaW5mbyAoZS0+ZGVzdC0+aW5kZXgpOw0KKw0KKyAgYm9vbCBjaGFuZ2Vk ID0gZmFsc2U7DQorDQorICAvKiBDYWxsLWNsb2JiZXJlZCByZWdpc3RlcnMg ZGllIGFjcm9zcyBleGNlcHRpb24gYW5kIGNhbGwgZWRnZXMuDQorICAgICBD b25zZXJ2YXRpdmVseSB0cmVhdCBwYXJ0aWFsbHktY2xvYmJlcmVkIHJlZ2lz dGVycyBhcyBzdXJ2aXZpbmcNCisgICAgIGFjcm9zcyB0aGUgZWRnZXM7IHRo ZXkgbWlnaHQgb3IgbWlnaHQgbm90LCBkZXBlbmRpbmcgb24gd2hhdA0KKyAg ICAgbW9kZSB0aGV5IGhhdmUuICAqLw0KKyAgLyogPz8/IEFibm9ybWFsIGNh bGwgZWRnZXMgaWdub3JlZCBmb3IgdGhlIG1vbWVudCwgYXMgdGhpcyBnZXRz DQorICAgICBjb25mdXNlZCBieSBzaWJsaW5nIGNhbGwgZWRnZXMsIHdoaWNo IGNyYXNoZXMgcmVnLXN0YWNrLiAgKi8NCisgIGlmIChlLT5mbGFncyAmIEVE R0VfRUgpDQorICAgIHsNCisgICAgICBiaXRtYXBfdmlldzxIQVJEX1JFR19T RVQ+IGVoX2tpbGxzIChlaF9lZGdlX2FiaS5mdWxsX3JlZ19jbG9iYmVycyAo KSk7DQorICAgICAgY2hhbmdlZCA9IGJpdG1hcF9pb3JfYW5kX2NvbXBsX2lu dG8gKCZzcmNfYmJfaW5mby0+ZnVsbF9vdXQsDQorICAgICZkZXN0X2JiX2lu Zm8tPmZ1bGxfaW4sIGVoX2tpbGxzKTsNCisgICAgfQ0KKyAgZWxzZQ0KKyAg ICBjaGFuZ2VkID0gYml0bWFwX2lvcl9pbnRvICgmc3JjX2JiX2luZm8tPmZ1 bGxfb3V0LCAmZGVzdF9iYl9pbmZvLT5mdWxsX2luKTsNCisNCisgIGNoYW5n ZWQgfD0gYml0bWFwX2lvcl9pbnRvICgmc3JjX2JiX2luZm8tPmZ1bGxfb3V0 LCAmZGYtPmhhcmR3YXJlX3JlZ3NfdXNlZCk7DQorDQorICAvKiBIYW5kbGUg cGFydGlhbCBsaXZlIGNhc2UuICAqLw0KKyAgaWYgKCFiaXRtYXBfZW1wdHlf cCAoJmRlc3RfYmJfaW5mby0+cGFydGlhbF9pbikpDQorICAgIHsNCisgICAg ICB1bnNpZ25lZCBpbnQgcmVnbm87DQorICAgICAgYml0bWFwX2l0ZXJhdG9y IGJpOw0KKyAgICAgIEVYRUNVVEVfSUZfU0VUX0lOX0JJVE1BUCAoJmRlc3Rf YmJfaW5mby0+cGFydGlhbF9pbiwNCisgRklSU1RfUFNFVURPX1JFR0lTVEVS LCByZWdubywgYmkpDQorIHsNCisgICBzYml0bWFwIGRlc3RfcmFuZ2UgPSBk ZXN0X2JiX2luZm8tPnJhbmdlX2luLT5nZXRfcmFuZ2UgKHJlZ25vKTsNCisg ICBjaGFuZ2VkIHw9IHNyY19iYl9pbmZvLT5yYW5nZV9vdXQtPmFkZF9yYW5n ZSAocmVnbm8sIGRlc3RfcmFuZ2UpOw0KKyB9DQorICAgICAgY2hhbmdlZCB8 PSBiaXRtYXBfaW9yX2ludG8gKCZzcmNfYmJfaW5mby0+cGFydGlhbF9vdXQs DQorICAgJmRlc3RfYmJfaW5mby0+cGFydGlhbF9pbik7DQorDQorICAgICAg ZGZfbGl2ZV9zdWJyZWdfY2hlY2tfcmVzdWx0ICgmc3JjX2JiX2luZm8tPmZ1 bGxfb3V0LA0KKyAgICAmc3JjX2JiX2luZm8tPnBhcnRpYWxfb3V0LA0KKyAg ICBzcmNfYmJfaW5mby0+cmFuZ2Vfb3V0KTsNCisgICAgfQ0KKw0KKyAgcmV0 dXJuIGNoYW5nZWQ7DQorfQ0KKw0KKy8qIFRyYW5zZmVyIGZ1bmN0aW9uLiBJ TiA9IFVTRSB8IChPVVQgJiB+REVGKS4gICovDQorDQorc3RhdGljIGJvb2wN CitkZl9saXZlX3N1YnJlZ190cmFuc2Zlcl9mdW5jdGlvbiAoaW50IGJiX2lu ZGV4KQ0KK3sNCisgIGF1dG8gKmJiX2luZm8gPSBkZl9saXZlX3N1YnJlZ19n ZXRfYmJfaW5mbyAoYmJfaW5kZXgpOw0KKyAgYXV0byAqbG9jYWxfYmJfaW5m bw0KKyAgICA9IGdldF9saXZlX3N1YnJlZ19sb2NhbF9iYl9pbmZvIChiYl9p bmRleCk7DQorDQorICBib29sIGNoYW5nZWQgPSBmYWxzZTsNCisNCisgIGNo YW5nZWQNCisgICAgfD0gYml0bWFwX2lvcl9hbmRfY29tcGwgKCZiYl9pbmZv LT5mdWxsX2luLCAmbG9jYWxfYmJfaW5mby0+ZnVsbF91c2UsDQorICAgICAg JmJiX2luZm8tPmZ1bGxfb3V0LCAmbG9jYWxfYmJfaW5mby0+ZnVsbF9kZWYp Ow0KKw0KKyAgLyogSGFuZGxlIHBhcnRpYWwgbGl2ZSBjYXNlLiAgKi8NCisg IGlmICghYml0bWFwX2VtcHR5X3AgKCZiYl9pbmZvLT5wYXJ0aWFsX291dCkN CisgICAgICB8fCAhYml0bWFwX2VtcHR5X3AgKCZsb2NhbF9iYl9pbmZvLT5w YXJ0aWFsX3VzZSkpDQorICAgIHsNCisgICAgICB1bnNpZ25lZCBpbnQgcmVn bm87DQorICAgICAgYml0bWFwX2l0ZXJhdG9yIGJpOw0KKyAgICAgIGJpdG1h cF9oZWFkIHRlbXBfcGFydGlhbF9vdXQ7DQorICAgICAgc3VicmVnc19saXZl IHRlbXBfcmFuZ2Vfb3V0Ow0KKw0KKyAgICAgIC8qIFRFTVAgPSAoT1VUICYg fkRFRikgKi8NCisgICAgICBiaXRtYXBfaW5pdGlhbGl6ZSAoJnRlbXBfcGFy dGlhbF9vdXQsICZiaXRtYXBfZGVmYXVsdF9vYnN0YWNrKTsNCisgICAgICBF WEVDVVRFX0lGX1NFVF9JTl9CSVRNQVAgKCZiYl9pbmZvLT5wYXJ0aWFsX291 dCwgRklSU1RfUFNFVURPX1JFR0lTVEVSLA0KKyByZWdubywgYmkpDQorIHsN CisgICBzYml0bWFwIG91dF9yYW5nZSA9IGJiX2luZm8tPnJhbmdlX291dC0+ Z2V0X3JhbmdlIChyZWdubyk7DQorICAgdGVtcF9yYW5nZV9vdXQuYWRkX3Jh bmdlIChyZWdubywgb3V0X3JhbmdlKTsNCisgICBpZiAoYml0bWFwX2JpdF9w ICgmbG9jYWxfYmJfaW5mby0+cGFydGlhbF9kZWYsIHJlZ25vKSkNCisgICAg IHsNCisgICAgICAgc2JpdG1hcCBkZWZfcmFuZ2UgPSBsb2NhbF9iYl9pbmZv LT5yYW5nZV9kZWYtPmdldF9yYW5nZSAocmVnbm8pOw0KKyAgICAgICB0ZW1w X3JhbmdlX291dC5yZW1vdmVfcmFuZ2UgKHJlZ25vLCBkZWZfcmFuZ2UpOw0K KyAgICAgICBpZiAoIXRlbXBfcmFuZ2Vfb3V0LmVtcHR5X3AgKHJlZ25vKSkN CisgYml0bWFwX3NldF9iaXQgKCZ0ZW1wX3BhcnRpYWxfb3V0LCByZWdubyk7 DQorICAgICB9DQorICAgZWxzZQ0KKyAgICAgYml0bWFwX3NldF9iaXQgKCZ0 ZW1wX3BhcnRpYWxfb3V0LCByZWdubyk7DQorIH0NCisNCisgICAgICAvKiBU RU1QID0gVVNFIHwgVEVNUCAqLw0KKyAgICAgIEVYRUNVVEVfSUZfU0VUX0lO X0JJVE1BUCAoJmxvY2FsX2JiX2luZm8tPnBhcnRpYWxfdXNlLA0KKyBGSVJT VF9QU0VVRE9fUkVHSVNURVIsIHJlZ25vLCBiaSkNCisgew0KKyAgIHNiaXRt YXAgdXNlX3JhbmdlID0gbG9jYWxfYmJfaW5mby0+cmFuZ2VfdXNlLT5nZXRf cmFuZ2UgKHJlZ25vKTsNCisgICAgICAgICAgdGVtcF9yYW5nZV9vdXQuYWRk X3JhbmdlIChyZWdubywgdXNlX3JhbmdlKTsNCisgfQ0KKyAgICAgIGJpdG1h cF9pb3JfaW50byAoJnRlbXBfcGFydGlhbF9vdXQsICZsb2NhbF9iYl9pbmZv LT5wYXJ0aWFsX3VzZSk7DQorDQorICAgICAgLyogSU4gPSBURU1QICovDQor ICAgICAgY2hhbmdlZCB8PSBiYl9pbmZvLT5yYW5nZV9pbi0+Y29weV9saXZl cyAodGVtcF9yYW5nZV9vdXQpOw0KKyAgICAgIGJpdG1hcF9jb3B5ICgmYmJf aW5mby0+cGFydGlhbF9pbiwgJnRlbXBfcGFydGlhbF9vdXQpOw0KKyAgICAg IGRmX2xpdmVfc3VicmVnX2NoZWNrX3Jlc3VsdCAoJmJiX2luZm8tPmZ1bGxf aW4sICZiYl9pbmZvLT5wYXJ0aWFsX2luLA0KKyAgICBiYl9pbmZvLT5yYW5n ZV9pbik7DQorICAgIH0NCisgIGVsc2UgaWYgKCFiaXRtYXBfZW1wdHlfcCAo JmJiX2luZm8tPnBhcnRpYWxfaW4pKQ0KKyAgICB7DQorICAgICAgY2hhbmdl ZCA9IHRydWU7DQorICAgICAgYml0bWFwX2NsZWFyICgmYmJfaW5mby0+cGFy dGlhbF9pbik7DQorICAgICAgYmJfaW5mby0+cmFuZ2VfaW4tPmNsZWFyICgp Ow0KKyAgICB9DQorDQorICByZXR1cm4gY2hhbmdlZDsNCit9DQorDQorLyog Q2FsY3VsYXRpbmcgQUxMX0lOIGZyb20gRlVMTF9JTiBhbmQgUEFSVElBTF9J Tg0KKyAgIGFuZCBBTExfT1VUIGZyb20gRlVMTF9PVVQgYW5kIFBBUlRJQUxf T1VULiAgKi8NCisNCit2b2lkDQorZGZfbGl2ZV9zdWJyZWdfZmluYWxpemUg KGJpdG1hcCBhbGxfYmxvY2tzKQ0KK3sNCisgIHVuc2lnbmVkIGludCBiYl9p bmRleDsNCisgIGJpdG1hcF9pdGVyYXRvciBiaTsNCisgIEVYRUNVVEVfSUZf U0VUX0lOX0JJVE1BUCAoYWxsX2Jsb2NrcywgMCwgYmJfaW5kZXgsIGJpKQ0K KyAgICB7DQorICAgICAgYXV0byAqYmJfaW5mbw0KKyA9IGRmX2xpdmVfc3Vi cmVnX2dldF9iYl9pbmZvIChiYl9pbmRleCk7DQorICAgICAgZ2NjX2Fzc2Vy dCAoYmJfaW5mbyk7DQorICAgICAgYml0bWFwX2lvciAoJmJiX2luZm8tPmFs bF9pbiwgJmJiX2luZm8tPmZ1bGxfaW4sICZiYl9pbmZvLT5wYXJ0aWFsX2lu KTsNCisgICAgICBiaXRtYXBfaW9yICgmYmJfaW5mby0+YWxsX291dCwgJmJi X2luZm8tPmZ1bGxfb3V0LCAmYmJfaW5mby0+cGFydGlhbF9vdXQpOw0KKw0K KyAgICAgIC8qIE1vdmUgZnVsbCBsaXZlIHJlZyBpbiBwYXJ0aWFsX2luL3Bh cnRpYWxfb3V0IHRvIGZ1bGxfaW4vZnVsbF9vdXQuICAqLw0KKyAgICAgIHVu c2lnbmVkIGludCByZWdubzsNCisgICAgICBiaXRtYXBfaXRlcmF0b3Igcmk7 DQorICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7DQorICAgICAgRVhFQ1VU RV9JRl9TRVRfSU5fQklUTUFQICgmYmJfaW5mby0+cGFydGlhbF9pbiwgRklS U1RfUFNFVURPX1JFR0lTVEVSLA0KKyByZWdubywgcmkpDQorIHsNCisgICBp ZiAoYmJfaW5mby0+cmFuZ2VfaW4tPmZ1bGxfcCAocmVnbm8pKQ0KKyAgICAg ew0KKyAgICAgICBiaXRtYXBfc2V0X2JpdCAoJmJiX2luZm8tPmZ1bGxfaW4s IHJlZ25vKTsNCisgICAgICAgYmJfaW5mby0+cmFuZ2VfaW4tPnJlbW92ZV9y YW5nZSAocmVnbm8pOw0KKyAgICAgICBjaGFuZ2VkID0gdHJ1ZTsNCisgICAg IH0NCisgfQ0KKyAgICAgIGlmIChjaGFuZ2VkKQ0KKyBiaXRtYXBfYW5kX2Nv bXBsX2ludG8gKCZiYl9pbmZvLT5wYXJ0aWFsX2luLCAmYmJfaW5mby0+ZnVs bF9pbik7DQorDQorICAgICAgY2hhbmdlZCA9IGZhbHNlOw0KKyAgICAgIEVY RUNVVEVfSUZfU0VUX0lOX0JJVE1BUCAoJmJiX2luZm8tPnBhcnRpYWxfb3V0 LCBGSVJTVF9QU0VVRE9fUkVHSVNURVIsDQorIHJlZ25vLCByaSkNCisgew0K KyAgIGlmIChiYl9pbmZvLT5yYW5nZV9vdXQtPmZ1bGxfcCAocmVnbm8pKQ0K KyAgICAgew0KKyAgICAgICBiaXRtYXBfc2V0X2JpdCAoJmJiX2luZm8tPmZ1 bGxfb3V0LCByZWdubyk7DQorICAgICAgIGJiX2luZm8tPnJhbmdlX291dC0+ cmVtb3ZlX3JhbmdlIChyZWdubyk7DQorICAgICAgIGNoYW5nZWQgPSB0cnVl Ow0KKyAgICAgfQ0KKyB9DQorICAgICAgaWYgKGNoYW5nZWQpDQorIGJpdG1h cF9hbmRfY29tcGxfaW50byAoJmJiX2luZm8tPnBhcnRpYWxfb3V0LCAmYmJf aW5mby0+ZnVsbF9vdXQpOw0KKyAgICB9DQorfQ0KKw0KKy8qIEZyZWUgYWxs IHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm9ibGVtLiAgKi8NCisN CitzdGF0aWMgdm9pZA0KK2RmX2xpdmVfc3VicmVnX2ZyZWUgKHZvaWQpDQor ew0KKyAgZGZfbGl2ZV9zdWJyZWdfcHJvYmxlbV9kYXRhICpwcm9ibGVtX2Rh dGENCisgICAgPSAoZGZfbGl2ZV9zdWJyZWdfcHJvYmxlbV9kYXRhICopIGRm X2xpdmVfc3VicmVnLT5wcm9ibGVtX2RhdGE7DQorICBpZiAoZGZfbGl2ZV9z dWJyZWctPmJsb2NrX2luZm8pDQorICAgIHsNCisgICAgICBiaXRtYXBfb2Jz dGFja19yZWxlYXNlICgmcHJvYmxlbV9kYXRhLT5saXZlX3N1YnJlZ19iaXRt YXBzKTsNCisgICAgICBiYXNpY19ibG9jayBiYjsNCisgICAgICBGT1JfQUxM X0JCX0ZOIChiYiwgY2Z1bikNCisgew0KKyAgIGF1dG8gKmJiX2luZm8NCisg ICAgID0gZGZfbGl2ZV9zdWJyZWdfZ2V0X2JiX2luZm8gKGJiLT5pbmRleCk7 DQorICAgYXV0byAqbG9jYWxfYmJfaW5mbw0KKyAgICAgPSBnZXRfbGl2ZV9z dWJyZWdfbG9jYWxfYmJfaW5mbyAoYmItPmluZGV4KTsNCisgICBkZWxldGUg YmJfaW5mby0+cmFuZ2VfaW47DQorICAgZGVsZXRlIGJiX2luZm8tPnJhbmdl X291dDsNCisgICBkZWxldGUgbG9jYWxfYmJfaW5mby0+cmFuZ2VfZGVmOw0K KyAgIGRlbGV0ZSBsb2NhbF9iYl9pbmZvLT5yYW5nZV91c2U7DQorIH0NCisg ICAgICBmcmVlIChwcm9ibGVtX2RhdGEpOw0KKyAgICAgIGRmX2xpdmVfc3Vi cmVnLT5wcm9ibGVtX2RhdGEgPSBudWxscHRyOw0KKw0KKyAgICAgIGRmX2xp dmVfc3VicmVnLT5ibG9ja19pbmZvX3NpemUgPSAwOw0KKyAgICAgIGZyZWUg KGRmX2xpdmVfc3VicmVnLT5ibG9ja19pbmZvKTsNCisgICAgICBkZl9saXZl X3N1YnJlZy0+YmxvY2tfaW5mbyA9IG51bGxwdHI7DQorICAgIH0NCisNCisg IEJJVE1BUF9GUkVFIChkZl9saXZlX3N1YnJlZy0+b3V0X29mX2RhdGVfdHJh bnNmZXJfZnVuY3Rpb25zKTsNCisgIGZyZWUgKGRmX2xpdmVfc3VicmVnKTsN Cit9DQorDQorLyogRGVidWdnaW5nIGluZm8gYXQgdG9wIG9mIGJiLiAgKi8N CisNCitzdGF0aWMgdm9pZA0KK2RmX2xpdmVfc3VicmVnX3RvcF9kdW1wIChi YXNpY19ibG9jayBiYiwgRklMRSAqZmlsZSkNCit7DQorICBhdXRvICpiYl9p bmZvID0gZGZfbGl2ZV9zdWJyZWdfZ2V0X2JiX2luZm8gKGJiLT5pbmRleCk7 DQorICBkZl9saXZlX3N1YnJlZ19sb2NhbF9iYl9pbmZvICpsb2NhbF9iYl9p bmZvDQorICAgID0gZ2V0X2xpdmVfc3VicmVnX2xvY2FsX2JiX2luZm8gKGJi LT5pbmRleCk7DQorDQorICBpZiAoIWJiX2luZm8pDQorICAgIHJldHVybjsN CisNCisgIGZwcmludGYgKGZpbGUsICI7OyBzdWJyZWcgbGl2ZSBhbGwgaW4g IFx0Iik7DQorICBkZl9wcmludF9yZWdzZXQgKGZpbGUsICZiYl9pbmZvLT5h bGxfaW4pOw0KKyAgZnByaW50ZiAoZmlsZSwgIjs7ICAgc3VicmVnIGxpdmUg ZnVsbCBpbiAgIFx0Iik7DQorICBkZl9wcmludF9yZWdzZXQgKGZpbGUsICZi Yl9pbmZvLT5mdWxsX2luKTsNCisgIGZwcmludGYgKGZpbGUsICI7OyAgIHN1 YnJlZyBsaXZlIHBhcnRpYWwgaW4gIFx0Iik7DQorICBkZl9wcmludF9yZWdz ZXQgKGZpbGUsICZiYl9pbmZvLT5wYXJ0aWFsX2luKTsNCisgIGZwcmludGYg KGZpbGUsICI7OyAgIHN1YnJlZyBsaXZlIHJhbmdlIGluICAgXHQiKTsNCisg IGJiX2luZm8tPnJhbmdlX2luLT5kdW1wIChmaWxlLCAiIik7DQorDQorICBm cHJpbnRmIChmaWxlLCAiXG47OyAgIHN1YnJlZyBsaXZlIGZ1bGwgdXNlICBc dCIpOw0KKyAgZGZfcHJpbnRfcmVnc2V0IChmaWxlLCAmbG9jYWxfYmJfaW5m by0+ZnVsbF91c2UpOw0KKyAgZnByaW50ZiAoZmlsZSwgIjs7ICAgc3VicmVn IGxpdmUgcGFydGlhbCB1c2UgIFx0Iik7DQorICBkZl9wcmludF9yZWdzZXQg KGZpbGUsICZsb2NhbF9iYl9pbmZvLT5wYXJ0aWFsX3VzZSk7DQorICBmcHJp bnRmIChmaWxlLCAiOzsgICBzdWJyZWcgbGl2ZSByYW5nZSB1c2UgICBcdCIp Ow0KKyAgbG9jYWxfYmJfaW5mby0+cmFuZ2VfdXNlLT5kdW1wIChmaWxlLCAi Iik7DQorDQorICBmcHJpbnRmIChmaWxlLCAiXG47OyAgIHN1YnJlZyBsaXZl IGZ1bGwgZGVmICBcdCIpOw0KKyAgZGZfcHJpbnRfcmVnc2V0IChmaWxlLCAm bG9jYWxfYmJfaW5mby0+ZnVsbF9kZWYpOw0KKyAgZnByaW50ZiAoZmlsZSwg Ijs7ICAgc3VicmVnIGxpdmUgcGFydGlhbCBkZWYgIFx0Iik7DQorICBkZl9w cmludF9yZWdzZXQgKGZpbGUsICZsb2NhbF9iYl9pbmZvLT5wYXJ0aWFsX2Rl Zik7DQorICBmcHJpbnRmIChmaWxlLCAiOzsgICBzdWJyZWcgbGl2ZSByYW5n ZSBkZWYgIFx0Iik7DQorICBsb2NhbF9iYl9pbmZvLT5yYW5nZV9kZWYtPmR1 bXAgKGZpbGUsICIiKTsNCit9DQorDQorLyogRGVidWdnaW5nIGluZm8gYXQg Ym90dG9tIG9mIGJiLiAgKi8NCisNCitzdGF0aWMgdm9pZA0KK2RmX2xpdmVf c3VicmVnX2JvdHRvbV9kdW1wIChiYXNpY19ibG9jayBiYiwgRklMRSAqZmls ZSkNCit7DQorICBhdXRvICpiYl9pbmZvID0gZGZfbGl2ZV9zdWJyZWdfZ2V0 X2JiX2luZm8gKGJiLT5pbmRleCk7DQorICBpZiAoIWJiX2luZm8pDQorICAg IHJldHVybjsNCisNCisgIGZwcmludGYgKGZpbGUsICI7OyBzdWJyZWcgbGl2 ZSBhbGwgb3V0ICBcdCIpOw0KKyAgZGZfcHJpbnRfcmVnc2V0IChmaWxlLCAm YmJfaW5mby0+YWxsX291dCk7DQorICBmcHJpbnRmIChmaWxlLCAiOzsgICBz dWJyZWcgbGl2ZSBmdWxsIG91dCAgXHQiKTsNCisgIGRmX3ByaW50X3JlZ3Nl dCAoZmlsZSwgJmJiX2luZm8tPmZ1bGxfb3V0KTsNCisgIGZwcmludGYgKGZp bGUsICI7OyAgIHN1YnJlZyBsaXZlIHBhcnRpYWwgb3V0ICBcdCIpOw0KKyAg ZGZfcHJpbnRfcmVnc2V0IChmaWxlLCAmYmJfaW5mby0+cGFydGlhbF9vdXQp Ow0KKyAgZnByaW50ZiAoZmlsZSwgIjs7ICAgc3VicmVnIGxpdmUgcmFuZ2Ug b3V0ICBcdCIpOw0KKyAgYmJfaW5mby0+cmFuZ2Vfb3V0LT5kdW1wIChmaWxl LCAiIik7DQorfQ0KKw0KKy8qIEFsbCBvZiB0aGUgaW5mb3JtYXRpb24gYXNz b2NpYXRlZCB3aXRoIGV2ZXJ5IGluc3RhbmNlIG9mIHRoZSBwcm9ibGVtLiAg Ki8NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IGRmX3Byb2JsZW0gcHJvYmxl bV9MSVZFX1NVQlJFRyA9IHsNCisgIERGX0xJVkVfU1VCUkVHLCAgICAgLyog UHJvYmxlbSBpZC4gICovDQorICBERl9CQUNLV0FSRCwgICAgIC8qIERpcmVj dGlvbi4gICovDQorICBkZl9saXZlX3N1YnJlZ19hbGxvYywgICAgIC8qIEFs bG9jYXRlIHRoZSBwcm9ibGVtIHNwZWNpZmljIGRhdGEuICAqLw0KKyAgZGZf bGl2ZV9zdWJyZWdfcmVzZXQsICAgICAvKiBSZXNldCBnbG9iYWwgaW5mb3Jt YXRpb24uICAqLw0KKyAgZGZfbGl2ZV9zdWJyZWdfZnJlZV9iYl9pbmZvLCAg ICAgLyogRnJlZSBiYXNpYyBibG9jayBpbmZvLiAgKi8NCisgIGRmX2xpdmVf c3VicmVnX2xvY2FsX2NvbXB1dGUsICAgICAvKiBMb2NhbCBjb21wdXRlIGZ1 bmN0aW9uLiAgKi8NCisgIGRmX2xpdmVfc3VicmVnX2luaXQsICAgICAvKiBJ bml0IHRoZSBzb2x1dGlvbiBzcGVjaWZpYyBkYXRhLiAgKi8NCisgIGRmX3dv cmtsaXN0X2RhdGFmbG93LCAgICAgLyogV29ya2xpc3Qgc29sdmVyLiAgKi8N CisgIGRmX2xpdmVfc3VicmVnX2NvbmZsdWVuY2VfMCwgICAgIC8qIENvbmZs dWVuY2Ugb3BlcmF0b3IgMC4gICovDQorICBkZl9saXZlX3N1YnJlZ19jb25m bHVlbmNlX24sICAgICAvKiBDb25mbHVlbmNlIG9wZXJhdG9yIG4uICAqLw0K KyAgZGZfbGl2ZV9zdWJyZWdfdHJhbnNmZXJfZnVuY3Rpb24sIC8qIFRyYW5z ZmVyIGZ1bmN0aW9uLiAgKi8NCisgIGRmX2xpdmVfc3VicmVnX2ZpbmFsaXpl LCAgICAgLyogRmluYWxpemUgZnVuY3Rpb24uICAqLw0KKyAgZGZfbGl2ZV9z dWJyZWdfZnJlZSwgICAgIC8qIEZyZWUgYWxsIG9mIHRoZSBwcm9ibGVtIGlu Zm9ybWF0aW9uLiAgKi8NCisgIGRmX2xpdmVfc3VicmVnX2ZyZWUsICAgICAg IC8qIFJlbW92ZSB0aGlzIHByb2JsZW0gZnJvbSB0aGUgc3RhY2sgb2YgZGF0 YWZsb3cNCisgcHJvYmxlbXMuICAqLw0KKyAgbnVsbHB0ciwgICAgICAgLyog RGVidWdnaW5nLiAgKi8NCisgIGRmX2xpdmVfc3VicmVnX3RvcF9kdW1wLCAg ICAvKiBEZWJ1Z2dpbmcgc3RhcnQgYmxvY2suICAqLw0KKyAgZGZfbGl2ZV9z dWJyZWdfYm90dG9tX2R1bXAsIC8qIERlYnVnZ2luZyBlbmQgYmxvY2suICAq Lw0KKyAgbnVsbHB0ciwgICAgICAgLyogRGVidWdnaW5nIHN0YXJ0IGluc24u ICAqLw0KKyAgbnVsbHB0ciwgICAgICAgLyogRGVidWdnaW5nIGVuZCBpbnNu LiAgKi8NCisgIG51bGxwdHIsICAgICAgIC8qIEluY3JlbWVudGFsIHNvbHV0 aW9uIHZlcmlmeSBzdGFydC4gICovDQorICBudWxscHRyLCAgICAgICAvKiBJ bmNyZW1lbnRhbCBzb2x1dGlvbiB2ZXJpZnkgZW5kLiAgKi8NCisgICZwcm9i bGVtX0xSLCAgICAgICAvKiBEZXBlbmRlbnQgcHJvYmxlbS4gICovDQorICBz aXplb2YgKGRmX2xpdmVfc3VicmVnX2JiX2luZm8pLCAvKiBTaXplIG9mIGVu dHJ5IG9mIGJsb2NrX2luZm8gYXJyYXkuICovDQorICBUVl9ERl9MSVZFX1NV QlJFRywgICAgLyogVGltaW5nIHZhcmlhYmxlLiAgKi8NCisgIGZhbHNlIC8q IFJlc2V0IGJsb2NrcyBvbiBkcm9wcGluZyBvdXQgb2YgYmxvY2tzX3RvX2Fu YWx5emUuICAqLw0KK307DQorDQorLyogQ3JlYXRlIGEgbmV3IERBVEFGTE9X IGluc3RhbmNlIGFuZCBhZGQgaXQgdG8gYW4gZXhpc3RpbmcgaW5zdGFuY2UN CisgICBvZiBERi4gIFRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUgaXMgd2hhdCBp cyB1c2VkIHRvIGdldCBhdCB0aGUNCisgICBzb2x1dGlvbi4gICovDQorDQor dm9pZA0KK2RmX2xpdmVfc3VicmVnX2FkZF9wcm9ibGVtICh2b2lkKQ0KK3sN CisgIGdjY19hc3NlcnQgKGZsYWdfdHJhY2tfc3VicmVnX2xpdmVuZXNzKTsN CisNCisgIGRmX2FkZF9wcm9ibGVtICgmcHJvYmxlbV9MSVZFX1NVQlJFRyk7 DQorDQorICAvKiBUaGVzZSB3aWxsIGJlIGluaXRpYWxpemVkIHdoZW4gZGZf c2Nhbl9ibG9ja3MgcHJvY2Vzc2VzIGVhY2gNCisgICAgIGJsb2NrLiAgKi8N CisgIGRmX2xpdmVfc3VicmVnLT5vdXRfb2ZfZGF0ZV90cmFuc2Zlcl9mdW5j dGlvbnMNCisgICAgPSBCSVRNQVBfQUxMT0MgKCZkZl9iaXRtYXBfb2JzdGFj ayk7DQorfQ0KKw0KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CiAgICBMSVZFIEFORCBNQVktSU5JVElBTElaRUQgUkVHSVNURVJTLg0KICAg IFRoaXMgcHJvYmxlbSBmaXJzdCBjb21wdXRlcyB0aGUgSU4gYW5kIE9VVCBi aXR2ZWN0b3JzIGZvciB0aGUNCkBAIC0xMzY0LDcgKzIyNjQsNyBAQCBkZl9s cl92ZXJpZnlfdHJhbnNmZXJfZnVuY3Rpb25zICh2b2lkKQ0KICAgIFRoZW4s IHRoZSBpbiBhbmQgb3V0IHNldHMgZm9yIHRoZSBMSVZFIHByb2JsZW0gaXRz ZWxmIGFyZSBjb21wdXRlZC4NCiAgICBUaGVzZSBhcmUgdGhlIGxvZ2ljYWwg QU5EIG9mIHRoZSBJTiBhbmQgT1VUIHNldHMgZnJvbSB0aGUgTFIgcHJvYmxl bQ0KICAgIGFuZCB0aGUgbWF5LWluaXRpYWxpemVkIHByb2JsZW0uDQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLyogUHJpdmF0ZSBkYXRhIHVzZWQg dG8gdmVyaWZ5IHRoZSBzb2x1dGlvbiBmb3IgdGhpcyBwcm9ibGVtLiAgKi8N CnN0cnVjdCBkZl9saXZlX3Byb2JsZW1fZGF0YQ0KQEAgLTE0MTUsOCArMjMx NSw4IEBAIGRmX2xpdmVfYWxsb2MgKGJpdG1hcCBhbGxfYmxvY2tzIEFUVFJJ QlVURV9VTlVTRUQpDQogICAgICAgcHJvYmxlbV9kYXRhID0gWE5FVyAoc3Ry dWN0IGRmX2xpdmVfcHJvYmxlbV9kYXRhKTsNCiAgICAgICBkZl9saXZlLT5w cm9ibGVtX2RhdGEgPSBwcm9ibGVtX2RhdGE7DQotICAgICAgcHJvYmxlbV9k YXRhLT5vdXQgPSBOVUxMOw0KLSAgICAgIHByb2JsZW1fZGF0YS0+aW4gPSBO VUxMOw0KKyAgICAgIHByb2JsZW1fZGF0YS0+b3V0ID0gbnVsbHB0cjsNCisg ICAgICBwcm9ibGVtX2RhdGEtPmluID0gbnVsbHB0cjsNCiAgICAgICBiaXRt YXBfb2JzdGFja19pbml0aWFsaXplICgmcHJvYmxlbV9kYXRhLT5saXZlX2Jp dG1hcHMpOw0KICAgICAgIGJpdG1hcF9pbml0aWFsaXplICgmZGZfbGl2ZV9z Y3JhdGNoLCAmcHJvYmxlbV9kYXRhLT5saXZlX2JpdG1hcHMpOw0KICAgICB9 DQpAQCAtMTYzMiwxMSArMjUzMiwxMSBAQCBkZl9saXZlX2ZyZWUgKHZvaWQp DQogICAgIHsNCiAgICAgICBkZl9saXZlLT5ibG9ja19pbmZvX3NpemUgPSAw Ow0KICAgICAgIGZyZWUgKGRmX2xpdmUtPmJsb2NrX2luZm8pOw0KLSAgICAg IGRmX2xpdmUtPmJsb2NrX2luZm8gPSBOVUxMOw0KKyAgICAgIGRmX2xpdmUt PmJsb2NrX2luZm8gPSBudWxscHRyOw0KICAgICAgIGJpdG1hcF9yZWxlYXNl ICgmZGZfbGl2ZV9zY3JhdGNoKTsNCiAgICAgICBiaXRtYXBfb2JzdGFja19y ZWxlYXNlICgmcHJvYmxlbV9kYXRhLT5saXZlX2JpdG1hcHMpOw0KICAgICAg IGZyZWUgKHByb2JsZW1fZGF0YSk7DQotICAgICAgZGZfbGl2ZS0+cHJvYmxl bV9kYXRhID0gTlVMTDsNCisgICAgICBkZl9saXZlLT5wcm9ibGVtX2RhdGEg PSBudWxscHRyOw0KICAgICB9DQogICBCSVRNQVBfRlJFRSAoZGZfbGl2ZS0+ b3V0X29mX2RhdGVfdHJhbnNmZXJfZnVuY3Rpb25zKTsNCiAgIGZyZWUgKGRm X2xpdmUpOw0KQEAgLTE3NTksNyArMjY1OSw3IEBAIGRmX2xpdmVfdmVyaWZ5 X3NvbHV0aW9uX2VuZCAodm9pZCkNCiAgIGZyZWUgKHByb2JsZW1fZGF0YS0+ aW4pOw0KICAgZnJlZSAocHJvYmxlbV9kYXRhLT5vdXQpOw0KICAgZnJlZSAo cHJvYmxlbV9kYXRhKTsNCi0gIGRmX2xpdmUtPnByb2JsZW1fZGF0YSA9IE5V TEw7DQorICBkZl9saXZlLT5wcm9ibGVtX2RhdGEgPSBudWxscHRyOw0KfQ0K QEAgLTE3NzUsMTcgKzI2NzUsMTcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk Zl9wcm9ibGVtIHByb2JsZW1fTElWRSA9DQogICBkZl9saXZlX2xvY2FsX2Nv bXB1dGUsICAgICAgICAvKiBMb2NhbCBjb21wdXRlIGZ1bmN0aW9uLiAgKi8N CiAgIGRmX2xpdmVfaW5pdCwgICAgICAgICAgICAgICAgIC8qIEluaXQgdGhl IHNvbHV0aW9uIHNwZWNpZmljIGRhdGEuICAqLw0KICAgZGZfd29ya2xpc3Rf ZGF0YWZsb3csICAgICAgICAgLyogV29ya2xpc3Qgc29sdmVyLiAgKi8NCi0g IE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvbmZsdWVuY2Ug b3BlcmF0b3IgMC4gICovDQorICBudWxscHRyLCAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBDb25mbHVlbmNlIG9wZXJhdG9yIDAuICAqLw0KICAgZGZf bGl2ZV9jb25mbHVlbmNlX24sICAgICAgICAgLyogQ29uZmx1ZW5jZSBvcGVy YXRvciBuLiAgKi8NCiAgIGRmX2xpdmVfdHJhbnNmZXJfZnVuY3Rpb24sICAg IC8qIFRyYW5zZmVyIGZ1bmN0aW9uLiAgKi8NCiAgIGRmX2xpdmVfZmluYWxp emUsICAgICAgICAgICAgIC8qIEZpbmFsaXplIGZ1bmN0aW9uLiAgKi8NCiAg IGRmX2xpdmVfZnJlZSwgICAgICAgICAgICAgICAgIC8qIEZyZWUgYWxsIG9m IHRoZSBwcm9ibGVtIGluZm9ybWF0aW9uLiAgKi8NCiAgIGRmX2xpdmVfZnJl ZSwgICAgICAgICAgICAgICAgIC8qIFJlbW92ZSB0aGlzIHByb2JsZW0gZnJv bSB0aGUgc3RhY2sgb2YgZGF0YWZsb3cgcHJvYmxlbXMuICAqLw0KLSAgTlVM TCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVidWdnaW5nLiAgKi8N CisgIG51bGxwdHIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlYnVn Z2luZy4gICovDQogICBkZl9saXZlX3RvcF9kdW1wLCAgICAgICAgICAgICAv KiBEZWJ1Z2dpbmcgc3RhcnQgYmxvY2suICAqLw0KICAgZGZfbGl2ZV9ib3R0 b21fZHVtcCwgICAgICAgICAgLyogRGVidWdnaW5nIGVuZCBibG9jay4gICov DQotICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEZWJ1Z2dp bmcgc3RhcnQgaW5zbi4gICovDQotICBOVUxMLCAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBEZWJ1Z2dpbmcgZW5kIGluc24uICAqLw0KKyAgbnVsbHB0 ciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVidWdnaW5nIHN0YXJ0 IGluc24uICAqLw0KKyAgbnVsbHB0ciwgICAgICAgICAgICAgICAgICAgICAg ICAgLyogRGVidWdnaW5nIGVuZCBpbnNuLiAgKi8NCiAgIGRmX2xpdmVfdmVy aWZ5X3NvbHV0aW9uX3N0YXJ0LC8qIEluY3JlbWVudGFsIHNvbHV0aW9uIHZl cmlmeSBzdGFydC4gICovDQogICBkZl9saXZlX3ZlcmlmeV9zb2x1dGlvbl9l bmQsICAvKiBJbmNyZW1lbnRhbCBzb2x1dGlvbiB2ZXJpZnkgZW5kLiAgKi8N CiAgICZwcm9ibGVtX0xSLCAgICAgICAgICAgICAgICAgIC8qIERlcGVuZGVu dCBwcm9ibGVtLiAgKi8NCkBAIC0xODg2LDkgKzI3ODYsOSBAQCBkZl9saXZl X3ZlcmlmeV90cmFuc2Zlcl9mdW5jdGlvbnMgKHZvaWQpDQogICBiaXRtYXBf Y2xlYXIgKCZhbGxfYmxvY2tzKTsNCn0NCiANCi0vKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQogICAgTVVTVC1JTklUSUFMSVpFRCBSRUdJU1RFUlMuDQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLyogUHJpdmF0ZSBkYXRhIHVzZWQg dG8gdmVyaWZ5IHRoZSBzb2x1dGlvbiBmb3IgdGhpcyBwcm9ibGVtLiAgKi8N CnN0cnVjdCBkZl9taXJfcHJvYmxlbV9kYXRhDQpAQCAtMTkzNCw4ICsyODM0 LDggQEAgZGZfbWlyX2FsbG9jIChiaXRtYXAgYWxsX2Jsb2NrcykNCiAgICAg ICBwcm9ibGVtX2RhdGEgPSBYTkVXIChzdHJ1Y3QgZGZfbWlyX3Byb2JsZW1f ZGF0YSk7DQogICAgICAgZGZfbWlyLT5wcm9ibGVtX2RhdGEgPSBwcm9ibGVt X2RhdGE7DQotICAgICAgcHJvYmxlbV9kYXRhLT5vdXQgPSBOVUxMOw0KLSAg ICAgIHByb2JsZW1fZGF0YS0+aW4gPSBOVUxMOw0KKyAgICAgIHByb2JsZW1f ZGF0YS0+b3V0ID0gbnVsbHB0cjsNCisgICAgICBwcm9ibGVtX2RhdGEtPmlu ID0gbnVsbHB0cjsNCiAgICAgICBiaXRtYXBfb2JzdGFja19pbml0aWFsaXpl ICgmcHJvYmxlbV9kYXRhLT5taXJfYml0bWFwcyk7DQogICAgIH0NCkBAIC0y MTIxLDEwICszMDIxLDEwIEBAIGRmX21pcl9mcmVlICh2b2lkKQ0KICAgICB7 DQogICAgICAgZGZfbWlyLT5ibG9ja19pbmZvX3NpemUgPSAwOw0KICAgICAg IGZyZWUgKGRmX21pci0+YmxvY2tfaW5mbyk7DQotICAgICAgZGZfbWlyLT5i bG9ja19pbmZvID0gTlVMTDsNCisgICAgICBkZl9taXItPmJsb2NrX2luZm8g PSBudWxscHRyOw0KICAgICAgIGJpdG1hcF9vYnN0YWNrX3JlbGVhc2UgKCZw cm9ibGVtX2RhdGEtPm1pcl9iaXRtYXBzKTsNCiAgICAgICBmcmVlIChwcm9i bGVtX2RhdGEpOw0KLSAgICAgIGRmX21pci0+cHJvYmxlbV9kYXRhID0gTlVM TDsNCisgICAgICBkZl9taXItPnByb2JsZW1fZGF0YSA9IG51bGxwdHI7DQog ICAgIH0NCiAgIGZyZWUgKGRmX21pcik7DQp9DQpAQCAtMjIyNCw3ICszMTI0 LDcgQEAgZGZfbWlyX3ZlcmlmeV9zb2x1dGlvbl9lbmQgKHZvaWQpDQogICBm cmVlIChwcm9ibGVtX2RhdGEtPm91dCk7DQogICBiaXRtYXBfb2JzdGFja19y ZWxlYXNlICgmcHJvYmxlbV9kYXRhLT5taXJfYml0bWFwcyk7DQogICBmcmVl IChwcm9ibGVtX2RhdGEpOw0KLSAgZGZfbWlyLT5wcm9ibGVtX2RhdGEgPSBO VUxMOw0KKyAgZGZfbWlyLT5wcm9ibGVtX2RhdGEgPSBudWxscHRyOw0KfQ0K QEAgLTIyNDMsMTcgKzMxNDMsMTcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk Zl9wcm9ibGVtIHByb2JsZW1fTUlSID0NCiAgIGRmX21pcl9jb25mbHVlbmNl XzAsICAgICAgICAgIC8qIENvbmZsdWVuY2Ugb3BlcmF0b3IgMC4gICovDQog ICBkZl9taXJfY29uZmx1ZW5jZV9uLCAgICAgICAgICAvKiBDb25mbHVlbmNl IG9wZXJhdG9yIG4uICAqLw0KICAgZGZfbWlyX3RyYW5zZmVyX2Z1bmN0aW9u LCAgICAgLyogVHJhbnNmZXIgZnVuY3Rpb24uICAqLw0KLSAgTlVMTCwgICAg ICAgICAgICAgICAgICAgICAgICAgLyogRmluYWxpemUgZnVuY3Rpb24uICAq Lw0KKyAgbnVsbHB0ciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogRmlu YWxpemUgZnVuY3Rpb24uICAqLw0KICAgZGZfbWlyX2ZyZWUsICAgICAgICAg ICAgICAgICAgLyogRnJlZSBhbGwgb2YgdGhlIHByb2JsZW0gaW5mb3JtYXRp b24uICAqLw0KICAgZGZfbWlyX2ZyZWUsICAgICAgICAgICAgICAgICAgLyog UmVtb3ZlIHRoaXMgcHJvYmxlbSBmcm9tIHRoZSBzdGFjayBvZiBkYXRhZmxv dyBwcm9ibGVtcy4gICovDQotICBOVUxMLCAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBEZWJ1Z2dpbmcuICAqLw0KKyAgbnVsbHB0ciwgICAgICAgICAg ICAgICAgICAgICAgICAgLyogRGVidWdnaW5nLiAgKi8NCiAgIGRmX21pcl90 b3BfZHVtcCwgICAgICAgICAgICAgIC8qIERlYnVnZ2luZyBzdGFydCBibG9j ay4gICovDQogICBkZl9taXJfYm90dG9tX2R1bXAsICAgICAgICAgICAvKiBE ZWJ1Z2dpbmcgZW5kIGJsb2NrLiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIERlYnVnZ2luZyBzdGFydCBpbnNuLiAgKi8NCi0g IE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlYnVnZ2luZyBl bmQgaW5zbi4gICovDQorICBudWxscHRyLCAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBEZWJ1Z2dpbmcgc3RhcnQgaW5zbi4gICovDQorICBudWxscHRy LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEZWJ1Z2dpbmcgZW5kIGlu c24uICAqLw0KICAgZGZfbWlyX3ZlcmlmeV9zb2x1dGlvbl9zdGFydCwgLyog SW5jcmVtZW50YWwgc29sdXRpb24gdmVyaWZ5IHN0YXJ0LiAgKi8NCiAgIGRm X21pcl92ZXJpZnlfc29sdXRpb25fZW5kLCAgIC8qIEluY3JlbWVudGFsIHNv bHV0aW9uIHZlcmlmeSBlbmQuICAqLw0KLSAgTlVMTCwgICAgICAgICAgICAg ICAgICAgICAgICAgLyogRGVwZW5kZW50IHByb2JsZW0uICAqLw0KKyAgbnVs bHB0ciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVwZW5kZW50IHBy b2JsZW0uICAqLw0KICAgc2l6ZW9mIChjbGFzcyBkZl9taXJfYmJfaW5mbyks LyogU2l6ZSBvZiBlbnRyeSBvZiBibG9ja19pbmZvIGFycmF5LiAgKi8NCiAg IFRWX0RGX01JUiwgICAgICAgICAgICAgICAgICAgIC8qIFRpbWluZyB2YXJp YWJsZS4gICovDQogICBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAv KiBSZXNldCBibG9ja3Mgb24gZHJvcHBpbmcgb3V0IG9mIGJsb2Nrc190b19h bmFseXplLiAgKi8NCkBAIC0yMzAzLDcgKzMyMDMsNyBAQCBkZl9taXJfc2lt dWxhdGVfb25lX2luc24gKGJhc2ljX2Jsb2NrIGJiIEFUVFJJQlVURV9VTlVT RUQsIHJ0eF9pbnNuICppbnNuLA0KICAgICB9DQp9DQogDQotLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KICAgIENSRUFURSBERUZfVVNFIChEVSkgYW5kIC8g b3IgVVNFX0RFRiAoVUQpIENIQUlOUw0KICAgIExpbmsgZWl0aGVyIHRoZSBk ZWZzIHRvIHRoZSB1c2VzIGFuZCAvIG9yIHRoZSB1c2VzIHRvIHRoZSBkZWZz Lg0KQEAgLTIzMTIsNyArMzIxMiw3IEBAIGRmX21pcl9zaW11bGF0ZV9vbmVf aW5zbiAoYmFzaWNfYmxvY2sgYmIgQVRUUklCVVRFX1VOVVNFRCwgcnR4X2lu c24gKmluc24sDQogICAgdGhleSBuaWNlbHkgZml0IGludG8gdGhlIGZyYW1l d29yay4gIFRoZXkgYXJlIG11Y2ggc2ltcGxlciBhbmQgb25seQ0KICAgIGlu dm9sdmUgYSBzaW5nbGUgdHJhdmVyc2FsIG9mIGluc3RydWN0aW9ucyBhbmQg YW4gZXhhbWluYXRpb24gb2YNCiAgICB0aGUgcmVhY2hpbmcgZGVmcyBpbmZv cm1hdGlvbiAodGhlIGRlcGVuZGVudCBwcm9ibGVtKS4NCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tICovDQojZGVmaW5lIGRmX2NoYWluX3Byb2JsZW1fcChG TEFHKSAoKChlbnVtIGRmX2NoYWluX2ZsYWdzKWRmX2NoYWluLT5sb2NhbF9m bGFncykmKEZMQUcpKQ0KQEAgLTIzMzcsNyArMzIzNyw3IEBAIHN0YXRpYyB2 b2lkDQpkZl9jaGFpbl91bmxpbmtfMSAoZGZfcmVmIHJlZiwgZGZfcmVmIHRh cmdldCkNCnsNCiAgIHN0cnVjdCBkZl9saW5rICpjaGFpbiA9IERGX1JFRl9D SEFJTiAocmVmKTsNCi0gIHN0cnVjdCBkZl9saW5rICpwcmV2ID0gTlVMTDsN CisgIHN0cnVjdCBkZl9saW5rICpwcmV2ID0gbnVsbHB0cjsNCiAgIHdoaWxl IChjaGFpbikNCiAgICAgew0KQEAgLTIzNzAsNyArMzI3MCw3IEBAIGRmX2No YWluX3VubGluayAoZGZfcmVmIHJlZikNCiAgICAgICBkZl9jaGFpbi0+Ymxv Y2tfcG9vbC0+cmVtb3ZlIChjaGFpbik7DQogICAgICAgY2hhaW4gPSBuZXh0 Ow0KICAgICB9DQotICBERl9SRUZfQ0hBSU4gKHJlZikgPSBOVUxMOw0KKyAg REZfUkVGX0NIQUlOIChyZWYpID0gbnVsbHB0cjsNCn0NCkBAIC0yNDA5LDEw ICszMzA5LDEwIEBAIGRmX2NoYWluX3JlbW92ZV9wcm9ibGVtICh2b2lkKQ0K ICAgICAgIGlmIChkZl9jaGFpbl9wcm9ibGVtX3AgKERGX0RVX0NIQUlOKSkN CkZPUl9FQUNIX0FSVElGSUNJQUxfREVGIChkZWYsIGJiX2luZGV4KQ0KLSAg IERGX1JFRl9DSEFJTiAoZGVmKSA9IE5VTEw7DQorICAgREZfUkVGX0NIQUlO IChkZWYpID0gbnVsbHB0cjsNCiAgICAgICBpZiAoZGZfY2hhaW5fcHJvYmxl bV9wIChERl9VRF9DSEFJTikpDQpGT1JfRUFDSF9BUlRJRklDSUFMX1VTRSAo dXNlLCBiYl9pbmRleCkNCi0gICBERl9SRUZfQ0hBSU4gKHVzZSkgPSBOVUxM Ow0KKyAgIERGX1JFRl9DSEFJTiAodXNlKSA9IG51bGxwdHI7DQogICAgICAg Rk9SX0JCX0lOU05TIChiYiwgaW5zbikNCmlmIChJTlNOX1AgKGluc24pKQ0K QEAgLTI0MjAsMTkgKzMzMjAsMTkgQEAgZGZfY2hhaW5fcmVtb3ZlX3Byb2Js ZW0gKHZvaWQpDQogICAgZGZfaW5zbl9pbmZvICppbnNuX2luZm8gPSBERl9J TlNOX0lORk9fR0VUIChpbnNuKTsNCiAgICBpZiAoZGZfY2hhaW5fcHJvYmxl bV9wIChERl9EVV9DSEFJTikpDQogICAgICBGT1JfRUFDSF9JTlNOX0lORk9f REVGIChkZWYsIGluc25faW5mbykNCi0gREZfUkVGX0NIQUlOIChkZWYpID0g TlVMTDsNCisgREZfUkVGX0NIQUlOIChkZWYpID0gbnVsbHB0cjsNCiAgICBp ZiAoZGZfY2hhaW5fcHJvYmxlbV9wIChERl9VRF9DSEFJTikpDQogICAgICB7 DQpGT1JfRUFDSF9JTlNOX0lORk9fVVNFICh1c2UsIGluc25faW5mbykNCi0g ICBERl9SRUZfQ0hBSU4gKHVzZSkgPSBOVUxMOw0KKyAgIERGX1JFRl9DSEFJ TiAodXNlKSA9IG51bGxwdHI7DQpGT1JfRUFDSF9JTlNOX0lORk9fRVFfVVNF ICh1c2UsIGluc25faW5mbykNCi0gICBERl9SRUZfQ0hBSU4gKHVzZSkgPSBO VUxMOw0KKyAgIERGX1JFRl9DSEFJTiAodXNlKSA9IG51bGxwdHI7DQogICAg ICB9DQogIH0NCiAgICAgfQ0KICAgYml0bWFwX2NsZWFyIChkZl9jaGFpbi0+ b3V0X29mX2RhdGVfdHJhbnNmZXJfZnVuY3Rpb25zKTsNCi0gIGRmX2NoYWlu LT5ibG9ja19wb29sID0gTlVMTDsNCisgIGRmX2NoYWluLT5ibG9ja19wb29s ID0gbnVsbHB0cjsNCn0NCkBAIC0yNzA4LDIzICszNjA4LDIzIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZGZfcHJvYmxlbSBwcm9ibGVtX0NIQUlOID0NCiAg IERGX05PTkUsICAgICAgICAgICAgICAgICAgICAvKiBEaXJlY3Rpb24uICAq Lw0KICAgZGZfY2hhaW5fYWxsb2MsICAgICAgICAgICAgIC8qIEFsbG9jYXRl IHRoZSBwcm9ibGVtIHNwZWNpZmljIGRhdGEuICAqLw0KICAgZGZfY2hhaW5f cmVzZXQsICAgICAgICAgICAgIC8qIFJlc2V0IGdsb2JhbCBpbmZvcm1hdGlv bi4gICovDQotICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogRnJl ZSBiYXNpYyBibG9jayBpbmZvLiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAg ICAgICAgICAgICAvKiBMb2NhbCBjb21wdXRlIGZ1bmN0aW9uLiAgKi8NCi0g IE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBJbml0IHRoZSBzb2x1 dGlvbiBzcGVjaWZpYyBkYXRhLiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAg ICAgICAgICAgICAvKiBJdGVyYXRpdmUgc29sdmVyLiAgKi8NCi0gIE5VTEws ICAgICAgICAgICAgICAgICAgICAgICAvKiBDb25mbHVlbmNlIG9wZXJhdG9y IDAuICAqLw0KLSAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIENv bmZsdWVuY2Ugb3BlcmF0b3Igbi4gICovDQotICBOVUxMLCAgICAgICAgICAg ICAgICAgICAgICAgLyogVHJhbnNmZXIgZnVuY3Rpb24uICAqLw0KKyAgbnVs bHB0ciwgICAgICAgICAgICAgICAgICAgIC8qIEZyZWUgYmFzaWMgYmxvY2sg aW5mby4gICovDQorICBudWxscHRyLCAgICAgICAgICAgICAgICAgICAgLyog TG9jYWwgY29tcHV0ZSBmdW5jdGlvbi4gICovDQorICBudWxscHRyLCAgICAg ICAgICAgICAgICAgICAgLyogSW5pdCB0aGUgc29sdXRpb24gc3BlY2lmaWMg ZGF0YS4gICovDQorICBudWxscHRyLCAgICAgICAgICAgICAgICAgICAgLyog SXRlcmF0aXZlIHNvbHZlci4gICovDQorICBudWxscHRyLCAgICAgICAgICAg ICAgICAgICAgLyogQ29uZmx1ZW5jZSBvcGVyYXRvciAwLiAgKi8NCisgIG51 bGxwdHIsICAgICAgICAgICAgICAgICAgICAvKiBDb25mbHVlbmNlIG9wZXJh dG9yIG4uICAqLw0KKyAgbnVsbHB0ciwgICAgICAgICAgICAgICAgICAgIC8q IFRyYW5zZmVyIGZ1bmN0aW9uLiAgKi8NCiAgIGRmX2NoYWluX2ZpbmFsaXpl LCAgICAgICAgICAvKiBGaW5hbGl6ZSBmdW5jdGlvbi4gICovDQogICBkZl9j aGFpbl9mcmVlLCAgICAgICAgICAgICAgLyogRnJlZSBhbGwgb2YgdGhlIHBy b2JsZW0gaW5mb3JtYXRpb24uICAqLw0KICAgZGZfY2hhaW5fZnVsbHlfcmVt b3ZlX3Byb2JsZW0sLyogUmVtb3ZlIHRoaXMgcHJvYmxlbSBmcm9tIHRoZSBz dGFjayBvZiBkYXRhZmxvdyBwcm9ibGVtcy4gICovDQotICBOVUxMLCAgICAg ICAgICAgICAgICAgICAgICAgLyogRGVidWdnaW5nLiAgKi8NCisgIG51bGxw dHIsICAgICAgICAgICAgICAgICAgICAvKiBEZWJ1Z2dpbmcuICAqLw0KICAg ZGZfY2hhaW5fdG9wX2R1bXAsICAgICAgICAgIC8qIERlYnVnZ2luZyBzdGFy dCBibG9jay4gICovDQogICBkZl9jaGFpbl9ib3R0b21fZHVtcCwgICAgICAg LyogRGVidWdnaW5nIGVuZCBibG9jay4gICovDQogICBkZl9jaGFpbl9pbnNu X3RvcF9kdW1wLCAgICAgLyogRGVidWdnaW5nIHN0YXJ0IGluc24uICAqLw0K ICAgZGZfY2hhaW5faW5zbl9ib3R0b21fZHVtcCwgIC8qIERlYnVnZ2luZyBl bmQgaW5zbi4gICovDQotICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAg LyogSW5jcmVtZW50YWwgc29sdXRpb24gdmVyaWZ5IHN0YXJ0LiAgKi8NCi0g IE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBJbmNyZW1lbnRhbCBz b2x1dGlvbiB2ZXJpZnkgZW5kLiAgKi8NCisgIG51bGxwdHIsICAgICAgICAg ICAgICAgICAgICAvKiBJbmNyZW1lbnRhbCBzb2x1dGlvbiB2ZXJpZnkgc3Rh cnQuICAqLw0KKyAgbnVsbHB0ciwgICAgICAgICAgICAgICAgICAgIC8qIElu Y3JlbWVudGFsIHNvbHV0aW9uIHZlcmlmeSBlbmQuICAqLw0KICAgJnByb2Js ZW1fUkQsICAgICAgICAgICAgICAgIC8qIERlcGVuZGVudCBwcm9ibGVtLiAg Ki8NCiAgIHNpemVvZiAoc3RydWN0IGRmX3NjYW5fYmJfaW5mbyksLyogU2l6 ZSBvZiBlbnRyeSBvZiBibG9ja19pbmZvIGFycmF5LiAgKi8NCiAgIFRWX0RG X0NIQUlOLCAgICAgICAgICAgICAgICAvKiBUaW1pbmcgdmFyaWFibGUuICAq Lw0KQEAgLTI3NDcsNyArMzY0Nyw3IEBAIGRmX2NoYWluX2FkZF9wcm9ibGVt ICh1bnNpZ25lZCBpbnQgY2hhaW5fZmxhZ3MpDQojdW5kZWYgZGZfY2hhaW5f cHJvYmxlbV9wDQogDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAg IFdPUkQgTEVWRUwgTElWRSBSRUdJU1RFUlMNCiAgICBGaW5kIHRoZSBsb2Nh dGlvbnMgaW4gdGhlIGZ1bmN0aW9uIHdoZXJlIGFueSB1c2Ugb2YgYSBwc2V1 ZG8gY2FuDQpAQCAtMzAyNSw3ICszOTI1LDcgQEAgZGZfd29yZF9scl9mcmVl ICh2b2lkKQ0KICAgICB7DQogICAgICAgZGZfd29yZF9sci0+YmxvY2tfaW5m b19zaXplID0gMDsNCiAgICAgICBmcmVlIChkZl93b3JkX2xyLT5ibG9ja19p bmZvKTsNCi0gICAgICBkZl93b3JkX2xyLT5ibG9ja19pbmZvID0gTlVMTDsN CisgICAgICBkZl93b3JkX2xyLT5ibG9ja19pbmZvID0gbnVsbHB0cjsNCiAg ICAgfQ0KICAgQklUTUFQX0ZSRUUgKGRmX3dvcmRfbHItPm91dF9vZl9kYXRl X3RyYW5zZmVyX2Z1bmN0aW9ucyk7DQpAQCAtMzA3OSwyMCArMzk3OSwyMCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRmX3Byb2JsZW0gcHJvYmxlbV9XT1JE X0xSID0NCiAgIGRmX3dvcmRfbHJfbG9jYWxfY29tcHV0ZSwgICAgICAgIC8q IExvY2FsIGNvbXB1dGUgZnVuY3Rpb24uICAqLw0KICAgZGZfd29yZF9scl9p bml0LCAgICAgICAgICAgICAgICAgLyogSW5pdCB0aGUgc29sdXRpb24gc3Bl Y2lmaWMgZGF0YS4gICovDQogICBkZl93b3JrbGlzdF9kYXRhZmxvdywgICAg ICAgICAgICAvKiBXb3JrbGlzdCBzb2x2ZXIuICAqLw0KLSAgTlVMTCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogQ29uZmx1ZW5jZSBvcGVyYXRv ciAwLiAgKi8NCisgIG51bGxwdHIsICAgICAgICAgICAgICAgICAgICAgICAg IC8qIENvbmZsdWVuY2Ugb3BlcmF0b3IgMC4gICovDQogICBkZl93b3JkX2xy X2NvbmZsdWVuY2VfbiwgICAgICAgICAvKiBDb25mbHVlbmNlIG9wZXJhdG9y IG4uICAqLw0KICAgZGZfd29yZF9scl90cmFuc2Zlcl9mdW5jdGlvbiwgICAg LyogVHJhbnNmZXIgZnVuY3Rpb24uICAqLw0KLSAgTlVMTCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogRmluYWxpemUgZnVuY3Rpb24uICAqLw0K KyAgbnVsbHB0ciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogRmluYWxp emUgZnVuY3Rpb24uICAqLw0KICAgZGZfd29yZF9scl9mcmVlLCAgICAgICAg ICAgICAgICAgLyogRnJlZSBhbGwgb2YgdGhlIHByb2JsZW0gaW5mb3JtYXRp b24uICAqLw0KICAgZGZfd29yZF9scl9mcmVlLCAgICAgICAgICAgICAgICAg LyogUmVtb3ZlIHRoaXMgcHJvYmxlbSBmcm9tIHRoZSBzdGFjayBvZiBkYXRh ZmxvdyBwcm9ibGVtcy4gICovDQotICBOVUxMLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiBEZWJ1Z2dpbmcuICAqLw0KKyAgbnVsbHB0ciwgICAg ICAgICAgICAgICAgICAgICAgICAgLyogRGVidWdnaW5nLiAgKi8NCiAgIGRm X3dvcmRfbHJfdG9wX2R1bXAsICAgICAgICAgICAgIC8qIERlYnVnZ2luZyBz dGFydCBibG9jay4gICovDQogICBkZl93b3JkX2xyX2JvdHRvbV9kdW1wLCAg ICAgICAgICAvKiBEZWJ1Z2dpbmcgZW5kIGJsb2NrLiAgKi8NCi0gIE5VTEws ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlYnVnZ2luZyBzdGFy dCBpbnNuLiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIERlYnVnZ2luZyBlbmQgaW5zbi4gICovDQotICBOVUxMLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBJbmNyZW1lbnRhbCBzb2x1dGlv biB2ZXJpZnkgc3RhcnQuICAqLw0KLSAgTlVMTCwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogSW5jcmVtZW50YWwgc29sdXRpb24gdmVyaWZ5IGVu ZC4gICovDQotICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiBEZXBlbmRlbnQgcHJvYmxlbS4gICovDQorICBudWxscHRyLCAgICAgICAg ICAgICAgICAgICAgICAgICAvKiBEZWJ1Z2dpbmcgc3RhcnQgaW5zbi4gICov DQorICBudWxscHRyLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEZWJ1 Z2dpbmcgZW5kIGluc24uICAqLw0KKyAgbnVsbHB0ciwgICAgICAgICAgICAg ICAgICAgICAgICAgLyogSW5jcmVtZW50YWwgc29sdXRpb24gdmVyaWZ5IHN0 YXJ0LiAgKi8NCisgIG51bGxwdHIsICAgICAgICAgICAgICAgICAgICAgICAg IC8qIEluY3JlbWVudGFsIHNvbHV0aW9uIHZlcmlmeSBlbmQuICAqLw0KKyAg bnVsbHB0ciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVwZW5kZW50 IHByb2JsZW0uICAqLw0KICAgc2l6ZW9mIChjbGFzcyBkZl93b3JkX2xyX2Ji X2luZm8pLC8qIFNpemUgb2YgZW50cnkgb2YgYmxvY2tfaW5mbyBhcnJheS4g ICovDQogICBUVl9ERl9XT1JEX0xSLCAgICAgICAgICAgICAgICAgICAvKiBU aW1pbmcgdmFyaWFibGUuICAqLw0KICAgZmFsc2UgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogUmVzZXQgYmxvY2tzIG9uIGRyb3BwaW5nIG91dCBv ZiBibG9ja3NfdG9fYW5hbHl6ZS4gICovDQpAQCAtMzE0NCw5ICs0MDQ0LDkg QEAgZGZfd29yZF9scl9zaW11bGF0ZV91c2VzIChydHhfaW5zbiAqaW5zbiwg Yml0bWFwIGxpdmUpDQogICAgIGRmX3dvcmRfbHJfbWFya19yZWYgKHVzZSwg dHJ1ZSwgbGl2ZSk7DQp9DQogDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KICAgIFRoaXMgcHJvYmxlbSBjb21wdXRlcyBSRUdfREVBRCBhbmQgUkVH X1VOVVNFRCBub3Rlcy4NCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8NCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ICovDQpzdGF0aWMgdm9pZA0KZGZfbm90ZV9hbGxvYyAoYml0bWFwIGFsbF9i bG9ja3MgQVRUUklCVVRFX1VOVVNFRCkNCkBAIC0zNTE4LDcgKzQ0MTgsNyBA QCBkZl9ub3RlX2JiX2NvbXB1dGUgKHVuc2lnbmVkIGludCBiYl9pbmRleCwN CiAgIGRmX3JlZiBkZWYsIHVzZTsNCiAgIHN0cnVjdCBkZWFkX2RlYnVnX2xv Y2FsIGRlYnVnOw0KLSAgZGVhZF9kZWJ1Z19sb2NhbF9pbml0ICgmZGVidWcs IE5VTEwsIE5VTEwpOw0KKyAgZGVhZF9kZWJ1Z19sb2NhbF9pbml0ICgmZGVi dWcsIG51bGxwdHIsIG51bGxwdHIpOw0KICAgYml0bWFwX2NvcHkgKGxpdmUs IGRmX2dldF9saXZlX291dCAoYmIpKTsNCiAgIGJpdG1hcF9jbGVhciAoYXJ0 aWZpY2lhbF91c2VzKTsNCkBAIC0zNzAxLDcgKzQ2MDEsNyBAQCBkZl9ub3Rl X2JiX2NvbXB1dGUgKHVuc2lnbmVkIGludCBiYl9pbmRleCwNCn0NCiAgICAg fQ0KLSAgZGVhZF9kZWJ1Z19sb2NhbF9maW5pc2ggKCZkZWJ1ZywgTlVMTCk7 DQorICBkZWFkX2RlYnVnX2xvY2FsX2ZpbmlzaCAoJmRlYnVnLCBudWxscHRy KTsNCn0NCkBAIC0zNzQ5LDI0ICs0NjQ5LDI0IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZGZfcHJvYmxlbSBwcm9ibGVtX05PVEUgPQ0KICAgREZfTk9URSwg ICAgICAgICAgICAgICAgICAgIC8qIFByb2JsZW0gaWQuICAqLw0KICAgREZf Tk9ORSwgICAgICAgICAgICAgICAgICAgIC8qIERpcmVjdGlvbi4gICovDQog ICBkZl9ub3RlX2FsbG9jLCAgICAgICAgICAgICAgLyogQWxsb2NhdGUgdGhl IHByb2JsZW0gc3BlY2lmaWMgZGF0YS4gICovDQotICBOVUxMLCAgICAgICAg ICAgICAgICAgICAgICAgLyogUmVzZXQgZ2xvYmFsIGluZm9ybWF0aW9uLiAg Ki8NCi0gIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBGcmVlIGJh c2ljIGJsb2NrIGluZm8uICAqLw0KKyAgbnVsbHB0ciwgICAgICAgICAgICAg ICAgICAgIC8qIFJlc2V0IGdsb2JhbCBpbmZvcm1hdGlvbi4gICovDQorICBu dWxscHRyLCAgICAgICAgICAgICAgICAgICAgLyogRnJlZSBiYXNpYyBibG9j ayBpbmZvLiAgKi8NCiAgIGRmX25vdGVfY29tcHV0ZSwgICAgICAgICAgICAv KiBMb2NhbCBjb21wdXRlIGZ1bmN0aW9uLiAgKi8NCi0gIE5VTEwsICAgICAg ICAgICAgICAgICAgICAgICAvKiBJbml0IHRoZSBzb2x1dGlvbiBzcGVjaWZp YyBkYXRhLiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAv KiBJdGVyYXRpdmUgc29sdmVyLiAgKi8NCi0gIE5VTEwsICAgICAgICAgICAg ICAgICAgICAgICAvKiBDb25mbHVlbmNlIG9wZXJhdG9yIDAuICAqLw0KLSAg TlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIENvbmZsdWVuY2Ugb3Bl cmF0b3Igbi4gICovDQotICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAg LyogVHJhbnNmZXIgZnVuY3Rpb24uICAqLw0KLSAgTlVMTCwgICAgICAgICAg ICAgICAgICAgICAgIC8qIEZpbmFsaXplIGZ1bmN0aW9uLiAgKi8NCisgIG51 bGxwdHIsICAgICAgICAgICAgICAgICAgICAvKiBJbml0IHRoZSBzb2x1dGlv biBzcGVjaWZpYyBkYXRhLiAgKi8NCisgIG51bGxwdHIsICAgICAgICAgICAg ICAgICAgICAvKiBJdGVyYXRpdmUgc29sdmVyLiAgKi8NCisgIG51bGxwdHIs ICAgICAgICAgICAgICAgICAgICAvKiBDb25mbHVlbmNlIG9wZXJhdG9yIDAu ICAqLw0KKyAgbnVsbHB0ciwgICAgICAgICAgICAgICAgICAgIC8qIENvbmZs dWVuY2Ugb3BlcmF0b3Igbi4gICovDQorICBudWxscHRyLCAgICAgICAgICAg ICAgICAgICAgLyogVHJhbnNmZXIgZnVuY3Rpb24uICAqLw0KKyAgbnVsbHB0 ciwgICAgICAgICAgICAgICAgICAgIC8qIEZpbmFsaXplIGZ1bmN0aW9uLiAg Ki8NCiAgIGRmX25vdGVfZnJlZSwgICAgICAgICAgICAgICAvKiBGcmVlIGFs bCBvZiB0aGUgcHJvYmxlbSBpbmZvcm1hdGlvbi4gICovDQogICBkZl9ub3Rl X2ZyZWUsICAgICAgICAgICAgICAgLyogUmVtb3ZlIHRoaXMgcHJvYmxlbSBm cm9tIHRoZSBzdGFjayBvZiBkYXRhZmxvdyBwcm9ibGVtcy4gICovDQotICBO VUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogRGVidWdnaW5nLiAgKi8N Ci0gIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBEZWJ1Z2dpbmcg c3RhcnQgYmxvY2suICAqLw0KLSAgTlVMTCwgICAgICAgICAgICAgICAgICAg ICAgIC8qIERlYnVnZ2luZyBlbmQgYmxvY2suICAqLw0KLSAgTlVMTCwgICAg ICAgICAgICAgICAgICAgICAgIC8qIERlYnVnZ2luZyBzdGFydCBpbnNuLiAg Ki8NCi0gIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBEZWJ1Z2dp bmcgZW5kIGluc24uICAqLw0KLSAgTlVMTCwgICAgICAgICAgICAgICAgICAg ICAgIC8qIEluY3JlbWVudGFsIHNvbHV0aW9uIHZlcmlmeSBzdGFydC4gICov DQotICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogSW5jcmVtZW50 YWwgc29sdXRpb24gdmVyaWZ5IGVuZC4gICovDQorICBudWxscHRyLCAgICAg ICAgICAgICAgICAgICAgLyogRGVidWdnaW5nLiAgKi8NCisgIG51bGxwdHIs ICAgICAgICAgICAgICAgICAgICAvKiBEZWJ1Z2dpbmcgc3RhcnQgYmxvY2su ICAqLw0KKyAgbnVsbHB0ciwgICAgICAgICAgICAgICAgICAgIC8qIERlYnVn Z2luZyBlbmQgYmxvY2suICAqLw0KKyAgbnVsbHB0ciwgICAgICAgICAgICAg ICAgICAgIC8qIERlYnVnZ2luZyBzdGFydCBpbnNuLiAgKi8NCisgIG51bGxw dHIsICAgICAgICAgICAgICAgICAgICAvKiBEZWJ1Z2dpbmcgZW5kIGluc24u ICAqLw0KKyAgbnVsbHB0ciwgICAgICAgICAgICAgICAgICAgIC8qIEluY3Jl bWVudGFsIHNvbHV0aW9uIHZlcmlmeSBzdGFydC4gICovDQorICBudWxscHRy LCAgICAgICAgICAgICAgICAgICAgLyogSW5jcmVtZW50YWwgc29sdXRpb24g dmVyaWZ5IGVuZC4gICovDQogICAmcHJvYmxlbV9MUiwgICAgICAgICAgICAg ICAgLyogRGVwZW5kZW50IHByb2JsZW0uICAqLw0KICAgc2l6ZW9mIChzdHJ1 Y3QgZGZfc2Nhbl9iYl9pbmZvKSwvKiBTaXplIG9mIGVudHJ5IG9mIGJsb2Nr X2luZm8gYXJyYXkuICAqLw0KICAgVFZfREZfTk9URSwgICAgICAgICAgICAg ICAgIC8qIFRpbWluZyB2YXJpYWJsZS4gICovDQpAQCAtMzc4Nyw3ICs0Njg3 LDcgQEAgZGZfbm90ZV9hZGRfcHJvYmxlbSAodm9pZCkNCiANCi0vKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQogICAgRnVuY3Rpb25zIGZvciBzaW11bGF0aW5n IHRoZSBlZmZlY3RzIG9mIHNpbmdsZSBpbnNucy4NCiAgICBZb3UgY2FuIGVp dGhlciBzaW11bGF0ZSBpbiB0aGUgZm9yd2FyZHMgZGlyZWN0aW9uLCBzdGFy dGluZyBmcm9tDQpAQCAtMzgwMiw3ICs0NzAyLDcgQEAgZGZfbm90ZV9hZGRf cHJvYmxlbSAodm9pZCkNCiAgICBERl9MUl9JTi4gIElmIHlvdSBzdGFydCBh dCB0aGUgYm90dG9tIG9mIHRoZSBibG9jayB1c2Ugb25lIG9mDQogICAgREZf TElWRV9PVVQgb3IgREZfTFJfT1VULiAgQkUgU1VSRSBUTyBQQVNTIEEgQ09Q WSBPRiBUSEVTRSBTRVRTLA0KICAgIFRIRVkgV0lMTCBCRSBERVNUUk9ZRUQu DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLyogRmluZCB0aGUgc2V0 IG9mIERFRnMgZm9yIElOU04uICAqLw0KQEAgLTM4OTMsNyArNDc5Myw3IEBA IGRmX3NpbXVsYXRlX2ZpeHVwX3NldHMgKGJhc2ljX2Jsb2NrIGJiLCBiaXRt YXAgbGl2ZSkNCn0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAg VGhlIGZvbGxvd2luZyB0aHJlZSBmdW5jdGlvbnMgYXJlIHVzZWQgb25seSBm b3IgQkFDS1dBUkRTIHNjYW5uaW5nOg0KICAgIGkuZS4gdGhleSBwcm9jZXNz IHRoZSBkZWZzIGJlZm9yZSB0aGUgdXNlcy4NCkBAIC0zOTYwLDcgKzQ4NjAs NyBAQCBkZl9zaW11bGF0ZV9maW5hbGl6ZV9iYWNrd2FyZHMgKGJhc2ljX2Js b2NrIGJiLCBiaXRtYXAgbGl2ZSkNCiAgICAgICBiaXRtYXBfc2V0X2JpdCAo bGl2ZSwgREZfUkVGX1JFR05PICh1c2UpKTsNCiNlbmRpZg0KfQ0KLS8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCiAgICBUaGUgZm9sbG93aW5nIHRocmVlIGZ1 bmN0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciBGT1JXQVJEUyBzY2FubmluZzoN CiAgICBpLmUuIHRoZXkgcHJvY2VzcyB0aGUgZGVmcyBhbmQgdGhlIFJFR19E RUFEIGFuZCBSRUdfVU5VU0VEIG5vdGVzLg0KICAgIFRodXMgaXQgaXMgaW1w b3J0YW50IHRvIGFkZCB0aGUgREZfTk9URVMgcHJvYmxlbSB0byB0aGUgc3Rh Y2sgb2YNCkBAIC0zOTcwLDcgKzQ4NzAsNyBAQCBkZl9zaW11bGF0ZV9maW5h bGl6ZV9iYWNrd2FyZHMgKGJhc2ljX2Jsb2NrIGJiLCBiaXRtYXAgbGl2ZSkN CiAgICBiaXR2ZWN0b3IgY29weWllZCBmcm9tIHRoZSBERl9MSVZFX0lOIG9y IERGX0xSX0lOLiAgVGhlbg0KICAgIGRmX3NpbXVsYXRlX29uZV9pbnNuX2Zv cndhcmRzIHNob3VsZCBiZSBjYWxsZWQgZm9yIGVhY2ggaW5zbiBpbg0KICAg IHRoZSBibG9jaywgc3RhcnRpbmcgd2l0aCB0aGUgZmlyc3Qgb25lLg0KLSAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi8qIEluaXRpYWxpemUgdGhl IExJVkUgYml0bWFwLCB3aGljaCBzaG91bGQgYmUgY29waWVkIGZyb20gREZf TElWRV9JTiBvcg0KICAgIERGX0xSX0lOIGZvciBiYXNpYyBibG9jayBCQiwg Zm9yIGZvcndhcmQgc2Nhbm5pbmcgYnkgbWFya2luZyBhcnRpZmljaWFsDQpA QCAtNDEyNiw4ICs1MDI2LDggQEAgY2FuX21vdmVfaW5zbnNfYWNyb3NzIChy dHhfaW5zbiAqZnJvbSwgcnR4X2luc24gKnRvLA0KICAgaW50IG1lbV9zZXRz X2luX2Fjcm9zcyA9IDA7DQogICBib29sIHRyYXBwaW5nX2luc25zX2luX2Fj cm9zcyA9IGZhbHNlOw0KLSAgaWYgKHBtb3ZlX3VwdG8gIT0gTlVMTCkNCi0g ICAgKnBtb3ZlX3VwdG8gPSBOVUxMOw0KKyAgaWYgKHBtb3ZlX3VwdG8gIT0g bnVsbHB0cikNCisgICAgKnBtb3ZlX3VwdG8gPSBudWxscHRyOw0KICAgLyog RmluZCByZWFsIGJvdW5kcywgaWdub3JpbmcgZGVidWcgaW5zbnMuICAqLw0K ICAgd2hpbGUgKCFOT05ERUJVR19JTlNOX1AgKGZyb20pICYmIGZyb20gIT0g dG8pDQpAQCAtNDE4MSw3ICs1MDgxLDcgQEAgY2FuX21vdmVfaW5zbnNfYWNy b3NzIChydHhfaW5zbiAqZnJvbSwgcnR4X2luc24gKnRvLA0KICAgdGVzdF91 c2UgPSBCSVRNQVBfQUxMT0MgKCZyZWdfb2JzdGFjayk7DQogICAvKiBDb21w dXRlIHRoZSBzZXQgb2YgcmVnaXN0ZXJzIHNldCBhbmQgdXNlZCBpbiB0aGUg QUNST1NTIHJhbmdlLiAgKi8NCi0gIGlmIChvdGhlcl9icmFuY2hfbGl2ZSAh PSBOVUxMKQ0KKyAgaWYgKG90aGVyX2JyYW5jaF9saXZlICE9IG51bGxwdHIp DQogICAgIGJpdG1hcF9jb3B5ICh0ZXN0X3VzZSwgb3RoZXJfYnJhbmNoX2xp dmUpOw0KICAgZGZfc2ltdWxhdGVfaW5pdGlhbGl6ZV9iYWNrd2FyZHMgKG1l cmdlX2JiLCB0ZXN0X3VzZSk7DQogICBmb3IgKGluc24gPSBhY3Jvc3NfdG87 IDsgaW5zbiA9IG5leHQpDQpAQCAtNDIwMSw3ICs1MTAxLDcgQEAgY2FuX21v dmVfaW5zbnNfYWNyb3NzIChydHhfaW5zbiAqZnJvbSwgcnR4X2luc24gKnRv LA0KICAgICAgdGhlIGZpcnN0IGluc24gaW4gTUVSR0UgdGhhdCBzZXRzIGEg cmVnaXN0ZXIgaW4gVEVTVF9VU0UsIG9yIHVzZXMNCiAgICAgIGEgcmVnaXN0 ZXIgaW4gVEVTVF9TRVQuICBXZSBhbHNvIGNoZWNrIGZvciBjYWxscywgdHJh cHBpbmcgb3BlcmF0aW9ucywNCiAgICAgIGFuZCBtZW1vcnkgcmVmZXJlbmNl cy4gICovDQotICBtYXhfdG8gPSBOVUxMOw0KKyAgbWF4X3RvID0gbnVsbHB0 cjsNCiAgIGZvciAoaW5zbiA9IGZyb207IDsgaW5zbiA9IG5leHQpDQogICAg IHsNCiAgICAgICBpZiAoQ0FMTF9QIChpbnNuKSkNCkBAIC00MjEyLDcgKzUx MTIsNyBAQCBjYW5fbW92ZV9pbnNuc19hY3Jvc3MgKHJ0eF9pbnNuICpmcm9t LCBydHhfaW5zbiAqdG8sDQp7DQogIGlmIChtYXlfdHJhcF9vcl9mYXVsdF9w IChQQVRURVJOIChpbnNuKSkNCiAgICAgICYmICh0cmFwcGluZ19pbnNuc19p bl9hY3Jvc3MNCi0gICB8fCBvdGhlcl9icmFuY2hfbGl2ZSAhPSBOVUxMDQor ICAgfHwgb3RoZXJfYnJhbmNoX2xpdmUgIT0gbnVsbHB0cg0KICB8fCB2b2xh dGlsZV9pbnNuX3AgKFBBVFRFUk4gKGluc24pKSkpDQogICAgYnJlYWs7DQpA QCAtNDIzMCw3ICs1MTMwLDcgQEAgY2FuX21vdmVfaW5zbnNfYWNyb3NzIChy dHhfaW5zbiAqZnJvbSwgcnR4X2luc24gKnRvLA0KICAgICBhY2Nlc3NlcyBv ciBzdG9yZXMgaW4gdGhlIEFDUk9TUyByYW5nZS4gIFRoYXQgbGVhdmVzDQog ICAgIG5vcm1hbCByZWFkcywgd2hpY2ggY2FuIGJlIG1vdmVkLCBhcyB0aGUg dHJhcHBpbmcgY2FzZSBpcw0KICAgICBkZWFsdCB3aXRoIGVsc2V3aGVyZS4g ICovDQotICAgaWYgKG90aGVyX2JyYW5jaF9saXZlICE9IE5VTEwgfHwgbWVt cmVmc19pbl9hY3Jvc3MgIT0gMCkNCisgICBpZiAob3RoZXJfYnJhbmNoX2xp dmUgIT0gbnVsbHB0ciB8fCBtZW1yZWZzX2luX2Fjcm9zcyAhPSAwKQ0KICAg IHsNCiAgICAgIGludCBtZW1fcmVmX2ZsYWdzID0gMDsNCiAgICAgIGludCBt ZW1fc2V0X2ZsYWdzID0gMDsNCkBAIC00MjY0LDcgKzUxNjQsNyBAQCBjYW5f bW92ZV9pbnNuc19hY3Jvc3MgKHJ0eF9pbnNuICpmcm9tLCBydHhfaW5zbiAq dG8sDQogICBpZiAobWF4X3RvICE9IHRvKQ0KICAgICBmYWlsID0gMTsNCi0g IGlmIChtYXhfdG8gPT0gTlVMTF9SVFggfHwgKGZhaWwgJiYgcG1vdmVfdXB0 byA9PSBOVUxMKSkNCisgIGlmIChtYXhfdG8gPT0gTlVMTF9SVFggfHwgKGZh aWwgJiYgcG1vdmVfdXB0byA9PSBudWxscHRyKSkNCiAgICAgZ290byBvdXQ7 DQogICAvKiBOb3csIGxvd2VyIHRoaXMgdXBwZXIgYm91bmQgYnkgYWxzbyB0 YWtpbmcgaW50byBhY2NvdW50IHRoYXQNCkBAIC00MzQyLDggKzUyNDIsNyBA QCBjYW5fbW92ZV9pbnNuc19hY3Jvc3MgKHJ0eF9pbnNuICpmcm9tLCBydHhf aW5zbiAqdG8sDQogICByZXR1cm4gIWZhaWw7DQp9DQotDQogDQotLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KICAgIE1VTFRJUExFIERFRklOSVRJT05TDQog ICAgRmluZCB0aGUgbG9jYXRpb25zIGluIHRoZSBmdW5jdGlvbiByZWFjaGVk IGJ5IG11bHRpcGxlIGRlZmluaXRpb24gc2l0ZXMNCkBAIC00Mzg4LDcgKzUy ODcsNyBAQCBjYW5fbW92ZV9pbnNuc19hY3Jvc3MgKHJ0eF9pbnNuICpmcm9t LCBydHhfaW5zbiAqdG8sDQogICAgIG5vdCBuZWVkIHRvIGl0ZXJhdGUgdGhl IGRvbWluYW5jZSBmcm9udGllciwgYmVjYXVzZSB3ZSBkbyBub3QgaW5zZXJ0 DQogICAgIGFueXRoaW5nIGxpa2UgUEhJIGZ1bmN0aW9ucyB0aGVyZSEgIElu c3RlYWQsIGRhdGFmbG93IHdpbGwgdGFrZSBjYXJlIG9mDQogICAgIHByb3Bh Z2F0aW5nIHRoZSBpbmZvcm1hdGlvbiB0byBCQjMncyBzdWNjZXNzb3JzLg0K LSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLyogUHJpdmF0ZSBkYXRh IHVzZWQgdG8gdmVyaWZ5IHRoZSBzb2x1dGlvbiBmb3IgdGhpcyBwcm9ibGVt LiAgKi8NCnN0cnVjdCBkZl9tZF9wcm9ibGVtX2RhdGENCkBAIC00NzE2LDEx ICs1NjE1LDExIEBAIGRmX21kX2ZyZWUgKHZvaWQpDQogICBiaXRtYXBfcmVs ZWFzZSAoJmRmX21kX3NjcmF0Y2gpOw0KICAgYml0bWFwX29ic3RhY2tfcmVs ZWFzZSAoJnByb2JsZW1fZGF0YS0+bWRfYml0bWFwcyk7DQogICBmcmVlIChw cm9ibGVtX2RhdGEpOw0KLSAgZGZfbWQtPnByb2JsZW1fZGF0YSA9IE5VTEw7 DQorICBkZl9tZC0+cHJvYmxlbV9kYXRhID0gbnVsbHB0cjsNCiAgIGRmX21k LT5ibG9ja19pbmZvX3NpemUgPSAwOw0KICAgZnJlZSAoZGZfbWQtPmJsb2Nr X2luZm8pOw0KLSAgZGZfbWQtPmJsb2NrX2luZm8gPSBOVUxMOw0KKyAgZGZf bWQtPmJsb2NrX2luZm8gPSBudWxscHRyOw0KICAgZnJlZSAoZGZfbWQpOw0K fQ0KQEAgLTQ3NTksMzEgKzU2NTgsMzEgQEAgZGZfbWRfYm90dG9tX2R1bXAg KGJhc2ljX2Jsb2NrIGJiLCBGSUxFICpmaWxlKQ0Kc3RhdGljIGNvbnN0IHN0 cnVjdCBkZl9wcm9ibGVtIHByb2JsZW1fTUQgPQ0Kew0KLSAgREZfTUQsICAg ICAgICAgICAgICAgICAgICAgIC8qIFByb2JsZW0gaWQuICAqLw0KLSAgREZf Rk9SV0FSRCwgICAgICAgICAgICAgICAgIC8qIERpcmVjdGlvbi4gICovDQot ICBkZl9tZF9hbGxvYywgICAgICAgICAgICAgICAgLyogQWxsb2NhdGUgdGhl IHByb2JsZW0gc3BlY2lmaWMgZGF0YS4gICovDQotICBkZl9tZF9yZXNldCwg ICAgICAgICAgICAgICAgLyogUmVzZXQgZ2xvYmFsIGluZm9ybWF0aW9uLiAg Ki8NCi0gIGRmX21kX2ZyZWVfYmJfaW5mbywgICAgICAgICAvKiBGcmVlIGJh c2ljIGJsb2NrIGluZm8uICAqLw0KLSAgZGZfbWRfbG9jYWxfY29tcHV0ZSwg ICAgICAgIC8qIExvY2FsIGNvbXB1dGUgZnVuY3Rpb24uICAqLw0KLSAgZGZf bWRfaW5pdCwgICAgICAgICAgICAgICAgIC8qIEluaXQgdGhlIHNvbHV0aW9u IHNwZWNpZmljIGRhdGEuICAqLw0KLSAgZGZfd29ya2xpc3RfZGF0YWZsb3cs ICAgICAgIC8qIFdvcmtsaXN0IHNvbHZlci4gICovDQotICBkZl9tZF9jb25m bHVlbmNlXzAsICAgICAgICAgLyogQ29uZmx1ZW5jZSBvcGVyYXRvciAwLiAg Ki8NCi0gIGRmX21kX2NvbmZsdWVuY2VfbiwgICAgICAgICAvKiBDb25mbHVl bmNlIG9wZXJhdG9yIG4uICAqLw0KLSAgZGZfbWRfdHJhbnNmZXJfZnVuY3Rp b24sICAgIC8qIFRyYW5zZmVyIGZ1bmN0aW9uLiAgKi8NCi0gIE5VTEwsICAg ICAgICAgICAgICAgICAgICAgICAvKiBGaW5hbGl6ZSBmdW5jdGlvbi4gICov DQotICBkZl9tZF9mcmVlLCAgICAgICAgICAgICAgICAgLyogRnJlZSBhbGwg b2YgdGhlIHByb2JsZW0gaW5mb3JtYXRpb24uICAqLw0KLSAgZGZfbWRfZnJl ZSwgICAgICAgICAgICAgICAgIC8qIFJlbW92ZSB0aGlzIHByb2JsZW0gZnJv bSB0aGUgc3RhY2sgb2YgZGF0YWZsb3cgcHJvYmxlbXMuICAqLw0KLSAgTlVM TCwgICAgICAgICAgICAgICAgICAgICAgIC8qIERlYnVnZ2luZy4gICovDQot ICBkZl9tZF90b3BfZHVtcCwgICAgICAgICAgICAgLyogRGVidWdnaW5nIHN0 YXJ0IGJsb2NrLiAgKi8NCi0gIGRmX21kX2JvdHRvbV9kdW1wLCAgICAgICAg ICAvKiBEZWJ1Z2dpbmcgZW5kIGJsb2NrLiAgKi8NCi0gIE5VTEwsICAgICAg ICAgICAgICAgICAgICAgICAvKiBEZWJ1Z2dpbmcgc3RhcnQgaW5zbi4gICov DQotICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogRGVidWdnaW5n IGVuZCBpbnNuLiAgKi8NCi0gIE5VTEwsICAgICAgIC8qIEluY3JlbWVudGFs IHNvbHV0aW9uIHZlcmlmeSBzdGFydC4gICovDQotICBOVUxMLCAgICAgICAv KiBJbmNyZW1lbnRhbCBzb2x1dGlvbiB2ZXJpZnkgZW5kLiAgKi8NCi0gIE5V TEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBEZXBlbmRlbnQgcHJvYmxl bS4gICovDQorICBERl9NRCwgICAgICAgICAgICAgICAgICAgICAgIC8qIFBy b2JsZW0gaWQuICAqLw0KKyAgREZfRk9SV0FSRCwgICAgICAgICAgICAgICAg ICAvKiBEaXJlY3Rpb24uICAqLw0KKyAgZGZfbWRfYWxsb2MsICAgICAgICAg ICAgICAgICAvKiBBbGxvY2F0ZSB0aGUgcHJvYmxlbSBzcGVjaWZpYyBkYXRh LiAgKi8NCisgIGRmX21kX3Jlc2V0LCAgICAgICAgICAgICAgICAgLyogUmVz ZXQgZ2xvYmFsIGluZm9ybWF0aW9uLiAgKi8NCisgIGRmX21kX2ZyZWVfYmJf aW5mbywgICAgICAgICAgLyogRnJlZSBiYXNpYyBibG9jayBpbmZvLiAgKi8N CisgIGRmX21kX2xvY2FsX2NvbXB1dGUsICAgICAgICAgLyogTG9jYWwgY29t cHV0ZSBmdW5jdGlvbi4gICovDQorICBkZl9tZF9pbml0LCAgICAgICAgICAg ICAgICAgIC8qIEluaXQgdGhlIHNvbHV0aW9uIHNwZWNpZmljIGRhdGEuICAq Lw0KKyAgZGZfd29ya2xpc3RfZGF0YWZsb3csICAgICAgICAvKiBXb3JrbGlz dCBzb2x2ZXIuICAqLw0KKyAgZGZfbWRfY29uZmx1ZW5jZV8wLCAgICAgICAg ICAvKiBDb25mbHVlbmNlIG9wZXJhdG9yIDAuICAqLw0KKyAgZGZfbWRfY29u Zmx1ZW5jZV9uLCAgICAgICAgICAvKiBDb25mbHVlbmNlIG9wZXJhdG9yIG4u ICAqLw0KKyAgZGZfbWRfdHJhbnNmZXJfZnVuY3Rpb24sICAgICAvKiBUcmFu c2ZlciBmdW5jdGlvbi4gICovDQorICBudWxscHRyLCAgICAgICAgICAgICAg ICAgICAgIC8qIEZpbmFsaXplIGZ1bmN0aW9uLiAgKi8NCisgIGRmX21kX2Zy ZWUsICAgICAgICAgICAgICAgICAgLyogRnJlZSBhbGwgb2YgdGhlIHByb2Js ZW0gaW5mb3JtYXRpb24uICAqLw0KKyAgZGZfbWRfZnJlZSwgICAgICAgICAg ICAgICAgICAvKiBSZW1vdmUgdGhpcyBwcm9ibGVtIGZyb20gdGhlIHN0YWNr IG9mIGRhdGFmbG93IHByb2JsZW1zLiAgKi8NCisgIG51bGxwdHIsICAgICAg ICAgICAgICAgICAgICAgLyogRGVidWdnaW5nLiAgKi8NCisgIGRmX21kX3Rv cF9kdW1wLCAgICAgICAgICAgICAgLyogRGVidWdnaW5nIHN0YXJ0IGJsb2Nr LiAgKi8NCisgIGRmX21kX2JvdHRvbV9kdW1wLCAgICAgICAgICAgLyogRGVi dWdnaW5nIGVuZCBibG9jay4gICovDQorICBudWxscHRyLCAgICAgICAgICAg ICAgICAgICAgIC8qIERlYnVnZ2luZyBzdGFydCBpbnNuLiAgKi8NCisgIG51 bGxwdHIsICAgICAgICAgICAgICAgICAgICAgLyogRGVidWdnaW5nIGVuZCBp bnNuLiAgKi8NCisgIG51bGxwdHIsICAgICAgICAgICAgLyogSW5jcmVtZW50 YWwgc29sdXRpb24gdmVyaWZ5IHN0YXJ0LiAgKi8NCisgIG51bGxwdHIsICAg ICAgICAgICAgLyogSW5jcmVtZW50YWwgc29sdXRpb24gdmVyaWZ5IGVuZC4g ICovDQorICBudWxscHRyLCAgICAgICAgICAgICAgICAgICAgIC8qIERlcGVu ZGVudCBwcm9ibGVtLiAgKi8NCiAgIHNpemVvZiAoY2xhc3MgZGZfbWRfYmJf aW5mbyksLyogU2l6ZSBvZiBlbnRyeSBvZiBibG9ja19pbmZvIGFycmF5LiAg Ki8NCi0gIFRWX0RGX01ELCAgICAgICAgICAgICAgICAgICAvKiBUaW1pbmcg dmFyaWFibGUuICAqLw0KLSAgZmFsc2UgICAgICAgICAgICAgICAgICAgICAg IC8qIFJlc2V0IGJsb2NrcyBvbiBkcm9wcGluZyBvdXQgb2YgYmxvY2tzX3Rv X2FuYWx5emUuICAqLw0KKyAgVFZfREZfTUQsICAgICAgICAgICAgICAgICAg ICAvKiBUaW1pbmcgdmFyaWFibGUuICAqLw0KKyAgZmFsc2UgICAgICAgICAg ICAgICAgICAgICAgICAvKiBSZXNldCBibG9ja3Mgb24gZHJvcHBpbmcgb3V0 IG9mIGJsb2Nrc190b19hbmFseXplLiAgKi8NCn07DQovKiBDcmVhdGUgYSBu ZXcgTUQgaW5zdGFuY2UgYW5kIGFkZCBpdCB0byB0aGUgZXhpc3RpbmcgaW5z dGFuY2UNCmRpZmYgLS1naXQgYS9nY2MvZGYuaCBiL2djYy9kZi5oDQppbmRl eCA4NGU1YWE4YjUyNC4uODExNWNlYjkwMGIgMTAwNjQ0DQotLS0gYS9nY2Mv ZGYuaA0KKysrIGIvZ2NjL2RmLmgNCkBAIC00Nyw2ICs0Nyw3IEBAIGVudW0g ZGZfcHJvYmxlbV9pZA0KICAgew0KICAgICBERl9TQ0FOLA0KICAgICBERl9M UiwgICAgICAgICAgICAgICAgLyogTGl2ZSBSZWdpc3RlcnMgYmFja3dhcmQu ICovDQorICAgIERGX0xJVkVfU1VCUkVHLCAgICAgICAvKiBMaXZlIFJlZ3Mg YW5kIFN1YnJlZ3MgKi8NCiAgICAgREZfTElWRSwgICAgICAgICAgICAgIC8q IExpdmUgUmVnaXN0ZXJzICYgVW5pbml0aWFsaXplZCBSZWdpc3RlcnMgKi8N CiAgICAgREZfUkQsICAgICAgICAgICAgICAgIC8qIFJlYWNoaW5nIERlZnMu ICovDQogICAgIERGX0NIQUlOLCAgICAgICAgICAgICAvKiBEZWYtVXNlIGFu ZC9vciBVc2UtRGVmIENoYWlucy4gKi8NCkBAIC04NzgsNiArODc5LDMzIEBA IHB1YmxpYzoNCiAgIGJpdG1hcF9oZWFkIG91dDsgICAvKiBBdCB0aGUgYm90 dG9tIG9mIHRoZSBibG9jay4gICovDQp9Ow0KK2NsYXNzIHN1YnJlZ3NfbGl2 ZTsgLyogRGVmaW5lZCBpbiBzdWJyZWctcmFuZ2Uue2gsY2N9ICovDQorDQor LyogTG9jYWwgbGl2ZSBpbmZvIGluIGJhc2ljIGJsb2NrLiBVc2UgYnkgbGl2 ZV9zdWJyZWcgcHJvYmxlbSBhbmQgTFJBIHBhc3MuICAqLw0KK2NsYXNzIGRm X2xpdmVfc3VicmVnX2xvY2FsX2JiX2luZm8NCit7DQorcHVibGljOg0KKyAg Yml0bWFwX2hlYWQgZnVsbF9kZWY7DQorICBiaXRtYXBfaGVhZCBmdWxsX3Vz ZTsNCisgIC8qIE9ubHkgZm9yIHBzZXVkbyByZWdpc3RlcnMuICAqLw0KKyAg Yml0bWFwX2hlYWQgcGFydGlhbF9kZWY7DQorICBiaXRtYXBfaGVhZCBwYXJ0 aWFsX3VzZTsNCisgIHN1YnJlZ3NfbGl2ZSAqcmFuZ2VfZGVmID0gbnVsbHB0 cjsNCisgIHN1YnJlZ3NfbGl2ZSAqcmFuZ2VfdXNlID0gbnVsbHB0cjsNCit9 Ow0KKw0KKy8qIExpdmUgaW4vb3V0IGluZm9zIG9mIGVhY2ggYmFzaWMuICAq Lw0KK2NsYXNzIGRmX2xpdmVfc3VicmVnX2JiX2luZm8gOiBwdWJsaWMgZGZf bGl2ZV9zdWJyZWdfbG9jYWxfYmJfaW5mbw0KK3sNCitwdWJsaWM6DQorICBi aXRtYXBfaGVhZCBhbGxfaW4sIGZ1bGxfaW47DQorICBiaXRtYXBfaGVhZCBh bGxfb3V0LCBmdWxsX291dDsNCisgIC8qIE9ubHkgZm9yIHBzZXVkbyByZWdp c3RlcnMuICAqLw0KKyAgYml0bWFwX2hlYWQgcGFydGlhbF9pbjsNCisgIGJp dG1hcF9oZWFkIHBhcnRpYWxfb3V0Ow0KKyAgc3VicmVnc19saXZlICpyYW5n ZV9pbiA9IG51bGxwdHI7DQorICBzdWJyZWdzX2xpdmUgKnJhbmdlX291dCA9 IG51bGxwdHI7DQorfTsNCi8qIFVuaW5pdGlhbGl6ZWQgcmVnaXN0ZXJzLiAg QWxsIGJpdG1hcHMgYXJlIHJlZmVyZW5jZWQgYnkgdGhlDQogICAgcmVnaXN0 ZXIgbnVtYmVyLiAgQW5kZWQgcmVzdWx0cyBvZiB0aGUgZm9yd2FyZHMgYW5k IGJhY2t3YXJkIGxpdmUNCkBAIC05NDAsNiArOTY4LDcgQEAgZXh0ZXJuIGNs YXNzIGRmX2QgKmRmOw0KI2RlZmluZSBkZl9zY2FuICAgIChkZi0+cHJvYmxl bXNfYnlfaW5kZXhbREZfU0NBTl0pDQojZGVmaW5lIGRmX3JkICAgICAgKGRm LT5wcm9ibGVtc19ieV9pbmRleFtERl9SRF0pDQojZGVmaW5lIGRmX2xyICAg ICAgKGRmLT5wcm9ibGVtc19ieV9pbmRleFtERl9MUl0pDQorI2RlZmluZSBk Zl9saXZlX3N1YnJlZyAoZGYtPnByb2JsZW1zX2J5X2luZGV4W0RGX0xJVkVf U1VCUkVHXSkNCiNkZWZpbmUgZGZfbGl2ZSAgICAoZGYtPnByb2JsZW1zX2J5 X2luZGV4W0RGX0xJVkVdKQ0KI2RlZmluZSBkZl9jaGFpbiAgIChkZi0+cHJv YmxlbXNfYnlfaW5kZXhbREZfQ0hBSU5dKQ0KI2RlZmluZSBkZl93b3JkX2xy IChkZi0+cHJvYmxlbXNfYnlfaW5kZXhbREZfV09SRF9MUl0pDQpAQCAtMTAz MSw2ICsxMDYwLDggQEAgZXh0ZXJuIHZvaWQgZGZfbHJfYWRkX3Byb2JsZW0g KHZvaWQpOw0KZXh0ZXJuIHZvaWQgZGZfbHJfdmVyaWZ5X3RyYW5zZmVyX2Z1 bmN0aW9ucyAodm9pZCk7DQpleHRlcm4gdm9pZCBkZl9saXZlX3ZlcmlmeV90 cmFuc2Zlcl9mdW5jdGlvbnMgKHZvaWQpOw0KZXh0ZXJuIHZvaWQgZGZfbGl2 ZV9hZGRfcHJvYmxlbSAodm9pZCk7DQorZXh0ZXJuIHZvaWQgZGZfbGl2ZV9z dWJyZWdfYWRkX3Byb2JsZW0gKCk7DQorZXh0ZXJuIHZvaWQgZGZfbGl2ZV9z dWJyZWdfZmluYWxpemUgKGJpdG1hcCBhbGxfYmxvY2tzKTsNCmV4dGVybiB2 b2lkIGRmX2xpdmVfc2V0X2FsbF9kaXJ0eSAodm9pZCk7DQpleHRlcm4gdm9p ZCBkZl9jaGFpbl9hZGRfcHJvYmxlbSAodW5zaWduZWQgaW50KTsNCmV4dGVy biB2b2lkIGRmX3dvcmRfbHJfYWRkX3Byb2JsZW0gKHZvaWQpOw0KQEAgLTEw NTksNiArMTA5MCwxOSBAQCBleHRlcm4gYm9vbCBjYW5fbW92ZV9pbnNuc19h Y3Jvc3MgKHJ0eF9pbnNuICosIHJ0eF9pbnNuICosDQogICBydHhfaW5zbiAq LCBydHhfaW5zbiAqLA0KICAgYmFzaWNfYmxvY2ssIHJlZ3NldCwNCiAgIHJl Z3NldCwgcnR4X2luc24gKiopOw0KK2V4dGVybiB2b2lkDQorZGZfbGl2ZV9z dWJyZWdfY2hlY2tfcmVzdWx0IChiaXRtYXAsIGJpdG1hcCwgc3VicmVnc19s aXZlICopOw0KK2V4dGVybiBib29sIG11bHRpcmVnX3AgKGludCk7DQorZXh0 ZXJuIHZvaWQgaW5pdF9yYW5nZSAocnR4LCBzYml0bWFwKTsNCitleHRlcm4g dm9pZA0KK2FkZF9zdWJyZWdfcmFuZ2VfZGVmIChkZl9saXZlX3N1YnJlZ19s b2NhbF9iYl9pbmZvICosIHVuc2lnbmVkIGludCwgDQorICAgICAgIGNvbnN0 X3NiaXRtYXApOw0KK2V4dGVybiB2b2lkDQorYWRkX3N1YnJlZ19yYW5nZV91 c2UgKGRmX2xpdmVfc3VicmVnX2xvY2FsX2JiX2luZm8gKiwgdW5zaWduZWQg aW50LCANCisgICAgICAgY29uc3Rfc2JpdG1hcCk7DQorZXh0ZXJuIHZvaWQN CityZW1vdmVfc3VicmVnX3JhbmdlIChkZl9saXZlX3N1YnJlZ19sb2NhbF9i Yl9pbmZvICosIHVuc2lnbmVkIGludCwNCisgICAgICBjb25zdF9zYml0bWFw KTsNCi8qIEZ1bmN0aW9ucyBkZWZpbmVkIGluIGRmLXNjYW4uY2MuICAqLw0K ZXh0ZXJuIHZvaWQgZGZfc2Nhbl9hbGxvYyAoYml0bWFwKTsNCkBAIC0xMTky LDYgKzEyMzYsMTIwIEBAIGRmX2dldF9saXZlX2luIChiYXNpY19ibG9jayBi YikNCiAgICAgcmV0dXJuIERGX0xSX0lOIChiYik7DQp9DQorLyogR2V0IHRo ZSBzdWJyZWcgbGl2ZSBhdCBpbiBzZXQgZm9yIEJCLiBUaGUgbGl2ZSBzZXQg aW5jbHVkZSBmdWxsIGFuZCBwYXJ0aWFsDQorICogbGl2ZS4gd2Ugb25seSB0 cmFjayBhbmQgdXNlIHN1YnJlZyBsaXZlbmVzcyB3aGVuIC1mdHJhY2stc3Vi cmVnLWxpdmVuZXNzLA0KKyAqIG90aGVyd2lzZSB1c2UgREZfTFJfSU4uICBU aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgdGhlIHJlZ2lzdGVyIGFsbG9jYXRv cnMuICovDQorDQoraW5saW5lIGJpdG1hcA0KK2RmX2dldF9zdWJyZWdfbGl2 ZV9pbiAoYmFzaWNfYmxvY2sgYmIpDQorew0KKyAgaWYgKGZsYWdfdHJhY2tf c3VicmVnX2xpdmVuZXNzKQ0KKyAgICB7DQorICAgICAgZGZfbGl2ZV9zdWJy ZWdfYmJfaW5mbyAqYmJfaW5mbyA9ICYoDQorIChjbGFzcyBkZl9saXZlX3N1 YnJlZ19iYl9pbmZvICopIGRmX2xpdmVfc3VicmVnLT5ibG9ja19pbmZvKVti Yi0+aW5kZXhdOw0KKyAgICAgIHJldHVybiAmKGJiX2luZm8tPmFsbF9pbik7 DQorICAgIH0NCisgIHJldHVybiBERl9MUl9JTiAoYmIpOw0KK30NCisNCisv KiBHZXQgdGhlIHN1YnJlZyBsaXZlIGF0IG91dCBzZXQgZm9yIEJCLiBUaGUg bGl2ZSBzZXQgaW5jbHVkZSBmdWxsIGFuZA0KKyAqIHBhcnRpYWwgbGl2ZS4g d2Ugb25seSB0cmFjayBhbmQgdXNlIHN1YnJlZyBsaXZlbmVzcyB3aGVuDQor ICogLWZ0cmFjay1zdWJyZWctbGl2ZW5lc3MsIG90aGVyd2lzZSB1c2UgREZf TFJfT1VULiAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5DQorICogdGhlIHJl Z2lzdGVyIGFsbG9jYXRvcnMuICAqLw0KKw0KK2lubGluZSBiaXRtYXANCitk Zl9nZXRfc3VicmVnX2xpdmVfb3V0IChiYXNpY19ibG9jayBiYikNCit7DQor ICBpZiAoZmxhZ190cmFja19zdWJyZWdfbGl2ZW5lc3MpDQorICAgIHsNCisg ICAgICBkZl9saXZlX3N1YnJlZ19iYl9pbmZvICpiYl9pbmZvID0gJigNCisg KGNsYXNzIGRmX2xpdmVfc3VicmVnX2JiX2luZm8gKikgZGZfbGl2ZV9zdWJy ZWctPmJsb2NrX2luZm8pW2JiLT5pbmRleF07DQorICAgICAgcmV0dXJuICYo YmJfaW5mby0+YWxsX291dCk7DQorICAgIH0NCisgIHJldHVybiBERl9MUl9P VVQgKGJiKTsNCit9DQorDQorLyogR2V0IHRoZSBzdWJyZWcgbGl2ZSBhdCBp biBzZXQgZm9yIEJCLiBUaGUgbGl2ZSBzZXQgb25seSBpbmNsdWRlIGZ1bGwg YW5kDQorICogcGFydGlhbCBsaXZlLiB3ZSBvbmx5IHRyYWNrIGFuZCB1c2Ug c3VicmVnIGxpdmVuZXNzIHdoZW4NCisgKiAtZnRyYWNrLXN1YnJlZy1saXZl bmVzcywgb3RoZXJ3aXNlIHVzZSBERl9MUl9PVVQuICBUaGlzIGZ1bmN0aW9u IGlzIHVzZWQgYnkNCisgKiB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9ycy4gICov DQorDQoraW5saW5lIGJpdG1hcA0KK2RmX2dldF9zdWJyZWdfbGl2ZV9mdWxs X2luIChiYXNpY19ibG9jayBiYikNCit7DQorICBpZiAoZmxhZ190cmFja19z dWJyZWdfbGl2ZW5lc3MpDQorICAgIHsNCisgICAgICBkZl9saXZlX3N1YnJl Z19iYl9pbmZvICpiYl9pbmZvID0gJigNCisgKGNsYXNzIGRmX2xpdmVfc3Vi cmVnX2JiX2luZm8gKikgZGZfbGl2ZV9zdWJyZWctPmJsb2NrX2luZm8pW2Ji LT5pbmRleF07DQorICAgICAgcmV0dXJuICYoYmJfaW5mby0+ZnVsbF9pbik7 DQorICAgIH0NCisgIHJldHVybiBERl9MUl9JTiAoYmIpOw0KK30NCisNCitp bmxpbmUgYml0bWFwDQorZGZfZ2V0X3N1YnJlZ19saXZlX2Z1bGxfb3V0IChi YXNpY19ibG9jayBiYikNCit7DQorICBpZiAoZmxhZ190cmFja19zdWJyZWdf bGl2ZW5lc3MpDQorICAgIHsNCisgICAgICBkZl9saXZlX3N1YnJlZ19iYl9p bmZvICpiYl9pbmZvID0gJigNCisgKGNsYXNzIGRmX2xpdmVfc3VicmVnX2Ji X2luZm8gKikgZGZfbGl2ZV9zdWJyZWctPmJsb2NrX2luZm8pW2JiLT5pbmRl eF07DQorICAgICAgcmV0dXJuICYoYmJfaW5mby0+ZnVsbF9vdXQpOw0KKyAg ICB9DQorICByZXR1cm4gREZfTFJfT1VUIChiYik7DQorfQ0KKw0KKy8qIERl ZmluZSBpbiBkZi1wcm9ibGVtcy5jYywgdXNlZCB3aGVuIGRpc2FibGUgdHJh Y2stc3VicmVnLWxpdmVuZXNzLiAgKi8NCitleHRlcm4gYml0bWFwX2hlYWQg ZGZfZW1wdHlfYml0bWFwOw0KK2V4dGVybiBzdWJyZWdzX2xpdmUgZGZfZW1w dHlfbGl2ZTsNCisNCitpbmxpbmUgYml0bWFwDQorZGZfZ2V0X3N1YnJlZ19s aXZlX3BhcnRpYWxfaW4gKGJhc2ljX2Jsb2NrIGJiKQ0KK3sNCisgIGlmIChm bGFnX3RyYWNrX3N1YnJlZ19saXZlbmVzcykNCisgICAgew0KKyAgICAgIGRm X2xpdmVfc3VicmVnX2JiX2luZm8gKmJiX2luZm8gPSAmKA0KKyAoY2xhc3Mg ZGZfbGl2ZV9zdWJyZWdfYmJfaW5mbyAqKSBkZl9saXZlX3N1YnJlZy0+Ymxv Y2tfaW5mbylbYmItPmluZGV4XTsNCisgICAgICByZXR1cm4gJihiYl9pbmZv LT5wYXJ0aWFsX2luKTsNCisgICAgfQ0KKyAgcmV0dXJuICZkZl9lbXB0eV9i aXRtYXA7DQorfQ0KKw0KK2lubGluZSBiaXRtYXANCitkZl9nZXRfc3VicmVn X2xpdmVfcGFydGlhbF9vdXQgKGJhc2ljX2Jsb2NrIGJiKQ0KK3sNCisgIGlm IChmbGFnX3RyYWNrX3N1YnJlZ19saXZlbmVzcykNCisgICAgew0KKyAgICAg IGRmX2xpdmVfc3VicmVnX2JiX2luZm8gKmJiX2luZm8gPSAmKA0KKyAoY2xh c3MgZGZfbGl2ZV9zdWJyZWdfYmJfaW5mbyAqKSBkZl9saXZlX3N1YnJlZy0+ YmxvY2tfaW5mbylbYmItPmluZGV4XTsNCisgICAgICByZXR1cm4gJihiYl9p bmZvLT5wYXJ0aWFsX291dCk7DQorICAgIH0NCisgIHJldHVybiAmZGZfZW1w dHlfYml0bWFwOw0KK30NCisNCitpbmxpbmUgc3VicmVnc19saXZlICoNCitk Zl9nZXRfc3VicmVnX2xpdmVfcmFuZ2VfaW4gKGJhc2ljX2Jsb2NrIGJiKQ0K K3sNCisgIGlmIChmbGFnX3RyYWNrX3N1YnJlZ19saXZlbmVzcykNCisgICAg ew0KKyAgICAgIGRmX2xpdmVfc3VicmVnX2JiX2luZm8gKmJiX2luZm8gPSAm KA0KKyAoY2xhc3MgZGZfbGl2ZV9zdWJyZWdfYmJfaW5mbyAqKSBkZl9saXZl X3N1YnJlZy0+YmxvY2tfaW5mbylbYmItPmluZGV4XTsNCisgICAgICByZXR1 cm4gYmJfaW5mby0+cmFuZ2VfaW47DQorICAgIH0NCisgIHJldHVybiAmZGZf ZW1wdHlfbGl2ZTsNCit9DQorDQoraW5saW5lIHN1YnJlZ3NfbGl2ZSAqDQor ZGZfZ2V0X3N1YnJlZ19saXZlX3JhbmdlX291dCAoYmFzaWNfYmxvY2sgYmIp DQorew0KKyAgaWYgKGZsYWdfdHJhY2tfc3VicmVnX2xpdmVuZXNzKQ0KKyAg ICB7DQorICAgICAgZGZfbGl2ZV9zdWJyZWdfYmJfaW5mbyAqYmJfaW5mbyA9 ICYoDQorIChjbGFzcyBkZl9saXZlX3N1YnJlZ19iYl9pbmZvICopIGRmX2xp dmVfc3VicmVnLT5ibG9ja19pbmZvKVtiYi0+aW5kZXhdOw0KKyAgICAgIHJl dHVybiBiYl9pbmZvLT5yYW5nZV9vdXQ7DQorICAgIH0NCisgIHJldHVybiAm ZGZfZW1wdHlfbGl2ZTsNCit9DQorDQovKiBHZXQgYmFzaWMgYmxvY2sgaW5m by4gICovDQovKiBHZXQgdGhlIGFydGlmaWNpYWwgZGVmcyBmb3IgYSBiYXNp YyBibG9jay4gICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3JlZ3MuaCBiL2djYy9y ZWdzLmgNCmluZGV4IDE2MTg5YzU4ZmQxLi4zYjUyNDA5NjUzMyAxMDA2NDQN Ci0tLSBhL2djYy9yZWdzLmgNCisrKyBiL2djYy9yZWdzLmgNCkBAIC0zODks NCArMzg5LDkgQEAgcmFuZ2VfaW5faGFyZF9yZWdfc2V0X3AgKGNvbnN0X2hh cmRfcmVnX3NldCBzZXQsIHVuc2lnbmVkIHJlZ25vLCBpbnQgbnJlZ3MpDQog ICByZXR1cm4gdHJ1ZTsNCn0NCisvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBi bG9ja3MgdGhlIE1PREUgb3ZlcmxhcC4gT25lIGJsb2NrIGVxdWFsIHRvIG1v ZGUncw0KKyAgIG5hdHVyYWwgc2l6ZS4gICovDQorI2RlZmluZSBnZXRfbmJs b2Nrcyhtb2RlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCisgIChleGFjdF9kaXYgKEdFVF9NT0RF X1NJWkUgKG1vZGUpLCBSRUdNT0RFX05BVFVSQUxfU0laRSAobW9kZSkpLnRv X2NvbnN0YW50ICgpKQ0KKw0KI2VuZGlmIC8qIEdDQ19SRUdTX0ggKi8NCmRp ZmYgLS1naXQgYS9nY2Mvc2JpdG1hcC5jYyBiL2djYy9zYml0bWFwLmNjDQpp bmRleCAwM2JiMmM2ZDQ0Yi4uNWQ5NjBhZGNhYmUgMTAwNjQ0DQotLS0gYS9n Y2Mvc2JpdG1hcC5jYw0KKysrIGIvZ2NjL3NiaXRtYXAuY2MNCkBAIC0yMDgs NiArMjA4LDI5IEBAIGJpdG1hcF9lbXB0eV9wIChjb25zdF9zYml0bWFwIGJt YXApDQogICByZXR1cm4gdHJ1ZTsNCn0NCisvKiBSZXR1cm4gdHJ1ZSBpZiB0 aGUgYml0bWFwIGlzIGZ1bGwsIGkuZS4gYWxsIGJpdHMgYXJlIHNldC4gICov DQorDQorYm9vbA0KK2JpdG1hcF9mdWxsX3AgKGNvbnN0X3NiaXRtYXAgYm1h cCkNCit7DQorICB1bnNpZ25lZCBpbnQgZW5kX3dvcmQgPSBibWFwLT5uX2Jp dHMgLyBTQklUTUFQX0VMVF9CSVRTOw0KKyAgdW5zaWduZWQgaW50IGkgPSAw Ow0KKyAgZm9yICg7IGkgPCBlbmRfd29yZDsgaSsrKQ0KKyAgICBpZiAoYm1h cC0+ZWxtc1tpXSAhPSAoU0JJVE1BUF9FTFRfVFlQRSkgLTEpDQorICAgICAg cmV0dXJuIGZhbHNlOw0KKw0KKyAgdW5zaWduZWQgaW50IGVuZF9iaXRubyA9 IGJtYXAtPm5fYml0cyAlIFNCSVRNQVBfRUxUX0JJVFM7DQorDQorICBpZiAo ZW5kX2JpdG5vID09IDApDQorICAgIHJldHVybiB0cnVlOw0KKw0KKyAgZ2Nj X2NoZWNraW5nX2Fzc2VydCAoaSArIDEgPT0gYm1hcC0+c2l6ZSk7DQorDQor ICBTQklUTUFQX0VMVF9UWVBFIG1hc2sgPSAoKFNCSVRNQVBfRUxUX1RZUEUp IDEgPDwgZW5kX2JpdG5vKSAtIDE7DQorICAvKiBNYWtlIHN1cmUgdGhlIHRh aWwgYml0cyBhcmUgc2V0LiAgKi8NCisgIHJldHVybiAoYm1hcC0+ZWxtc1tp XSAmIG1hc2spID09IG1hc2s7DQorfQ0KKw0KLyogQ2xlYXIgQ09VTlQgYml0 cyBmcm9tIFNUQVJUIGluIEJNQVAuICAqLw0Kdm9pZA0KQEAgLTY2Miw2ICs2 ODUsMzYgQEAgYml0bWFwX3N1YnNldF9wIChjb25zdF9zYml0bWFwIGEsIGNv bnN0X3NiaXRtYXAgYikNCiAgIHJldHVybiB0cnVlOw0KfQ0KKy8qIFJldHVy biB0cnVlIGlmIHRoZSBiaXRzIGluIEEgYW5kIEIgYXJlIHNldCB0aGUgc2Ft ZSBhbmQgdGhlIG51bWJlciBvZiBiaXRzIGlzDQorICAgdGhlIHNhbWUuICov DQorDQorYm9vbA0KK2JpdG1hcF9zYW1lX3AgKGNvbnN0X3NiaXRtYXAgYSwg Y29uc3Rfc2JpdG1hcCBiKQ0KK3sNCisgIGlmIChhLT5uX2JpdHMgIT0gYi0+ bl9iaXRzKQ0KKyAgICByZXR1cm4gZmFsc2U7DQorDQorICBnY2NfY2hlY2tp bmdfYXNzZXJ0IChhLT5zaXplID09IGItPnNpemUpOw0KKw0KKyAgdW5zaWdu ZWQgaW50IGVuZF93b3JkID0gYS0+bl9iaXRzIC8gU0JJVE1BUF9FTFRfQklU UzsNCisgIHVuc2lnbmVkIGludCBpID0gMDsNCisgIGZvciAoOyBpIDwgZW5k X3dvcmQ7IGkrKykNCisgICAgaWYgKGEtPmVsbXNbaV0gIT0gYi0+ZWxtc1tp XSkNCisgICAgICByZXR1cm4gZmFsc2U7DQorDQorICB1bnNpZ25lZCBpbnQg ZW5kX2JpdG5vID0gYS0+bl9iaXRzICUgU0JJVE1BUF9FTFRfQklUUzsNCisN CisgIGlmIChlbmRfYml0bm8gPT0gMCkNCisgICAgcmV0dXJuIHRydWU7DQor DQorICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChpICsgMSA9PSBhLT5zaXplKTsN CisNCisgIFNCSVRNQVBfRUxUX1RZUEUgbWFzayA9ICgoU0JJVE1BUF9FTFRf VFlQRSkgMSA8PCBlbmRfYml0bm8pIC0gMTsNCisNCisgIC8qIE1ha2Ugc3Vy ZSB0aGUgdGFpbCBiaXRzIGFyZSBzYW1lLiAgKi8NCisgIHJldHVybiAoYS0+ ZWxtc1tpXSAmIG1hc2spID09IChiLT5lbG1zW2ldICYgbWFzayk7DQorfQ0K Kw0KLyogU2V0IERTVCB0byBiZSAoQSBvciAoQiBhbmQgQykpLg0KICAgIFJl dHVybiBub256ZXJvIGlmIGFueSBjaGFuZ2UgaXMgbWFkZS4gICovDQpAQCAt OTk0LDYgKzEwNDcsNDkgQEAgdGVzdF9iaXRfaW5fcmFuZ2UgKCkNCiAgIHNi aXRtYXBfZnJlZSAocyk7DQp9DQorLyogVmVyaWZ5IGJpdG1hcF9mdWxsX3Ag ZnVuY3Rpb25zIGZvciBzYml0bWFwLiAgKi8NCisNCitzdGF0aWMgdm9pZA0K K3Rlc3RfZnVsbCAoKQ0KK3sNCisgIHNiaXRtYXAgcyA9IHNiaXRtYXBfYWxs b2MgKDE5Myk7DQorDQorICBiaXRtYXBfY2xlYXIgKHMpOw0KKyAgQVNTRVJU X0ZBTFNFIChiaXRtYXBfZnVsbF9wIChzKSk7DQorDQorICBiaXRtYXBfb25l cyAocyk7DQorICBBU1NFUlRfVFJVRSAoYml0bWFwX2Z1bGxfcCAocykpOw0K Kw0KKyAgYml0bWFwX2NsZWFyX2JpdCAocywgMTkyKTsNCisgIEFTU0VSVF9G QUxTRSAoYml0bWFwX2Z1bGxfcCAocykpOw0KKw0KKyAgYml0bWFwX29uZXMg KHMpOw0KKyAgYml0bWFwX2NsZWFyX2JpdCAocywgMTcpOw0KKyAgQVNTRVJU X0ZBTFNFIChiaXRtYXBfZnVsbF9wIChzKSk7DQorfQ0KKw0KKy8qIFZlcmlm eSBiaXRtYXBfc2FtZV9wIGZ1bmN0aW9ucyBmb3Igc2JpdG1hcC4gICovDQor DQorc3RhdGljIHZvaWQNCit0ZXN0X3NhbWUgKCkNCit7DQorICBzYml0bWFw IHMxID0gc2JpdG1hcF9hbGxvYyAoMTkzKTsNCisgIHNiaXRtYXAgczIgPSBz Yml0bWFwX2FsbG9jICgxOTMpOw0KKyAgc2JpdG1hcCBzMyA9IHNiaXRtYXBf YWxsb2MgKDE5Mik7DQorICANCisgIEFTU0VSVF9GQUxTRSAoYml0bWFwX3Nh bWVfcCAoczEsIHMzKSk7DQorDQorICBiaXRtYXBfY2xlYXIgKHMxKTsNCisg IGJpdG1hcF9jbGVhciAoczIpOw0KKyAgQVNTRVJUX1RSVUUgKGJpdG1hcF9z YW1lX3AgKHMxLCBzMikpOw0KKyAgDQorICBiaXRtYXBfc2V0X2JpdCAoczIs IDE5Mik7DQorICBBU1NFUlRfRkFMU0UgKGJpdG1hcF9zYW1lX3AgKHMxLCBz MikpOw0KKyAgDQorICBiaXRtYXBfc2V0X2JpdCAoczEsIDE5Mik7DQorICBB U1NFUlRfVFJVRSAoYml0bWFwX3NhbWVfcCAoczEsIHMyKSk7DQorfQ0KKw0K LyogUnVuIGFsbCBvZiB0aGUgc2VsZnRlc3RzIHdpdGhpbiB0aGlzIGZpbGUu ICAqLw0Kdm9pZA0KQEAgLTEwMDEsNiArMTA5Nyw4IEBAIHNiaXRtYXBfY2Nf dGVzdHMgKCkNCnsNCiAgIHRlc3Rfc2V0X3JhbmdlICgpOw0KICAgdGVzdF9i aXRfaW5fcmFuZ2UgKCk7DQorICB0ZXN0X2Z1bGwgKCk7DQorICB0ZXN0X3Nh bWUgKCk7DQp9DQp9IC8vIG5hbWVzcGFjZSBzZWxmdGVzdA0KZGlmZiAtLWdp dCBhL2djYy9zYml0bWFwLmggYi9nY2Mvc2JpdG1hcC5oDQppbmRleCBkYTYx MTZjZTkyNS4uNzFjZmRlZDlmYjIgMTAwNjQ0DQotLS0gYS9nY2Mvc2JpdG1h cC5oDQorKysgYi9nY2Mvc2JpdG1hcC5oDQpAQCAtMjY3LDYgKzI2Nyw3IEBA IGV4dGVybiB2b2lkIGJpdG1hcF9jb3B5IChzYml0bWFwLCBjb25zdF9zYml0 bWFwKTsNCmV4dGVybiBib29sIGJpdG1hcF9lcXVhbF9wIChjb25zdF9zYml0 bWFwLCBjb25zdF9zYml0bWFwKTsNCmV4dGVybiB1bnNpZ25lZCBpbnQgYml0 bWFwX2NvdW50X2JpdHMgKGNvbnN0X3NiaXRtYXApOw0KZXh0ZXJuIGJvb2wg Yml0bWFwX2VtcHR5X3AgKGNvbnN0X3NiaXRtYXApOw0KK2V4dGVybiBib29s IGJpdG1hcF9mdWxsX3AgKGNvbnN0X3NiaXRtYXApOw0KZXh0ZXJuIHZvaWQg Yml0bWFwX2NsZWFyIChzYml0bWFwKTsNCmV4dGVybiB2b2lkIGJpdG1hcF9j bGVhcl9yYW5nZSAoc2JpdG1hcCwgdW5zaWduZWQsIHVuc2lnbmVkKTsNCmV4 dGVybiB2b2lkIGJpdG1hcF9zZXRfcmFuZ2UgKHNiaXRtYXAsIHVuc2lnbmVk LCB1bnNpZ25lZCk7DQpAQCAtMjg3LDYgKzI4OCw3IEBAIGV4dGVybiBib29s IGJpdG1hcF9hbmQgKHNiaXRtYXAsIGNvbnN0X3NiaXRtYXAsIGNvbnN0X3Ni aXRtYXApOw0KZXh0ZXJuIGJvb2wgYml0bWFwX2lvciAoc2JpdG1hcCwgY29u c3Rfc2JpdG1hcCwgY29uc3Rfc2JpdG1hcCk7DQpleHRlcm4gYm9vbCBiaXRt YXBfeG9yIChzYml0bWFwLCBjb25zdF9zYml0bWFwLCBjb25zdF9zYml0bWFw KTsNCmV4dGVybiBib29sIGJpdG1hcF9zdWJzZXRfcCAoY29uc3Rfc2JpdG1h cCwgY29uc3Rfc2JpdG1hcCk7DQorZXh0ZXJuIGJvb2wgYml0bWFwX3NhbWVf cCAoY29uc3Rfc2JpdG1hcCwgY29uc3Rfc2JpdG1hcCk7DQpleHRlcm4gYm9v bCBiaXRtYXBfYml0X2luX3JhbmdlX3AgKGNvbnN0X3NiaXRtYXAsIHVuc2ln bmVkIGludCwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBpbnQgYml0bWFwX2Zp cnN0X3NldF9iaXQgKGNvbnN0X3NiaXRtYXApOw0KZGlmZiAtLWdpdCBhL2dj Yy9zdWJyZWctbGl2ZS1yYW5nZS5jYyBiL2djYy9zdWJyZWctbGl2ZS1yYW5n ZS5jYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAw Li43ZThlMDgxODQ0Zg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2NjL3N1YnJl Zy1saXZlLXJhbmdlLmNjDQpAQCAtMCwwICsxLDUzIEBADQorLyogU1VCUkVH IGxpdmVuZXNzIHRyYWNraW5nIGNsYXNzZXMgZm9yIERGICYgSVJBICYgTFJB Lg0KKyAgIENvcHlyaWdodCAoQykgMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4NCisgICBDb250cmlidXRlZCBieSBMZWh1YSBEaW5nIChs ZWh1YS5kaW5nQHJpdmFpLmFpKSwgUmlWQUkgVGVjaG5vbG9naWVzIEx0ZC4N CisNCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuDQorDQorICAgR0ND IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkgaXQNCisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMsIG9yIChhdCB5b3VyIG9wdGlvbikNCisgICBhbnkgbGF0ZXIgdmVyc2lv bi4NCisNCisgICBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQorICAgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0K KyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICAgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlDQorICAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBD T1BZSU5HMy4gIElmIG5vdCBzZWUNCisgICA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLw0KKw0KKyNpbmNsdWRlICJzdWJyZWctbGl2ZS1y YW5nZS5oIg0KKw0KK3ZvaWQNCitzdWJyZWdzX2xpdmU6OmR1bXAgKEZJTEUg KmZpbGUsIGNvbnN0IGNoYXIgKmluZGVudCkgY29uc3QNCit7DQorICBpZiAo bGl2ZXMuZW1wdHkgKCkpDQorICAgIHsNCisgICAgICBmcHJpbnRmIChmaWxl LCAiJXNlbXB0eVxuIiwgaW5kZW50KTsNCisgICAgICByZXR1cm47DQorICAg IH0NCisgIGZwcmludGYgKGZpbGUsICIlcyIsIGluZGVudCk7DQorICBmb3Ig KGF1dG8gJmt2IDogbGl2ZXMpDQorICAgIHsNCisgICAgICBjb25zdF9zYml0 bWFwIHJhbmdlID0ga3Yuc2Vjb25kOw0KKyAgICAgIGlmIChiaXRtYXBfZW1w dHlfcCAocmFuZ2UpKQ0KKyBjb250aW51ZTsNCisgICAgICBmcHJpbnRmIChm aWxlLCAiJWQ6ICIsIGt2LmZpcnN0KTsNCisgICAgICBpZiAoIWJpdG1hcF9m dWxsX3AgKHJhbmdlKSkNCisgew0KKyAgIGR1bXBfYml0bWFwX2ZpbGUgKGZp bGUsIHJhbmdlKTsNCisgICBmcHJpbnRmIChmaWxlLCAiLCAgIik7DQorIH0N CisgICAgICBlbHNlDQorICAgICAgICBmcHJpbnRmIChmaWxlLCAiZnVsbCwg Iik7DQorICAgIH0NCisgIGZwcmludGYgKGZpbGUsICJcbiIpOw0KK30NCisN CitERUJVR19GVU5DVElPTiB2b2lkDQorZGVidWcgKGNvbnN0IHN1YnJlZ3Nf bGl2ZSAmbCkNCit7DQorICBsLmR1bXAgKHN0ZGVyciwgIiIpOw0KK30NCmRp ZmYgLS1naXQgYS9nY2Mvc3VicmVnLWxpdmUtcmFuZ2UuaCBiL2djYy9zdWJy ZWctbGl2ZS1yYW5nZS5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwMDAuLjRlYWZlMDA2OTM1DQotLS0gL2Rldi9udWxsDQorKysg Yi9nY2Mvc3VicmVnLWxpdmUtcmFuZ2UuaA0KQEAgLTAsMCArMSwyMDYgQEAN CisvKiBTVUJSRUcgbGl2ZW5lc3MgdHJhY2tpbmcgY2xhc3NlcyBmb3IgREYg JiBJUkEgJiBMUkEuDQorICAgQ29weXJpZ2h0IChDKSAyMDI0IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKyAgIENvbnRyaWJ1dGVkIGJ5IExl aHVhIERpbmcgKGxlaHVhLmRpbmdAcml2YWkuYWkpLCBSaVZBSSBUZWNobm9s b2dpZXMgTHRkLg0KKw0KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4N CisNCisgICBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdA0KKyAgIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5DQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQ0KKyAgIGFueSBs YXRlciB2ZXJzaW9uLg0KKw0KKyAgIEdDQyBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCisgICBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mDQorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgICBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorDQorICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UNCisgICBhbG9uZyB3aXRoIEdDQzsgc2Vl IHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQ0KKyAgIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovDQorDQorI2lmbmRlZiBHQ0Nf U1VCUkVHX0xJVkVfUkFOR0VfSA0KKyNkZWZpbmUgR0NDX1NVQlJFR19MSVZF X1JBTkdFX0gNCisNCisjaW5jbHVkZSAiY29uZmlnLmgiDQorI2luY2x1ZGUg InN5c3RlbS5oIg0KKyNpbmNsdWRlICJjb3JldHlwZXMuaCINCisjaW5jbHVk ZSA8dW5vcmRlcmVkX21hcD4NCisjaW5jbHVkZSAic2JpdG1hcC5oIg0KKw0K Ky8qIGNsYXNzIHN1YnJlZ3NfbGl2ZSByZWNvcmQgdGhlIGxpdmUgc3VicmVn X3JhbmdlcyBvZiByZWdpc3RlcnMuICAqLw0KK2NsYXNzIHN1YnJlZ3NfbGl2 ZQ0KK3sNCitwdWJsaWM6DQorICAvKiBUaGUga2V5IGlzIHVzdWFsbHkgdGhl IHJlZ2lzdGVyJ3MgcmVnbm8uICAqLw0KKyAgc3RkOjp1bm9yZGVyZWRfbWFw PHVuc2lnbmVkIGludCwgc2JpdG1hcD4gbGl2ZXM7DQorICANCisgIHN1YnJl Z3NfbGl2ZSAoKSA6IGxpdmVzICgpIHt9DQorDQorICBzdWJyZWdzX2xpdmUg KHNpemVfdCBuKSA6IGxpdmVzIChuKSB7fQ0KKw0KKyAgfnN1YnJlZ3NfbGl2 ZSAoKQ0KKyAgew0KKyAgICBmb3IgKGF1dG8gJmt2IDogbGl2ZXMpDQorICAg ICAgc2JpdG1hcF9mcmVlIChrdi5zZWNvbmQpOw0KKyAgfQ0KKw0KKyAgdm9p ZCBjbGVhciAoKQ0KKyAgew0KKyAgICBmb3IgKGF1dG8gJmt2IDogbGl2ZXMp DQorICAgICAgc2JpdG1hcF9mcmVlIChrdi5zZWNvbmQpOw0KKyAgICBsaXZl cy5jbGVhciAoKTsNCisgIH0NCisNCisgIHZvaWQgY2xlYXIgKHNpemVfdCBu KQ0KKyAgew0KKyAgICBjbGVhciAoKTsNCisgICAgbGl2ZXMucmVoYXNoIChu KTsNCisgIH0NCisNCisgIGJvb2wgZmluZF9wICh1bnNpZ25lZCBpbnQgcmVn bm8pIGNvbnN0DQorICB7DQorICAgIHJldHVybiBsaXZlcy5maW5kIChyZWdu bykgIT0gbGl2ZXMuZW5kICgpOw0KKyAgfQ0KKw0KKyAgc2JpdG1hcCBnZXRf cmFuZ2UgKHVuc2lnbmVkIGludCByZWdubykNCisgIHsNCisgICAgZ2NjX2Fz c2VydCAoZmluZF9wIChyZWdubykpOw0KKyAgICByZXR1cm4gbGl2ZXMuYXQg KHJlZ25vKTsNCisgIH0NCisNCisgIGNvbnN0X3NiaXRtYXAgZ2V0X3Jhbmdl ICh1bnNpZ25lZCBpbnQgcmVnbm8pIGNvbnN0DQorICB7DQorICAgIGdjY19h c3NlcnQgKGZpbmRfcCAocmVnbm8pKTsNCisgICAgcmV0dXJuIGxpdmVzLmF0 IChyZWdubyk7DQorICB9DQorDQorICAvKiBBZGRlZCBSQU5HRSB0byByZWdu bydzIHJhbmdlcy4gUmV0dXJuIHRydWUgaWYgbGVhZHMgdG8gYSBjaGFuZ2Uu ICAqLw0KKyAgYm9vbCBhZGRfcmFuZ2UgKHVuc2lnbmVkIGludCByZWdubywg Y29uc3Rfc2JpdG1hcCByYW5nZSkNCisgIHsNCisgICAgaWYgKGZpbmRfcCAo cmVnbm8pKQ0KKyAgICAgIHsNCisgc2JpdG1hcCBjdXJyID0gZ2V0X3Jhbmdl IChyZWdubyk7DQorIGdjY19hc3NlcnQgKHJhbmdlLT5uX2JpdHMgPT0gY3Vy ci0+bl9iaXRzKTsNCisgcmV0dXJuIGJpdG1hcF9pb3IgKGN1cnIsIGN1cnIs IHJhbmdlKTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorIHNi aXRtYXAgYSA9IHNiaXRtYXBfYWxsb2MgKHJhbmdlLT5uX2JpdHMpOw0KKyBs aXZlcy5pbnNlcnQgKHtyZWdubywgYX0pOw0KKyBzYml0bWFwIGN1cnIgPSBn ZXRfcmFuZ2UgKHJlZ25vKTsNCisgYml0bWFwX2NvcHkgKGN1cnIsIHJhbmdl KTsNCisgcmV0dXJuICFiaXRtYXBfZW1wdHlfcCAocmFuZ2UpOw0KKyAgICAg IH0NCisgIH0NCisgIC8qIFJlbW92ZWQgUkFOR0UgZnJvbSByZWdubydzIHJh bmdlcy4gUmV0dXJuIHRydWUgaWYgbGVhZHMgdG8gYSBjaGFuZ2UuICAqLw0K KyAgYm9vbCByZW1vdmVfcmFuZ2UgKHVuc2lnbmVkIGludCByZWdubywgY29u c3Rfc2JpdG1hcCByYW5nZSkNCisgIHsNCisgICAgaWYgKGZpbmRfcCAocmVn bm8pKQ0KKyAgICAgIHsNCisgc2JpdG1hcCBjdXJyID0gZ2V0X3JhbmdlIChy ZWdubyk7DQorIGJpdG1hcF9jaGVja19zaXplcyAoY3VyciwgcmFuZ2UpOw0K KyBpZiAoYml0bWFwX3N1YnNldF9wIChjdXJyLCByYW5nZSkpDQorICAgcmV0 dXJuIHJlbW92ZV9yYW5nZSAocmVnbm8pOw0KKw0KKyBhdXRvX3NiaXRtYXAg YSAocmFuZ2UtPm5fYml0cyk7DQorIGJpdG1hcF9ub3QgKGEsIHJhbmdlKTsN CisgcmV0dXJuIGJpdG1hcF9hbmQgKGN1cnIsIGN1cnIsIGEpOw0KKyAgICAg IH0NCisgICAgcmV0dXJuIGZhbHNlOw0KKyAgfQ0KKyAgLyogUmVtb3ZlZCB0 aGUgd2hvbGUgcmFuZ2Ugb2YgUkVHTk8uIFJldHVybiB0cnVlIGlmIGxlYWRz IHRvIGEgY2hhbmdlLiAgKi8NCisgIGJvb2wgcmVtb3ZlX3JhbmdlICh1bnNp Z25lZCBpbnQgcmVnbm8pDQorICB7DQorICAgIGlmIChmaW5kX3AgKHJlZ25v KSkNCisgICAgICB7DQorIHNiaXRtYXAgY3VyciA9IGdldF9yYW5nZSAocmVn bm8pOw0KKyBib29sIGNoYW5nZWQgPSAhYml0bWFwX2VtcHR5X3AgKGN1cnIp Ow0KKyBzYml0bWFwX2ZyZWUgKGN1cnIpOw0KKyBsaXZlcy5lcmFzZSAocmVn bm8pOw0KKyByZXR1cm4gY2hhbmdlZDsNCisgICAgICB9DQorICAgIHJldHVy biBmYWxzZTsNCisgIH0NCisgIC8qIFJlcGxhY2UgdGhlIHJhbmdlIG9mIFJF R05PIHdpdGggUkFOR0UuICBSZXR1cm4gdHJ1ZSBpZiBsZWFkcyB0byBhIGNo YW5nZS4NCisgICAqLw0KKyAgYm9vbCByZXBsYWNlX3JhbmdlICh1bnNpZ25l ZCBpbnQgcmVnbm8sIGNvbnN0X3NiaXRtYXAgcmFuZ2UpDQorICB7DQorICAg IGlmIChmaW5kX3AgKHJlZ25vKSkNCisgICAgICB7DQorIHNiaXRtYXAgY3Vy ciA9IGdldF9yYW5nZSAocmVnbm8pOw0KKyBpZiAoIWJpdG1hcF9zYW1lX3Ag KGN1cnIsIHJhbmdlKSkNCisgICB7DQorICAgICBiaXRtYXBfY29weSAoY3Vy ciwgcmFuZ2UpOw0KKyAgICAgcmV0dXJuIHRydWU7DQorICAgfQ0KKyBlbHNl DQorICAgcmV0dXJuIGZhbHNlOw0KKyAgICAgIH0NCisgICAgZWxzZQ0KKyAg ICAgIHJldHVybiBhZGRfcmFuZ2UgKHJlZ25vLCByYW5nZSk7DQorICB9DQor ICAvKiBDb3B5IHN1YnJlZ3NfbGl2ZSBTTC4gUmV0dXJuIHRydWUgaWYgbGVh ZHMgdG8gYSBjaGFuZ2UuICAqLw0KKyAgYm9vbCBjb3B5X2xpdmVzIChjb25z dCBzdWJyZWdzX2xpdmUgJnNsKQ0KKyAgew0KKyAgICBib29sIGNoYW5nZWQg PSBmYWxzZTsNCisgICAgZm9yIChhdXRvICZrdiA6IHNsLmxpdmVzKQ0KKyAg ICAgIHsNCisgdW5zaWduZWQgaW50IHJlZ25vID0ga3YuZmlyc3Q7DQorIGNv bnN0X3NiaXRtYXAgcmFuZ2UgPSBrdi5zZWNvbmQ7DQorIGlmIChiaXRtYXBf ZW1wdHlfcCAocmFuZ2UpKQ0KKyAgIGNvbnRpbnVlOw0KKyBpZiAoZmluZF9w IChyZWdubykpDQorICAgY2hhbmdlZCB8PSByZXBsYWNlX3JhbmdlIChyZWdu bywgcmFuZ2UpOw0KKyBlbHNlDQorICAgY2hhbmdlZCB8PSBhZGRfcmFuZ2Ug KHJlZ25vLCByYW5nZSk7DQorICAgICAgfQ0KKw0KKyAgICBmb3IgKGF1dG8g aXQgPSBsaXZlcy5jYmVnaW4gKCk7IGl0ICE9IGxpdmVzLmNlbmQgKCk7KQ0K KyAgICAgIHsNCisgdW5zaWduZWQgaW50IHJlZ25vID0gaXQtPmZpcnN0Ow0K KyBhdXRvIHByZXZfaXQgPSBpdDsNCisgaXQrKzsNCisgaWYgKHNsLmVtcHR5 X3AgKHJlZ25vKSkNCisgICB7DQorICAgICBjaGFuZ2VkIHw9IGJpdG1hcF9l bXB0eV9wIChpdC0+c2Vjb25kKTsNCisgICAgIGxpdmVzLmVyYXNlIChwcmV2 X2l0KTsNCisgICB9DQorICAgICAgfQ0KKw0KKyAgICByZXR1cm4gY2hhbmdl ZDsNCisgIH0NCisgIC8qIEFkZGVkIHN1YnJlZ3NfbGl2ZSBTTC4gUmV0dXJu IHRydWUgaWYgbGVhZHMgdG8gYSBjaGFuZ2UuICAqLw0KKyAgYm9vbCBhZGRf bGl2ZXMgKGNvbnN0IHN1YnJlZ3NfbGl2ZSAmc2wpDQorICB7DQorICAgIGJv b2wgY2hhbmdlZCA9IGZhbHNlOw0KKyAgICBmb3IgKGF1dG8gJmt2IDogc2wu bGl2ZXMpDQorICAgICAgew0KKyB1bnNpZ25lZCBpbnQgcmVnbm8gPSBrdi5m aXJzdDsNCisgY29uc3Rfc2JpdG1hcCByYW5nZSA9IGt2LnNlY29uZDsNCisg aWYgKGZpbmRfcCAocmVnbm8pKQ0KKyAgIHsNCisgICAgIHNiaXRtYXAgY3Vy ciA9IGdldF9yYW5nZSAocmVnbm8pOw0KKyAgICAgY2hhbmdlZCB8PSBiaXRt YXBfaW9yIChjdXJyLCBjdXJyLCByYW5nZSk7DQorICAgfQ0KKyBlbHNlDQor ICAgY2hhbmdlZCB8PSBhZGRfcmFuZ2UgKHJlZ25vLCByYW5nZSk7DQorICAg ICAgfQ0KKyAgICByZXR1cm4gY2hhbmdlZDsNCisgIH0NCisNCisgIC8qIFJl dHVybiB0cnVlIGlmIHJlZ25vJ3MgbGl2ZSByYW5nZSBpcyBmdWxsLiAgKi8N CisgIGJvb2wgZnVsbF9wICh1bnNpZ25lZCBpbnQgcmVnbm8pIGNvbnN0DQor ICB7DQorICAgIHJldHVybiBmaW5kX3AgKHJlZ25vKSAmJiBiaXRtYXBfZnVs bF9wIChnZXRfcmFuZ2UgKHJlZ25vKSk7DQorICB9DQorICAvKiBSZXR1cm4g dHJ1ZSBpZiByZWdubydzIGxpdmUgcmFuZ2UgaXMgZW1wdHkuICAqLw0KKyAg Ym9vbCBlbXB0eV9wICh1bnNpZ25lZCBpbnQgcmVnbm8pIGNvbnN0DQorICB7 DQorICAgIHJldHVybiAhZmluZF9wIChyZWdubykgfHwgYml0bWFwX2VtcHR5 X3AgKGdldF9yYW5nZSAocmVnbm8pKTsNCisgIH0NCisNCisgIC8qIERlYnVn IGhlbHBlci4gICovDQorICB2b2lkIGR1bXAgKEZJTEUgKmZpbGUsIGNvbnN0 IGNoYXIgKmluZGVudCA9ICI7OyAgICAgIikgY29uc3Q7DQorfTsNCisNCisj ZW5kaWYgLyogR0NDX1NVQlJFR19MSVZFX1JBTkdFX0ggKi8NCmRpZmYgLS1n aXQgYS9nY2MvdGltZXZhci5kZWYgYi9nY2MvdGltZXZhci5kZWYNCmluZGV4 IDhlMjE2OGUwODE3Li4zMzdhMmI3MjI1YiAxMDA2NDQNCi0tLSBhL2djYy90 aW1ldmFyLmRlZg0KKysrIGIvZ2NjL3RpbWV2YXIuZGVmDQpAQCAtMTIwLDYg KzEyMCw3IEBAIERFRlRJTUVWQVIgKFRWX0RGX1NDQU4gICAgICAsICJkZiBz Y2FuIGluc25zIikNCkRFRlRJTUVWQVIgKFRWX0RGX01EICAgICAgLCAiZGYg bXVsdGlwbGUgZGVmcyIpDQpERUZUSU1FVkFSIChUVl9ERl9SRCAgICAgICwg ImRmIHJlYWNoaW5nIGRlZnMiKQ0KREVGVElNRVZBUiAoVFZfREZfTFIgICAg ICAsICJkZiBsaXZlIHJlZ3MiKQ0KK0RFRlRJTUVWQVIgKFRWX0RGX0xJVkVf U1VCUkVHICAgICAgLCAiZGYgbGl2ZSBzdWJyZWdzIikNCkRFRlRJTUVWQVIg KFRWX0RGX0xJVkUgICAgICAsICJkZiBsaXZlJmluaXRpYWxpemVkIHJlZ3Mi KQ0KREVGVElNRVZBUiAoVFZfREZfTUlSICAgICAgLCAiZGYgbXVzdC1pbml0 aWFsaXplZCByZWdzIikNCkRFRlRJTUVWQVIgKFRWX0RGX0NIQUlOICAgICAg LCAiZGYgdXNlLWRlZiAvIGRlZi11c2UgY2hhaW5zIikNCi0tIA0KMi4zNi4x DQogDQo= ------=_001_NextPart686272376722_=------