From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=46.101.248.176 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794316676; b=VK0szVc1pIuHnyTkO56aZOLM255Wxw8JWEwBGpMKYd9I3rcvUEQnVMiaO/dthGxb2daT UG6YRIAg0N2PMp3v1F19z1d1gE+KohwLKAlbNu0s5eUzKKIVNHXgtc0aVju79Z9//3Br7 IJ4G60GYr4IF9GU3LdNoY6Nd+eM/TT17Id9c0pPYByiYwECzVKxMsOLKJFbCNVB/Yuff8 MrHHS3DOMyaYZsFVjt0Z6vxPQHQw8mNHH6cfizRg8dtrmlpqaqiEGTNfbAgun6IHJ+Ko7 2WYEAGRIfHYA9fxIbh902oH9GZW98P+3UABI0zKCWvSKcdIR37/i/SScIEiL/Ab/ZOQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794316676; h=DMARC-Filter:Received:X-Originating-IP:Date:X-CM-HeaderCharset:From: To:Cc:Subject:X-Priority:X-Mailer:In-Reply-To:References: X-CM-CTRLMSGS:Content-Type:MIME-Version:Message-ID:X-Coremail-Locale: X-CM-TRANSID:X-CM-SenderInfo:X-Coremail-Antispam; bh=cee9/14/WVG0EFLI9wTQujLun1+WayJwRbzxzmu4ejw=; b=pvfRbtYb4gTc3IzF0LB9t6yhz+EfRDPGtxTmVyZ7gaTH1p8/lZbvzd0T1uVyXb4KtBH6 JPdGyEXVuReaWbrkC1oF+AQvanOYY8HLtW3fuYM8KH63V+Qvp7+5bT/5o9+WAC2oZVF6P fi6uUeOvH9A5UjSqIc3vm5S+rfJivnTWfi4v65v7/57tAzQbG3zuzuPS978+rPMCTAiju OqUmYCbcOp/zLjWE5S8aFG3AOG3++/gvBvCa2BM5wrmBSZW+GI8hax3akUVOQRAz2JaCL L/G02M2eFq5kt8145JFU9kqyem/ZZ3afdi2kaNbN3Zz8vlTGAGLsKYbesxTMIRIEklA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none header.from=hust.edu.cn; spf=pass smtp.mailfrom=hust.edu.cn; arc=none smtp.remote-ip=46.101.248.176 Received: from zg8tndyumtaxlji0oc4xnzya.icoremail.net (zg8tndyumtaxlji0oc4xnzya.icoremail.net [46.101.248.176]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7D57A606B6D7; Tue, 10 Nov 2026 13:17:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 7D57A606B6D7 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=hust.edu.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hust.edu.cn Received: from xuhx$hust.edu.cn ( [10.12.190.107] ) by ajax-webmail-app2 (Coremail) ; Tue, 10 Nov 2026 21:17:41 +0800 (GMT+08:00) Date: Tue, 10 Nov 2026 21:17:41 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: =?UTF-8?B?5b6Q5pmX57+U?= To: sre@kernel.org Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: power: supply: core: get/set property callbacks can run after unregister and read freed driver data X-Priority: 3 X-Mailer: Coremail Webmail Server Version 2025.3-cmXT6 build 20260810(6c94e3b5) Copyright (c) 2002-2026 www.mailtech.cn hust In-Reply-To: <2026102727-data-sequel-ce41@gregkh> References: <4c7f9772.192e1.1a17d5c2ed5.Coremail.xuhx@hust.edu.cn> <2026102727-data-sequel-ce41@gregkh> X-CM-CTRLMSGS: =?B?2JJkSziH6nJ5xwDR7hwMki1N8jM= Content-Type: multipart/mixed; boundary="----=_Part_474710_1893258226.1794316661871" X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Message-ID: <209456dc.22b15.1a1c59b746f.Coremail.xuhx@hust.edu.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID:IQEQrMC23sZ1GfNqNp0NAA--.9873W X-CM-SenderInfo: bgsqjkayqyjmo6kx23oohg3hdfq/1tbiAgoHB2rx8m6TTgAAsS X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWkKw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= ------=_Part_474710_1893258226.1794316661871 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 cG93ZXJfc3VwcGx5X2dldF9wcm9wZXJ0eSgpIGFuZCBwb3dlcl9zdXBwbHlfc2V0X3Byb3BlcnR5 KCkgY2FuIGludm9rZSBhCmRyaXZlcidzIC0+Z2V0X3Byb3BlcnR5KCkvLT5zZXRfcHJvcGVydHko KSBjYWxsYmFjayBhZnRlcgpwb3dlcl9zdXBwbHlfdW5yZWdpc3RlcigpIGhhcyBzZXQgcHN5LT5y ZW1vdmluZyBhbmQgYWZ0ZXIgdGhlIGRyaXZlcidzCnByaXZhdGUgZGF0YSBoYXMgYmVlbiBmcmVl ZC4gIFRoZSB3cmFwcGVycyB0YWtlIG5laXRoZXIgcHN5LT5lcGNfc2VtIG5vcgpjaGVjayBwc3kt PnJlbW92aW5nOyB0aGVpciBvbmx5IGNoZWNrIGlzIGEgY2hlY2stdGhlbi1hY3Qgb24KcHN5LT51 c2VfY250LCB3aGljaCBwcm90ZWN0cyB0aGUgc3RydWN0IHBvd2VyX3N1cHBseSBkZXZpY2UgcmVm ZXJlbmNlIGJ1dApub3QgZGV2bS1hbGxvY2F0ZWQgZHJpdmVyIGRhdGEuICBBIGNvbnN1bWVyIHRo YXQgb2J0YWluZWQgdGhlIHBzeSBiZWZvcmUKdW5yZWdpc3RlciBjYW4gdGhlcmVmb3JlIHJlYWQg ZnJlZWQgZHJ2X2RhdGEuICBJIHJlcHJvZHVjZWQgdGhlCnJlc3VsdGluZyBLQVNBTiBzbGFiLXVz ZS1hZnRlci1mcmVlIG9uIGFuIHVubW9kaWZpZWQgNy4zIGtlcm5lbCB3aXRoIGEKbWluaW1hbCBv dXQtb2YtdHJlZSBjb25zdW1lcjsgdGNwbSwgc3VuNGktdXNiLCBicTI1ODkwIGFuZApzYzI3eHgt ZnVlbC1nYXVnZSBjb250YWluIGluLXRyZWUgY29uc3VtZXJzIHdpdGggdGhlIHNhbWUgcGF0dGVy bi4KClRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbjoKCiogVGVzdCBlbnZpcm9ubWVudCAvIGFmZmVj dGVkIHZlcnNpb24KCiAgTGludXggNy4zLjAgKHVubW9kaWZpZWQga2VybmVsLm9yZyA3LjMgc291 cmNlIHRyZWUpLCBnY2MgMTMuMy4wLAogIHg4Nl82NCwgU01QIFBSRUVNUFRfRFlOQU1JQywgS0FT QU4gKGdlbmVyaWMvb3V0bGluZS9zdGFjay92bWFsbG9jKSwKICBRRU1VL0tWTS4gIENPTkZJR19Q T1dFUl9TVVBQTFk9eSwgQ09ORklHX1BPV0VSX1NVUFBMWV9IV01PTj15LAogIENPTkZJR19MRURT X1RSSUdHRVJTPXksIENPTkZJR19NT0RVTEVTPXkuICBUaGUga2VybmVsIHdhcyBidWlsdCBmcm9t CiAgdGhlIHNhbWUgYnVpbGQgdHJlZSB1c2VkIGZvciB0aGUgc3VwcGxpZWQgbW9kdWxlOyBubyBz b3VyY2UgY2hhbmdlcy4KCiAgVGhlIHVwc3RyZWFtIGZpeCA5ZjdmN2E4NTk0NTEgKCJwb3dlcl9z dXBwbHk6IHNlcmlhbGl6ZSBwcm9wZXJ0eQogIGFjY2VzcyB3aXRoIHVucmVnaXN0ZXIiKSBhZGRz IHRoZSBtaXNzaW5nIGd1YXJkIHRvIHRoZXNlIHR3byB3cmFwcGVycwogIG9uIG1haW5saW5lLiAg VGhlIDcuMyB0cmVlIEkgdGVzdGVkIGRvZXMgbm90IGNvbnRhaW4gaXQ7IHRoaXMgcmVwb3J0CiAg ZG9jdW1lbnRzIHRoZSA3LjMgZXhwb3N1cmUgYW5kIHJlcXVlc3RzIGEgYmFja3BvcnQuICBJIGhh dmUgbm90CiAgYXR0YWNoZWQgYSBuZXcgcGF0Y2guCgoqIE1lY2hhbmlzbQoKICBwb3dlcl9zdXBw bHlfZ2V0X3Byb3BlcnR5KCkgKHBvd2VyX3N1cHBseV9jb3JlLmM6MTQyMi0xNDI3KSBpczoKCiAg ICAgIHJldHVybiBfX3Bvd2VyX3N1cHBseV9nZXRfcHJvcGVydHkocHN5LCBwc3AsIHZhbCwgdHJ1 ZSk7CgogIGFuZCBwb3dlcl9zdXBwbHlfc2V0X3Byb3BlcnR5KCkgKDoxNDc5LTE0ODQpIGlzOgoK ICAgICAgcmV0dXJuIF9fcG93ZXJfc3VwcGx5X3NldF9wcm9wZXJ0eShwc3ksIHBzcCwgdmFsLCB0 cnVlKTsKCiAgTmVpdGhlciB3cmFwcGVyIHRha2VzIHBzeS0+ZXBjX3NlbSBvciB0ZXN0cyBwc3kt PnJlbW92aW5nLgogIF9fcG93ZXJfc3VwcGx5X2dldF9wcm9wZXJ0eSgpIGRvZXM6CgogICAgICBp ZiAoYXRvbWljX3JlYWQoJnBzeS0+dXNlX2NudCkgPD0gMCkgewogICAgICAgICAgaWYgKCFwc3kt PmluaXRpYWxpemVkKQogICAgICAgICAgICAgIHJldHVybiAtRUFHQUlOOwogICAgICAgICAgcmV0 dXJuIC1FTk9ERVY7CiAgICAgIH0KCiAgKDoxMzk3LTE0MDEpIGFuZCB0aGVuIGNhbGxzIHBzeS0+ ZGVzYy0+Z2V0X3Byb3BlcnR5KCkgKDoxNDE0LTE0MTUpOwogIHRoZSBzZXQgaGVscGVyIGhhcyB0 aGUgc2FtZSB1c2VfY250IHRlc3QgYXQgOjE0NTUgYW5kIGNhbGxzCiAgcHN5LT5kZXNjLT5zZXRf cHJvcGVydHkoKSBhdCA6MTQ3My0xNDc2LgoKICB1c2VfY250IGlzIG5vdCBhIGxpZmV0aW1lIGJh cnJpZXIgZm9yIHRoZSBkcml2ZXIncyBwcml2YXRlIGRhdGEuICBBCiAgY29uc3VtZXIgZ2V0cyBh IGRldmljZSByZWZlcmVuY2UgYW5kIGluY3JlbWVudHMgdXNlX2NudCBpbgogIHBvd2VyX3N1cHBs eV9nZXRfYnlfbmFtZSgpICg6NDY1LTQ3OCkgb3IKICBwb3dlcl9zdXBwbHlfZ2V0X2J5X3JlZmVy ZW5jZSgpICg6NjY0LTY4Nyk7IHVucmVnaXN0ZXIgZHJvcHMgdGhlCiAgcmVnaXN0cmF0aW9uJ3Mg b3duIHJlZmVyZW5jZSBhdCA6MTkzMCwgYnV0IHRoZSBjb25zdW1lcidzIHJlZmVyZW5jZQogIGtl ZXBzIHRoZSBzdHJ1Y3QgcG93ZXJfc3VwcGx5IGFuZCB1c2VfY250IGFsaXZlLiAgVGhlIGRyaXZl cidzCiAgZHJ2X2RhdGEgaXMgbm9ybWFsbHkgZGV2bV9remFsbG9jJ2VkIG9uIHRoZSBwYXJlbnQg ZGV2aWNlIGFuZCBpcyBmcmVlZAogIHdoZW4gdGhlIHBhcmVudCdzIHJlbW92ZSBwYXRoIGZpbmlz aGVzLCBpbmRlcGVuZGVudGx5IG9mIHRoZSBzdHJ1Y3QKICBwb3dlcl9zdXBwbHkuICB1bnJlZ2lz dGVyIGRvZXMgc2V0IHJlbW92aW5nIHVuZGVyIGVwY19zZW0gd3JpdGUKICAoOjE5MzktMTk0MCks IGNhbmNlbHMgd29yayAoOjE5NDItMTk0MykgYW5kIGRldmljZV91bnJlZ2lzdGVycwogICg6MTk0 OSksIGJ1dCBub25lIG9mIHRoYXQgaXMgb2JzZXJ2ZWQgYnkgdGhlIGdldC9zZXQgd3JhcHBlcnMu CgogIFRoZSBpbnRlcmxlYXZpbmc6CgogICAgQTogY29uc3VtZXIgY2FsbHMgZ2V0X3Byb3BlcnR5 KCk7IF9fLi4uIHJlYWRzIHVzZV9jbnQgPT0gMSBhbmQKICAgICAgIHBhc3NlcyB0aGUgdGVzdC4K ICAgIEI6IHN1cHBsaWVyJ3MgcmVtb3ZlIHBhdGggY2FsbHMgcG93ZXJfc3VwcGx5X3VucmVnaXN0 ZXIoKTsgaXQgc2V0cwogICAgICAgcmVtb3ZpbmcsIGNhbmNlbHMgd29yaywgZGV2aWNlX3VucmVn aXN0ZXJzLCBhbmQgdGhlIHBhcmVudAogICAgICAgcmVtb3ZlIGZyZWVzIGRydl9kYXRhIChvciBk ZXZyZXMgcmVsZWFzZXMgaXQpLgogICAgQzogY29uc3VtZXIgZW50ZXJzIGRlc2MtPmdldF9wcm9w ZXJ0eSgpIGFuZCBkZXJlZmVyZW5jZXMgZHJ2X2RhdGEuCgogIEEgc2Vjb25kIHZhcmlhbnQgdXNl cyBwc3ktPmJhdHRlcnlfaW5mbzogaXQgaXMgZGV2bV9remFsbG9jJ2VkIG9uCiAgcHN5LT5kZXYg KDo3NjgpLCBpbnN0YWxsZWQgYXQgOjE3ODMtMTc4NywgYW5kIHJlbGVhc2VkIGJ5CiAgZGV2cmVz X3JlbGVhc2VfYWxsKCkgZnJvbSBkZXZpY2VfZGVsKCkgKGRyaXZlcnMvYmFzZS9jb3JlLmM6Mzk4 MCkKICBiZWZvcmUga29iamVjdF9kZWwoKS4gIEEgY29uc3VtZXIgdGhhdCBhbHJlYWR5IGhvbGRz IHRoZSBwc3kgY2FuIHJlYWNoCiAgdGhlIGJhdHRlcnlfaW5mbyBmYWxsYmFjayBhdCA6MTQxNi0x NDE3IGFmdGVyIHRoYXQgcmVsZWFzZTsgdGNwbSdzCiAgQ0hBUkdFX0ZVTExfREVTSUdOL0NIQVJH RV9GVUxMIHJlYWRzICh0Y3BtLmM6MTY4MS0xNjk3KSBhcmUgYQogIGNvbmNyZXRlIGNhbGxlci4g IFRoaXMgaXMgc3RpbGwgdGhlIHNhbWUgd3JhcHBlci9saWZldGltZSBidWcsIG5vdCBhCiAgc2Vw YXJhdGUgZXhwbGljaXQgcG93ZXJfc3VwcGx5X3B1dF9iYXR0ZXJ5X2luZm8oKSByYWNlLgoKICBz eXNmcyBpcyBub3QgYW4gaW5kZXBlbmRlbnQgdHJpZ2dlciBoZXJlOiBkZXZpY2VfcmVtb3ZlX2F0 dHJzKCkKICAoZHJpdmVycy9iYXNlL2NvcmUuYzozOTY0KSBkcmFpbnMgdGhlIGF0dHJpYnV0ZSBm aWxlcyBiZWZvcmUKICBkZXZyZXNfcmVsZWFzZV9hbGwoKSBhdCA6Mzk4MC4gIFRoZSByZWFjaGFi bGUgcGF0aCBpcyBhIGNyb3NzLWRldmljZQogIGNhbGxlciB0aGF0IGFscmVhZHkgY2FjaGVkIHRo ZSBwc3kuCgoqIENvbmNyZXRlIGNvcnJ1cHRpb24gLyBpbXBhY3QKCiAgS0FTQU4gcmVwb3J0cyBh IHNsYWItdXNlLWFmdGVyLWZyZWUgcmVhZCBpbiB0aGUgZHJpdmVyJ3MKICAtPmdldF9wcm9wZXJ0 eSgpIGNhbGxiYWNrLCBlLmcuIHBzX2dldF9wcm9wZXJ0eSsweDdjLzB4MTEwLCBSZWFkIG9mCiAg c2l6ZSA0IGF0IGZmMTEwMDAwMDM3MjFhODA7IHRoZSBhbGxvYyBhbmQgZnJlZSBzdGFja3MgYXJl IGJvdGggaW4gdGhlCiAgdGVzdCBjb25zdW1lci9kcml2ZXIgcGF0aC4gIFdpdGggYSBmcmVlZCBv YmplY3QgcmVhbGxvY2F0ZWQsIHRoZQogIGNhbGxiYWNrIGNhbiByZXR1cm4gc3RhbGUgb3IgcmV1 c2VkIG1lbW9yeSBhcyBhIHByb3BlcnR5IHZhbHVlOyB3aXRoCiAgcG9pc29uZWQgbWVtb3J5IGl0 IGNhbiBjcmFzaC4gIHVucmVnaXN0ZXIgYWxzbyBoaXRzCiAgV0FSTl9PTihhdG9taWNfZGVjX3Jl dHVybigmcHN5LT51c2VfY250KSkgYXQgOjE5MzAgYmVjYXVzZSB0aGUKICBjb25zdW1lcidzIHJl ZmVyZW5jZSBpcyBzdGlsbCBoZWxkOyB3aXRoIHBhbmljX29uX3dhcm4gdGhpcyBpcyBhCiAgbG9j YWwgRG9TLiAgSSBoYXZlIG5vdCBkZW1vbnN0cmF0ZWQgcHJpdmlsZWdlIGVzY2FsYXRpb24uCgoq IFRyaWdnZXIgbW9kZWwKCiAgQSBjb25zdW1lciBkcml2ZXIgbXVzdCBjYWNoZSB0aGUgc3VwcGxp ZXIgcHN5IGFjcm9zcyB0aGUgc3VwcGxpZXIncwogIHVuYmluZC9yZW1vdmUuICBJbi10cmVlIGV4 YW1wbGVzOgoKICAgIC0gdGNwbSBjYWNoZXMgdGhlIHN5c3RlbSBiYXR0ZXJpZXMgaW4gcG9ydC0+ Zml4ZWRfYmF0dAogICAgICAodGNwbS5jOjE1MDMtMTUxNSksIHVzZXMgdGhlbSBmb3IgUEQgYmF0 dGVyeSBzdGF0dXMvY2FwYWNpdHkKICAgICAgKDoxNjA3LTE2MzgsIDoxNjgxLTE2OTcpLCBhbmQg b25seSBwdXRzIHRoZW0gaW4KICAgICAgdGNwbV91bnJlZ2lzdGVyX3BvcnQoKSAoOjg5ODgpLgog ICAgLSBzdW40aS11c2IgY2FjaGVzIHRoZSB2YnVzIHN1cHBseSAocGh5LXN1bjRpLXVzYi5jOjc1 NykgYW5kIHJlYWRzCiAgICAgIFBSRVNFTlQgZnJvbSBhIHBvbGxpbmcgd29yayAoOjQyNywgOjU5 NikuCiAgICAtIGJxMjU4OTAgY2FjaGVzIGEgc2Vjb25kYXJ5IGNoYXJnZXIgKGJxMjU4OTBfY2hh cmdlci5jOjE0MDkpIGFuZAogICAgICBjYWxscyBzZXRfcHJvcGVydHkoT05MSU5FKSBmcm9tIGl0 cyBwdW1wIHdvcmsgKDoxMDY2LTEwNjgsCiAgICAgIDoxMTAyLTExMDQpLgogICAgLSBzYzI3eHgt ZnVlbC1nYXVnZSBoYXMgYSBzaG9ydCBnZXRfYnlfbmFtZSgpL2dldF9wcm9wZXJ0eSgpIHdpbmRv dwogICAgICAoc2MyN3h4X2Z1ZWxfZ2F1Z2UuYzo1NTYtNTY2KS4KCiAgVGhlIHRyaWdnZXIgaXMg YSBzdXBwbGllciB1bmJpbmQsIGZhaWxlZCBwcm9iZS9yZW1vdmUsIG9yIG1vZHVsZQogIHVubG9h ZCB3aGlsZSB0aGUgY29uc3VtZXIgc3RheXMgYWxpdmU7IGZvciB0Y3BtIGEgUEQgcGVlciBjYW4g cmVxdWVzdAogIGJhdHRlcnkgc3RhdHVzLiAgVGhlIHRlc3QgbW9kdWxlIGlzIGxvYWRlZCBieSBy b290LCBidXQgdGhlIHJlYWwgcGF0aHMKICBhcmUgaGFyZHdhcmUvcmVtb3ZlIGRyaXZlbiwgbm90 IGEgZ2VuZXJpYyB1bnByaXZpbGVnZWQgdXNlcnNwYWNlCiAgaW50ZXJmYWNlLiAgTm8gc3BlY2lh bCBoYXJkd2FyZSBpcyByZXF1aXJlZCBmb3IgdGhlIGNvcmUgcmVwcm9kdWN0aW9uCiAgYmV5b25k IHRoZSBtb2R1bGUuCgoqIFJlcHJvZHVjZXIgLyByZXN1bHRzCgogIE91dC1vZi10cmVlIG1vZHVs ZSBwc3JhY2UuYyAoYXR0YWNoZWQsIHRleHQvcGxhaW4pLCBidWlsdCB3aXRoOgoKICAgICAgbWFr ZSAtQyA8YnVpbGQta2FzYW4tNy4zPiBDQz1jbGFuZyBNPSRQV0QgbW9kdWxlcwoKICBhbmQgcnVu IHVuZGVyIHRoZSBzdXBwbGllZCBRRU1VIGltYWdlIHdpdGggcGxhbj1wczMuICBUaGUgbW9kdWxl CiAgcmVnaXN0ZXJzIGEgdGVzdCBwc3ksIGhhcyBpdHMgZ2V0X3Byb3BlcnR5KCkgc2lnbmFsIGVu dHJ5LCBzbGVlcCwgYW5kCiAgcmVhZCBkcnZfZGF0YTsgYSBjb25zdW1lciB0aHJlYWQgY2FsbHMg Z2V0X2J5X25hbWUoKSB0aGVuCiAgZ2V0X3Byb3BlcnR5KCk7IHRoZSBpbml0IHRocmVhZCB1bnJl Z2lzdGVycyBhbmQga2ZyZWUoKXMgZHJ2X2RhdGEuCgogIE9ic2VydmVkIG9uIDcuMzoKCiAgICAg IEJVRzogS0FTQU46IHNsYWItdXNlLWFmdGVyLWZyZWUgaW4gcHNfZ2V0X3Byb3BlcnR5KzB4N2Mv MHgxMTAKICAgICAgUmVhZCBvZiBzaXplIDQgYXQgYWRkciBmZjExMDAwMDAzNzIxYTgwCiAgICAg IC4uLgogICAgICBXQVJOSU5HOiAuLi4gcG93ZXJfc3VwcGx5X2NvcmUuYzoxOTMwIC4uLgoKICBB IGNvbnRyb2wgcnVuIChzYW1lIG1vZHVsZSwgY29udHJvbD0xKSB3YWl0cyBmb3IgdGhlIGNhbGxi YWNrIHRvCiAgZmluaXNoIGJlZm9yZSB1bnJlZ2lzdGVyL2ZyZWUgYW5kIHJlcG9ydHMgbm8gS0FT QU4uICBGdWxsIGxvZ3MgYXJlCiAgYXZhaWxhYmxlIG9uIHJlcXVlc3QuCgoKKiBTdWdnZXN0ZWQg ZGlyZWN0aW9uCgogIEFwcGx5IHRoZSA5ZjdmN2E4NTk0NTEgZ3VhcmQgdG8gYm90aCB3cmFwcGVy czoKCiAgICAgIGd1YXJkKHJ3c2VtX3JlYWQpKCZwc3ktPmVwY19zZW0pOwogICAgICBpZiAocHN5 LT5yZW1vdmluZykKICAgICAgICAgIHJldHVybiAtRU5PREVWOwoKICBhbmQga2VlcCB0aGUgX2Rp cmVjdCB2YXJpYW50cyBsb2NrbGVzcyBmb3IgZXh0ZW5zaW9uIGNhbGxiYWNrcy4gIEEKICBzdGFi bGUgYmFja3BvcnQgdG8gNy4zIGlzIHRoZSBpbW1lZGlhdGUgcmVxdWVzdC4gIEkgaGF2ZSBub3Qg YXR0YWNoZWQKICBhIHBhdGNoOyBoYXBweSB0byB0ZXN0IG9uZS4KCiAgUGxlYXNlIGtlZXAgbWUg aW4gQ2M7IEkgYW0gbm90IHN1YnNjcmliZWQgdG8gdGhlIGxpc3RzLgoKClJlZ2FyZHMsCkhhbnhp YW5nIFh1Cnh1aHhAaHVzdC5lZHUuY24K ------=_Part_474710_1893258226.1794316661871 Content-Type: text/plain; name=psrace.c Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="psrace.c" Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLyoKICogcHNyYWNlLmMgLSBtaW5p bWFsIHBvd2VyX3N1cHBseSBsaWZldGltZS1yYWNlIHJlcHJvZHVjZXJzIGZvciB0aGUKICogdjcu MyBhdWRpdCByZXBvcnQgZG9jcy9tYW51YWwtcmV2aWV3LWRyaXZlcnMtcG93ZXItMjAyNi0xMS0z Lm1kLgogKgogKiBhY3Rpb249MyA6IENhc2UgMywgZ2V0X3Byb3BlcnR5KCkgYWZ0ZXIgcG93ZXJf c3VwcGx5X3VucmVnaXN0ZXIoKS9rZnJlZShkcnZkYXRhKQogKiBhY3Rpb249NCA6IENhc2UgNCwg Z2V0X3N5c3RlbV9iYXR0ZXJpZXMoKSByZXN1cnJlY3RzIGFuIHVucmVnaXN0ZXJlZCBiYXR0ZXJ5 CiAqIGFjdGlvbj01IDogQ2FzZSA1QiwgcG93ZXJfc3VwcGx5X2NoYW5nZWQoKSBhZnRlciB1bnJl Z2lzdGVyIGZyZWVzIExFRCB0cmlnZ2VycwogKgogKiBUaGUgbW9kdWxlIG9ubHkgdXNlcyBFWFBP UlRfU1lNQk9MX0dQTCBwb3dlcl9zdXBwbHkgQVBJczsgdGhlIHRlc3QgcHN5IGlzIGEKICogbm9y bWFsIGNsYXNzIGRldmljZSB3aG9zZSBwcml2YXRlIGRhdGEgaXMgZGVsaWJlcmF0ZWx5IGZyZWVk IGFmdGVyIHVucmVnaXN0ZXIuCiAqLwojZGVmaW5lIHByX2ZtdChmbXQpICJQU1JBQ0U6ICIgZm10 CgojaW5jbHVkZSA8bGludXgvYXRvbWljLmg+CiNpbmNsdWRlIDxsaW51eC9jb21wbGV0aW9uLmg+ CiNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgojaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CiNpbmNs dWRlIDxsaW51eC9lcnIuaD4KI2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQuaD4KI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgojaW5jbHVkZSA8bGludXgvcG93ZXJfc3VwcGx5Lmg+CiNpbmNsdWRlIDxs aW51eC9zbGFiLmg+CiNpbmNsdWRlIDxsaW51eC93YWl0Lmg+CgpzdGF0aWMgaW50IGFjdGlvbiA9 IDM7Cm1vZHVsZV9wYXJhbShhY3Rpb24sIGludCwgMDQ0NCk7Ck1PRFVMRV9QQVJNX0RFU0MoYWN0 aW9uLCAiMz1nZXRfcHJvcGVydHkgVUFGLCA0PXN5c3RlbS1iYXR0ZXJ5IHJlc3VycmVjdGlvbiwg NT1jaGFuZ2VkLWFmdGVyLXVucmVnaXN0ZXIiKTsKCnN0YXRpYyBib29sIGNvbnRyb2w7Cm1vZHVs ZV9wYXJhbShjb250cm9sLCBib29sLCAwNDQ0KTsKTU9EVUxFX1BBUk1fREVTQyhjb250cm9sLCAi MT1uZWdhdGl2ZSBjb250cm9sOiBkbyBub3QgZnJlZS90cmlnZ2VyIHRoZSByYWN5IG9iamVjdCIp OwoKc3RydWN0IHBzX3ByaXYgewoJaW50IG1hZ2ljOwp9OwoKc3RhdGljIHN0cnVjdCBkZXZpY2Ug KnJvb3Q7CnN0YXRpYyBzdHJ1Y3QgcG93ZXJfc3VwcGx5ICpwc3k7CnN0YXRpYyBzdHJ1Y3QgcHNf cHJpdiAqcHJpdjsKc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGhyOwpzdGF0aWMgc3RydWN0 IGNvbXBsZXRpb24gZW50ZXJlZDsKc3RhdGljIHN0cnVjdCBjb21wbGV0aW9uIGZpbmlzaGVkOwpz dGF0aWMgYXRvbWljX3QgYXJtZWQgPSBBVE9NSUNfSU5JVCgwKTsKc3RhdGljIGF0b21pY190IHNj b3BlX2NhbGxzID0gQVRPTUlDX0lOSVQoMCk7CnN0YXRpYyBzdHJ1Y3QgcG93ZXJfc3VwcGx5ICoq c3lzYmF0dDsKc3RhdGljIGludCBzeXNiYXR0X2NudDsKCnN0YXRpYyBpbnQgcHNfZ2V0X3Byb3Bl cnR5KHN0cnVjdCBwb3dlcl9zdXBwbHkgKnBzeSwKCQkJICAgZW51bSBwb3dlcl9zdXBwbHlfcHJv cGVydHkgcHNwLAoJCQkgICB1bmlvbiBwb3dlcl9zdXBwbHlfcHJvcHZhbCAqdmFsKQp7CglzdHJ1 Y3QgcHNfcHJpdiAqcCA9IHBvd2VyX3N1cHBseV9nZXRfZHJ2ZGF0YShwc3kpOwoKCXN3aXRjaCAo cHNwKSB7CgljYXNlIFBPV0VSX1NVUFBMWV9QUk9QX1BSRVNFTlQ6CgkJaWYgKGF0b21pY19yZWFk KCZhcm1lZCkpIHsKCQkJcHJfaW5mbygiY2FzZTMgZ2V0X3Byb3BlcnR5IGVudGVyZWQsIGRydmRh dGE9JXB4XG4iLCBwKTsKCQkJY29tcGxldGUoJmVudGVyZWQpOwoJCQltc2xlZXAoNTAwKTsKCQkJ dmFsLT5pbnR2YWwgPSBSRUFEX09OQ0UocC0+bWFnaWMpOwoJCQlwcl9pbmZvKCJjYXNlMyBnZXRf cHJvcGVydHkgcmVhZCAlI3ggYWZ0ZXIgdW5yZWdpc3RlclxuIiwKCQkJCXZhbC0+aW50dmFsKTsK CQkJY29tcGxldGUoJmZpbmlzaGVkKTsKCQkJcmV0dXJuIDA7CgkJfQoJCS8qIENhc2UgNCByZWFk cyBkcnZkYXRhIGFmdGVyIHRoZSBiYXR0ZXJ5IGhhcyBiZWVuIHVucmVnaXN0ZXJlZC4gKi8KCQl2 YWwtPmludHZhbCA9IChhY3Rpb24gPT0gNCkgPyBSRUFEX09OQ0UocC0+bWFnaWMpIDogMTsKCQly ZXR1cm4gMDsKCWNhc2UgUE9XRVJfU1VQUExZX1BST1BfT05MSU5FOgoJCXZhbC0+aW50dmFsID0g MTsKCQlyZXR1cm4gMDsKCWNhc2UgUE9XRVJfU1VQUExZX1BST1BfU0NPUEU6CgkJLyogVGhlIGZp cnN0IGNhbGwgaXMgdGhlIGNvdW50IHBhc3M7IHRoZSBzZWNvbmQgaXMgcG9wdWxhdGUuICovCgkJ aWYgKGF0b21pY19pbmNfcmV0dXJuKCZzY29wZV9jYWxscykgPT0gMikgewoJCQlwcl9pbmZvKCJj YXNlNCBwb3B1bGF0ZSBzY29wZSBjYWxsYmFjayBlbnRlcmVkLCBkcnZkYXRhPSVweFxuIiwgcCk7 CgkJCWNvbXBsZXRlKCZlbnRlcmVkKTsKCQkJbXNsZWVwKDUwMCk7CgkJfQoJCXZhbC0+aW50dmFs ID0gUE9XRVJfU1VQUExZX1NDT1BFX1NZU1RFTTsKCQlyZXR1cm4gMDsKCWRlZmF1bHQ6CgkJcmV0 dXJuIC1FSU5WQUw7Cgl9Cn0KCnN0YXRpYyBjb25zdCBlbnVtIHBvd2VyX3N1cHBseV9wcm9wZXJ0 eSBwcm9wczNbXSA9IHsKCVBPV0VSX1NVUFBMWV9QUk9QX1BSRVNFTlQsCn07CnN0YXRpYyBjb25z dCBlbnVtIHBvd2VyX3N1cHBseV9wcm9wZXJ0eSBwcm9wczRbXSA9IHsKCVBPV0VSX1NVUFBMWV9Q Uk9QX1NDT1BFLAoJUE9XRVJfU1VQUExZX1BST1BfUFJFU0VOVCwKfTsKc3RhdGljIGNvbnN0IGVu dW0gcG93ZXJfc3VwcGx5X3Byb3BlcnR5IHByb3BzNVtdID0gewoJUE9XRVJfU1VQUExZX1BST1Bf T05MSU5FLAp9OwoKc3RhdGljIGNvbnN0IHN0cnVjdCBwb3dlcl9zdXBwbHlfZGVzYyBkZXNjMyA9 IHsKCS5uYW1lID0gInBzcmFjZTMiLAoJLnR5cGUgPSBQT1dFUl9TVVBQTFlfVFlQRV9VU0IsCgku cHJvcGVydGllcyA9IHByb3BzMywKCS5udW1fcHJvcGVydGllcyA9IEFSUkFZX1NJWkUocHJvcHMz KSwKCS5nZXRfcHJvcGVydHkgPSBwc19nZXRfcHJvcGVydHksCn07CnN0YXRpYyBjb25zdCBzdHJ1 Y3QgcG93ZXJfc3VwcGx5X2Rlc2MgZGVzYzQgPSB7CgkubmFtZSA9ICJwc3JhY2U0IiwKCS50eXBl ID0gUE9XRVJfU1VQUExZX1RZUEVfQkFUVEVSWSwKCS5wcm9wZXJ0aWVzID0gcHJvcHM0LAoJLm51 bV9wcm9wZXJ0aWVzID0gQVJSQVlfU0laRShwcm9wczQpLAoJLmdldF9wcm9wZXJ0eSA9IHBzX2dl dF9wcm9wZXJ0eSwKfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBwb3dlcl9zdXBwbHlfZGVzYyBkZXNj NSA9IHsKCS5uYW1lID0gInBzcmFjZTUiLAoJLnR5cGUgPSBQT1dFUl9TVVBQTFlfVFlQRV9VU0Is CgkucHJvcGVydGllcyA9IHByb3BzNSwKCS5udW1fcHJvcGVydGllcyA9IEFSUkFZX1NJWkUocHJv cHM1KSwKCS5nZXRfcHJvcGVydHkgPSBwc19nZXRfcHJvcGVydHksCn07CgpzdGF0aWMgaW50IGNv bnN1bWVyMyh2b2lkICp1bnVzZWQpCnsKCXVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsIHZhbDsK CXN0cnVjdCBwb3dlcl9zdXBwbHkgKnA7CgoJbXNsZWVwKDEwMCk7CglwID0gcG93ZXJfc3VwcGx5 X2dldF9ieV9uYW1lKCJwc3JhY2UzIik7CglpZiAoIXApIHsKCQlwcl9lcnIoImNhc2UzIGdldF9i eV9uYW1lIGZhaWxlZFxuIik7CgkJY29tcGxldGUoJmZpbmlzaGVkKTsKCQlyZXR1cm4gMDsKCX0K CXByX2luZm8oImNhc2UzIGNvbnN1bWVyIGdvdCAlcHhcbiIsIHApOwoJYXRvbWljX3NldCgmYXJt ZWQsIDEpOwoJc21wX21iKCk7Cglwb3dlcl9zdXBwbHlfZ2V0X3Byb3BlcnR5KHAsIFBPV0VSX1NV UFBMWV9QUk9QX1BSRVNFTlQsICZ2YWwpOwoJcG93ZXJfc3VwcGx5X3B1dChwKTsKCXByX2luZm8o ImNhc2UzIGNvbnN1bWVyIHB1dCwgZG9uZVxuIik7CglyZXR1cm4gMDsKfQoKc3RhdGljIGludCBz eXNiYXR0X3RocmVhZCh2b2lkICp1bnVzZWQpCnsKCXN5c2JhdHRfY250ID0gcG93ZXJfc3VwcGx5 X2dldF9zeXN0ZW1fYmF0dGVyaWVzKHJvb3QsICZzeXNiYXR0KTsKCXByX2luZm8oImNhc2U0IGdl dF9zeXN0ZW1fYmF0dGVyaWVzIC0+ICVkXG4iLCBzeXNiYXR0X2NudCk7Cgljb21wbGV0ZSgmZmlu aXNoZWQpOwoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQgcnVuX2Nhc2UzKHZvaWQpCnsKCWludCBy ZXQ7CgoJcHJpdiA9IGt6YWxsb2Moc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7CglpZiAoIXBy aXYpCgkJcmV0dXJuIC1FTk9NRU07Cglwcml2LT5tYWdpYyA9IDB4MTIzNDU2Nzg7CgoJcHN5ID0g cG93ZXJfc3VwcGx5X3JlZ2lzdGVyKHJvb3QsICZkZXNjMywgJihzdHJ1Y3QgcG93ZXJfc3VwcGx5 X2NvbmZpZyl7CgkJLmRydl9kYXRhID0gcHJpdiwKCQkubm9fd2FrZXVwX3NvdXJjZSA9IHRydWUs Cgl9KTsKCWlmIChJU19FUlIocHN5KSkgewoJCXJldCA9IFBUUl9FUlIocHN5KTsKCQlwcl9lcnIo ImNhc2UzIHJlZ2lzdGVyIGZhaWxlZCAlZFxuIiwgcmV0KTsKCQlrZnJlZShwcml2KTsKCQlyZXR1 cm4gcmV0OwoJfQoKCXRociA9IGt0aHJlYWRfcnVuKGNvbnN1bWVyMywgTlVMTCwgInBzcmFjZTNj Iik7CglpZiAoSVNfRVJSKHRocikpCgkJcmV0dXJuIFBUUl9FUlIodGhyKTsKCglyZXQgPSB3YWl0 X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJmVudGVyZWQsIDUgKiBIWik7CglpZiAoIXJldCkgewoJ CXByX2VycigiY2FzZTMgY2FsbGJhY2sgZGlkIG5vdCBlbnRlclxuIik7CgkJcmV0dXJuIC1FVElN RURPVVQ7Cgl9CgoJaWYgKGNvbnRyb2wpIHsKCQl3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQo JmZpbmlzaGVkLCA1ICogSFopOwoJCXByX2luZm8oImNhc2UzIGNvbnRyb2w6IGNhbGxiYWNrIGNv bXBsZXRlZCBiZWZvcmUgZnJlZVxuIik7CgkJbXNsZWVwKDUwMCk7CgkJcG93ZXJfc3VwcGx5X3Vu cmVnaXN0ZXIocHN5KTsKCQlrZnJlZShwcml2KTsKCQlwcml2ID0gTlVMTDsKCQlwcl9pbmZvKCJj YXNlMyBjb250cm9sIGRvbmUgKG5vIEtBU0FOIGV4cGVjdGVkKVxuIik7CgkJcmV0dXJuIDA7Cgl9 CgoJcHJfaW5mbygiY2FzZTMgdW5yZWdpc3RlciArIGtmcmVlKGRydmRhdGEpXG4iKTsKCXBvd2Vy X3N1cHBseV91bnJlZ2lzdGVyKHBzeSk7CglrZnJlZShwcml2KTsKCXByaXYgPSBOVUxMOwoKCS8q IGNhbGxiYWNrIHdha2VzIHVwIGFuZCByZWFkcyBmcmVlZCBkcnZkYXRhICovCgltc2xlZXAoMTAw MCk7Cglwcl9pbmZvKCJjYXNlMyBpbml0IGRvbmVcbiIpOwoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBp bnQgcnVuX2Nhc2U0KHZvaWQpCnsKCWludCByZXQ7Cgl1bmlvbiBwb3dlcl9zdXBwbHlfcHJvcHZh bCB2YWw7CgoJcHJpdiA9IGt6YWxsb2Moc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7CglpZiAo IXByaXYpCgkJcmV0dXJuIC1FTk9NRU07Cglwcml2LT5tYWdpYyA9IDB4NGI0YjRiNGI7CgoJcHN5 ID0gcG93ZXJfc3VwcGx5X3JlZ2lzdGVyKHJvb3QsICZkZXNjNCwgJihzdHJ1Y3QgcG93ZXJfc3Vw cGx5X2NvbmZpZyl7CgkJLmRydl9kYXRhID0gcHJpdiwKCQkubm9fd2FrZXVwX3NvdXJjZSA9IHRy dWUsCgl9KTsKCWlmIChJU19FUlIocHN5KSkgewoJCXJldCA9IFBUUl9FUlIocHN5KTsKCQlwcl9l cnIoImNhc2U0IHJlZ2lzdGVyIGZhaWxlZCAlZFxuIiwgcmV0KTsKCQlrZnJlZShwcml2KTsKCQly ZXR1cm4gcmV0OwoJfQoKCXRociA9IGt0aHJlYWRfcnVuKHN5c2JhdHRfdGhyZWFkLCBOVUxMLCAi cHNyYWNlNHMiKTsKCWlmIChJU19FUlIodGhyKSkKCQlyZXR1cm4gUFRSX0VSUih0aHIpOwoKCXJl dCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmZW50ZXJlZCwgNSAqIEhaKTsKCWlmICgh cmV0KSB7CgkJcHJfZXJyKCJjYXNlNCBwb3B1bGF0ZSBjYWxsYmFjayBkaWQgbm90IGVudGVyXG4i KTsKCQlyZXR1cm4gLUVUSU1FRE9VVDsKCX0KCglpZiAoY29udHJvbCkgewoJCXdhaXRfZm9yX2Nv bXBsZXRpb25fdGltZW91dCgmZmluaXNoZWQsIDUgKiBIWik7CgkJaWYgKHN5c2JhdHRfY250ID4g MCkgewoJCQlwcl9pbmZvKCJjYXNlNCBjb250cm9sOiByZWFkIGFycmF5WzBdPSVweCBiZWZvcmUg ZnJlZVxuIiwKCQkJCXN5c2JhdHRbMF0pOwoJCQlwb3dlcl9zdXBwbHlfZ2V0X3Byb3BlcnR5KHN5 c2JhdHRbMF0sCgkJCQkJCSAgUE9XRVJfU1VQUExZX1BST1BfUFJFU0VOVCwKCQkJCQkJICAmdmFs KTsKCQkJcG93ZXJfc3VwcGx5X3B1dF9zeXN0ZW1fYmF0dGVyaWVzKHN5c2JhdHQsIHN5c2JhdHRf Y250KTsKCQl9CgkJcG93ZXJfc3VwcGx5X3VucmVnaXN0ZXIocHN5KTsKCQlrZnJlZShwcml2KTsK CQlwcml2ID0gTlVMTDsKCQlwcl9pbmZvKCJjYXNlNCBjb250cm9sIGRvbmUgKG5vIEtBU0FOIGV4 cGVjdGVkKVxuIik7CgkJcmV0dXJuIDA7Cgl9CgoJcHJfaW5mbygiY2FzZTQgdW5yZWdpc3RlciAr IGtmcmVlKGRydmRhdGEpIGR1cmluZyBwb3B1bGF0ZVxuIik7Cglwb3dlcl9zdXBwbHlfdW5yZWdp c3Rlcihwc3kpOwoJa2ZyZWUocHJpdik7Cglwcml2ID0gTlVMTDsKCglyZXQgPSB3YWl0X2Zvcl9j b21wbGV0aW9uX3RpbWVvdXQoJmZpbmlzaGVkLCA1ICogSFopOwoJaWYgKCFyZXQpIHsKCQlwcl9l cnIoImNhc2U0IGdldF9zeXN0ZW1fYmF0dGVyaWVzIGRpZCBub3QgZmluaXNoXG4iKTsKCQlyZXR1 cm4gLUVUSU1FRE9VVDsKCX0KCglpZiAoc3lzYmF0dF9jbnQgPD0gMCkgewoJCXByX2VycigiY2Fz ZTQgbm8gYmF0dGVyeSByZXN1cnJlY3RlZCAoJWQpXG4iLCBzeXNiYXR0X2NudCk7CgkJcmV0dXJu IC1FTk9FTlQ7Cgl9CgoJcHJfaW5mbygiY2FzZTQgYXJyYXlbMF09JXB4ICh1bnJlZ2lzdGVyZWQg YmF0dGVyeSksIG5vdyBnZXRfcHJvcGVydHlcbiIsCgkJc3lzYmF0dFswXSk7Cglwb3dlcl9zdXBw bHlfZ2V0X3Byb3BlcnR5KHN5c2JhdHRbMF0sIFBPV0VSX1NVUFBMWV9QUk9QX1BSRVNFTlQsICZ2 YWwpOwoJcG93ZXJfc3VwcGx5X3B1dF9zeXN0ZW1fYmF0dGVyaWVzKHN5c2JhdHQsIHN5c2JhdHRf Y250KTsKCXByX2luZm8oImNhc2U0IGluaXQgZG9uZVxuIik7CglyZXR1cm4gMDsKfQoKc3RhdGlj IGludCBydW5fY2FzZTUodm9pZCkKewoJaW50IHJldDsKCglwcml2ID0ga3phbGxvYyhzaXplb2Yo KnByaXYpLCBHRlBfS0VSTkVMKTsKCWlmICghcHJpdikKCQlyZXR1cm4gLUVOT01FTTsKCXByaXYt Pm1hZ2ljID0gMHg1YTVhNWE1YTsKCglwc3kgPSBwb3dlcl9zdXBwbHlfcmVnaXN0ZXIocm9vdCwg JmRlc2M1LCAmKHN0cnVjdCBwb3dlcl9zdXBwbHlfY29uZmlnKXsKCQkuZHJ2X2RhdGEgPSBwcml2 LAoJCS5ub193YWtldXBfc291cmNlID0gdHJ1ZSwKCX0pOwoJaWYgKElTX0VSUihwc3kpKSB7CgkJ cmV0ID0gUFRSX0VSUihwc3kpOwoJCXByX2VycigiY2FzZTUgcmVnaXN0ZXIgZmFpbGVkICVkXG4i LCByZXQpOwoJCWtmcmVlKHByaXYpOwoJCXJldHVybiByZXQ7Cgl9CgoJcHJfaW5mbygiY2FzZTUg b25saW5lX3RyaWc9JXB4XG4iLCBwc3ktPm9ubGluZV90cmlnKTsKCWlmICghcHN5LT5vbmxpbmVf dHJpZykgewoJCXByX2VycigiY2FzZTUgbm8gb25saW5lIHRyaWdnZXIsIGFib3J0XG4iKTsKCQly ZXR1cm4gLUVOT0VOVDsKCX0KCgkvKgoJICogRW11bGF0ZSBhIGNvbnN1bWVyIHRoYXQga2VlcHMg Ym90aCB0aGUgc3RydWN0IHBvd2VyX3N1cHBseSBhbmQgYQoJICogcG9zaXRpdmUgdXNlX2NudCBh bGl2ZS4gIFdpdGhvdXQgdGhlIHVzZV9jbnQsIGdldF9wcm9wZXJ0eSgpIGluCgkgKiBjaGFuZ2Vk X3dvcmsgd291bGQgcmV0dXJuIC1FTk9ERVYgYmVmb3JlIHJlYWNoaW5nIHRoZSB0cmlnZ2VyLgoJ ICovCgl7CgkJc3RydWN0IHBvd2VyX3N1cHBseSAqaGVsZCA9IHBvd2VyX3N1cHBseV9nZXRfYnlf bmFtZSgicHNyYWNlNSIpOwoKCQlpZiAoIWhlbGQpIHsKCQkJcHJfZXJyKCJjYXNlNSBnZXRfYnlf bmFtZSBmYWlsZWRcbiIpOwoJCQlyZXR1cm4gLUVOT0VOVDsKCQl9CgkJcHJfaW5mbygiY2FzZTUg aGVsZD0lcHggdXNlX2NudCBub3cgPjBcbiIsIGhlbGQpOwoJfQoJcHJfaW5mbygiY2FzZTUgdW5y ZWdpc3RlciAoZnJlZXMgTEVEIHRyaWdnZXIpLCB0aGVuIGNoYW5nZWRcbiIpOwoJcG93ZXJfc3Vw cGx5X3VucmVnaXN0ZXIocHN5KTsKCXByX2luZm8oImNhc2U1IGFmdGVyIHVucmVnaXN0ZXIgb25s aW5lX3RyaWc9JXB4XG4iLCBwc3ktPm9ubGluZV90cmlnKTsKCWlmIChjb250cm9sKSB7CgkJbXNs ZWVwKDEwMDApOwoJCXBvd2VyX3N1cHBseV9wdXQocHN5KTsKCQlwcl9pbmZvKCJjYXNlNSBjb250 cm9sIGRvbmUgKG5vIGNoYW5nZWQsIG5vIEtBU0FOIGV4cGVjdGVkKVxuIik7CgkJcmV0dXJuIDA7 Cgl9Cglwb3dlcl9zdXBwbHlfY2hhbmdlZChwc3kpOwoJbXNsZWVwKDEwMDApOwoJLyogRHJvcCB0 aGUgY29uc3VtZXIgcmVmZXJlbmNlIG9ubHkgYWZ0ZXIgY2hhbmdlZF93b3JrIGhhcyBydW4uICov Cglwb3dlcl9zdXBwbHlfcHV0KHBzeSk7Cglwcl9pbmZvKCJjYXNlNSBpbml0IGRvbmVcbiIpOwoJ cmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQgX19pbml0IHBzcmFjZV9pbml0KHZvaWQpCnsKCWludCBy ZXQ7CgoJcm9vdCA9IHJvb3RfZGV2aWNlX3JlZ2lzdGVyKCJwc3JhY2Utcm9vdCIpOwoJaWYgKElT X0VSUihyb290KSkKCQlyZXR1cm4gUFRSX0VSUihyb290KTsKCWluaXRfY29tcGxldGlvbigmZW50 ZXJlZCk7Cglpbml0X2NvbXBsZXRpb24oJmZpbmlzaGVkKTsKCglzd2l0Y2ggKGFjdGlvbikgewoJ Y2FzZSAzOgoJCXJldCA9IHJ1bl9jYXNlMygpOwoJCWJyZWFrOwoJY2FzZSA0OgoJCXJldCA9IHJ1 bl9jYXNlNCgpOwoJCWJyZWFrOwoJY2FzZSA1OgoJCXJldCA9IHJ1bl9jYXNlNSgpOwoJCWJyZWFr OwoJZGVmYXVsdDoKCQlwcl9lcnIoInVua25vd24gYWN0aW9uICVkXG4iLCBhY3Rpb24pOwoJCXJl dCA9IC1FSU5WQUw7Cgl9Cglwcl9pbmZvKCJhY3Rpb249JWQgaW5pdCByZXQ9JWRcbiIsIGFjdGlv biwgcmV0KTsKCXJldHVybiByZXQ7Cn0KCm1vZHVsZV9pbml0KHBzcmFjZV9pbml0KTsKTU9EVUxF X0xJQ0VOU0UoIkdQTCIpOwpNT0RVTEVfREVTQ1JJUFRJT04oInBvd2VyX3N1cHBseSB2Ny4zIGxp ZmV0aW1lLXJhY2UgcmVwcm9kdWNlciIpOwo= ------=_Part_474710_1893258226.1794316661871--