From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 206214BDC9 for ; Fri, 29 Aug 2025 03:08:08 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'5WVUCTzoW83xCNIlqoJFNZUhhazQkaWCppIdlEabPns=', expected b'qjSoCkSsg3a8JnmgDKVmNoIIhMF2IurRnbTDJzuoT80=')) header.d=gmail.com header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1756436871; h=to : date : message-id : mime-version : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=5WVUCTzoW83xCNIlqoJFNZUhhazQkaWCppIdlEabPns=; b=aHORIdP9rDQILlaWSAiMGbFgOgaZlNxYMiu9RTWnt+nL63aBcU3SoYOAWU1fbw+HGEgEt XsLYtkPhTxCDaL4I3pFDJtEDzC2FhLrYF4zoLHx9PciakuVlc/VTg/jnMJudYN10lt0qYPC ky0gKnS97LnUHgw7GIDwEPNfOCSEoRW4Qte0pi7d5ESHbRNe3reY45rfixDG4dRh8BU9PRY sDqVmkwjEsQkhldLKnpoZuQrDUIbbUUmUsuypPZDC+8acfORTTYLGQsEl4xoYpHq0PDh8qq 8LkMMYVYOY4H4pLid2+GNZebGENZ8ggGTt+ydV2EGBuswUFAAyvNq2pYiIDw== Received: from [172.19.0.4] (unknown [172.19.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 414B768E792; Fri, 29 Aug 2025 06:07:51 +0300 (EEST) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1756436857; b=ba366sw7EQYnVzosG5B8A0XMlHfZLiVyUlH2wgicpSradDgF4edzGu7N6yLt+YUUIwBuD atQ6GZ6majINe1ipEp8ZDDuFsANB5lO5MhSGt582c3f45zKIPdz5yFkTovSuc1oi6ZCBjg+ 0M08aCwWW0kvnHKE/df0WOKBItOHQjRx2j6rYx/1nhYX1nvyTe7y8nk87wlUdnvaIH7LIhQ 5+wlWmVnXHcnEw5a9GL4X0ylKb+tdRBh9A/Sde+dYOc1PdbhrF9mBphqGOyT5wToIm7EtDP 75RTE+tSY7nQROSWRb6oxo3ScEltPknlgO+BWolg9BVYIzbf5NuMrI10/FZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1756436857; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=5WVUCTzoW83xCNIlqoJFNZUhhazQkaWCppIdlEabPns=; b=LD10o6OyJPLo16rJo3YS4J7iumr999FNnwIa81dNGazSsFSygYFilQmWv6t7K77TbwwYV ahdcoYEhYNSI8SBJ/8hQSrf89t4eQ/x4AOnmt0nSbpd2ihPN35qvSfrCFJ2ThjFseQuGEVn TZj5Sh0t9OfGTauE+4Y80JJrOpqGdxhCB6DAWpn16am+yuVgg3C7EIoSvQSD4A/xqS2AMf3 rpon+og8Fzin0a1pJvuKD4FPWhY70gKKlBMuQVTM0Bv0b6sHV7lbqlOX+mP840laWchjDeg 6dvtY0uz+/2JyOPUZjHf9YybuFEZS3bj8oqttgeCH1lIDIWdSiegLoUiDqxg== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=gmail.com; arc=none; dmarc=pass header.from=gmail.com policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=gmail.com; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=gmail.com policy.dmarc=quarantine Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id A5CFD680297 for ; Fri, 29 Aug 2025 06:07:21 +0300 (EEST) Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-771fa8e4190so1216255b3a.1 for ; Thu, 28 Aug 2025 20:07:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756436839; x=1757041639; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=qjSoCkSsg3a8JnmgDKVmNoIIhMF2IurRnbTDJzuoT80=; b=a1k4mpf5ApVD+YzvP/LPCPiEyMlz2eBkwccxfUWF/87GAqcdEEXzOM1TIfUW7OWrZI R7KkMlopOZq9CD02Ys0YzzJ53zU4mCqmVqtF3dWi79PMri0jvxZy/jNw8dJZ5JVLCrbs ESoMl/pW3PXsCsj93hgAUuSYqMw/FzyKXwI6PnYiQkSGzzvTsLfeow07gQbKmxDSrDUG QUzP1WF6xaLC11ym9G+qxRw2SX7yA6xC/7SAOlNKhBVSumnKeyOWy+hbgNw2OYqoDwR6 W4KmS/jM4XQK50S/k7vFLrdGZn7egDr3vV9QT28WQd/fLf9ytY/MhDBI/8dgN7pT/oT0 AEQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756436839; x=1757041639; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=qjSoCkSsg3a8JnmgDKVmNoIIhMF2IurRnbTDJzuoT80=; b=JHzftQp/4vSccNS9I1IEuLWHiEdZlA4BfTOr0zHoM3RUGXGbyYZm3hi8JPdXuZ147b yFf8BP8aK103h1sU+BnDQ3PT19n/FPmPF5oQWrRB85bHw9MHtphYG1PeFE3jKk3sh1a3 AP/p4QW+LuNAzwVqP41wOskzUT2GRlaZwuumxq2TtXxRwnQHrKnvjJQKLVY3kKQTdJ// LjywhsdZdaMB3wzKuy9NNS4OVYnaOjZyqJvYbpo62S6E6lFBiqzewAKWuubYZRJMXAvi LUOCfYb89Klyn7Fwjwhi812qEE5LFp2jPMH8L06dtZOUwfW+BMcD9cAGbxKCWjw6vO7h 96pg== X-Gm-Message-State: AOJu0Yw8guDIm1ltySvY/QOMbskpPSp0j0WLuGIrL2wI8P7U5g1AWGsx +uOFBUuYSBPtc90R+yTvgm/sQHrG4hJkTktAkPQ1q58mDwGcrx/COAt9aQ8/21U7 X-Gm-Gg: ASbGncvLrUIegTWxPLQ4HbFEbbJPOVSdSKxQeAIVYf0NN1XiBhRCj12/EU8BTsUqakd uURa5+QJgLWXVHb/kkDJxQJl3XcjZSb+tNcPcBonmsebI9q8Z7NcP1r0KfLMi3FR2yRhHfmTUbV Na1I+VTzG0jpAx6gZsOldNuJZR50nAM1uH8PQUEy328uv1tTr2dz+oyM9pdOi6zhB3qYN0NLLZd L6By5zcZIiAL+fNQNVYPb8YYPtUHsLO6mxqkU1oQB8N7mYHizJsLYqNGaFt4b0GNPWd1qvmUFOt 7qLRg4mJwap0lRKES+1F5cIAYHc7n+9cL4ehiL3qzXgWgMxXxFUF6uuvck5lhJc6+mybsiBhqsd CULL5vJM933ugo3UwL2PzRRsffOhmhmDPrjdNFau9/e+OSd/2gUTpS/IpNc53 X-Google-Smtp-Source: AGHT+IFO8mEUgZOsHIDyMaQhvLyGcyLOvgeGxRJMO39uLfSzHEm+zNwWEDYkF5wIHN36BLqUouMxbg== X-Received: by 2002:a05:6a20:6bb0:b0:243:9b35:c819 with SMTP id adf61e73a8af0-2439b35ca01mr9139117637.9.1756436838788; Thu, 28 Aug 2025 20:07:18 -0700 (PDT) Received: from user-System-Product-Name.. ([183.242.63.1]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b4cd3670e5csm770851a12.53.2025.08.28.20.07.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Aug 2025 20:07:18 -0700 (PDT) X-Google-Original-From: "jianfeng.zheng" To: ffmpeg-devel@ffmpeg.org Date: Fri, 29 Aug 2025 11:07:02 +0800 Message-Id: <20250829030702.73312-1-jianfeng.zheng@mthreads.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Message-ID-Hash: IN3CJ67NSNIXYGZ6FBYBZPPDXUTM5WYT X-Message-ID-Hash: IN3CJ67NSNIXYGZ6FBYBZPPDXUTM5WYT X-MailFrom: SRS0=QEy/=3J=gmail.com=ggjogh@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH v1] avfilter: add vf_scale_d3d12 List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: "jianfeng.zheng via ffmpeg-devel" Cc: "jianfeng.zheng" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Archived-At: List-Archive: List-Post: U3dpdGNoIHRvIG1zdmMgdG9vbGNoYWluIGlmIG1pbmd3NjQgdG9vbGNoYWluIGRvbid0IHN1cHBv cnQgZHgxMnZwLg0KDQpTaWduZWQtb2ZmLWJ5OiBqaWFuZmVuZy56aGVuZyA8amlhbmZlbmcuemhl bmdAbXRocmVhZHMuY29tPg0KLS0tDQogY29uZmlndXJlICAgICAgICAgICAgICAgICAgICB8ICAg NSArDQogbGliYXZmaWx0ZXIvTWFrZWZpbGUgICAgICAgICB8ICAgMSArDQogbGliYXZmaWx0ZXIv YWxsZmlsdGVycy5jICAgICB8ICAgMSArDQogbGliYXZmaWx0ZXIvdmZfc2NhbGVfZDNkMTIuYyB8 IDQyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIDQgZmlsZXMgY2hhbmdl ZCwgNDMyIGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvdmZf c2NhbGVfZDNkMTIuYw0KDQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlDQppbmRl eCA5ZmUyOGM1YWY0Li4xZDExNzc1YjFhIDEwMDc1NQ0KLS0tIGEvY29uZmlndXJlDQorKysgYi9j b25maWd1cmUNCkBAIC00MDcyLDYgKzQwNzIsNyBAQCB6c2NhbGVfZmlsdGVyX2RlcHM9ImxpYnpp bWcgY29uc3RfbmFuIg0KIHNjYWxlX3ZhYXBpX2ZpbHRlcl9kZXBzPSJ2YWFwaSINCiBzY2FsZV92 dF9maWx0ZXJfZGVwcz0idmlkZW90b29sYm94IFZUUGl4ZWxUcmFuc2ZlclNlc3Npb25DcmVhdGUi DQogc2NhbGVfdnVsa2FuX2ZpbHRlcl9kZXBzPSJ2dWxrYW4gc3BpcnZfY29tcGlsZXIiDQorc2Nh bGVfZDNkMTJfZmlsdGVyX2RlcHM9ImQzZDEydmEgSUQzRDEyVmlkZW9Qcm9jZXNzb3IgSUQzRDEy VmlkZW9Qcm9jZXNzQ29tbWFuZExpc3QgRDNEMTJfVklERU9fUFJPQ0VTU19PVVRQVVRfU1RSRUFN X0FSR1VNRU5UUyBEM0QxMl9WSURFT19QUk9DRVNTX0lOUFVUX1NUUkVBTV9BUkdVTUVOVFMiDQog dnBwX3Fzdl9maWx0ZXJfZGVwcz0ibGlibWZ4Ig0KIHZwcF9xc3ZfZmlsdGVyX3NlbGVjdD0icXN2 dnBwIg0KIHhmYWRlX29wZW5jbF9maWx0ZXJfZGVwcz0ib3BlbmNsIg0KQEAgLTY4ODUsNiArNjg4 NiwxMCBAQCBjaGVja190eXBlICJ3aW5kb3dzLmggZDNkMTEuaCIgIklEM0QxMVZpZGVvQ29udGV4 dCINCiBjaGVja190eXBlICJ3aW5kb3dzLmggZDNkMTIuaCIgIklEM0QxMkRldmljZSINCiBjaGVj a190eXBlICJ3aW5kb3dzLmggZDNkMTJ2aWRlby5oIiAiSUQzRDEyVmlkZW9EZWNvZGVyIg0KIGNo ZWNrX3R5cGUgIndpbmRvd3MuaCBkM2QxMnZpZGVvLmgiICJJRDNEMTJWaWRlb0VuY29kZXIiDQor Y2hlY2tfdHlwZSAid2luZG93cy5oIGQzZDEydmlkZW8uaCIgIklEM0QxMlZpZGVvUHJvY2Vzc29y Ig0KK2NoZWNrX3R5cGUgIndpbmRvd3MuaCBkM2QxMnZpZGVvLmgiICJJRDNEMTJWaWRlb1Byb2Nl c3NDb21tYW5kTGlzdCINCitjaGVja190eXBlICJ3aW5kb3dzLmggZDNkMTJ2aWRlby5oIiAiRDNE MTJfVklERU9fUFJPQ0VTU19PVVRQVVRfU1RSRUFNX0FSR1VNRU5UUyINCitjaGVja190eXBlICJ3 aW5kb3dzLmggZDNkMTJ2aWRlby5oIiAiRDNEMTJfVklERU9fUFJPQ0VTU19JTlBVVF9TVFJFQU1f QVJHVU1FTlRTIg0KIHRlc3RfY29kZSBjYyAid2luZG93cy5oIGQzZDEydmlkZW8uaCIgIkQzRDEy X0ZFQVRVUkVfVklERU8gZmVhdHVyZSA9IEQzRDEyX0ZFQVRVUkVfVklERU9fRU5DT0RFUl9DT0RF QyIgJiYgXA0KIHRlc3RfY29kZSBjYyAid2luZG93cy5oIGQzZDEydmlkZW8uaCIgIkQzRDEyX0ZF QVRVUkVfREFUQV9WSURFT19FTkNPREVSX1JFU09VUkNFX1JFUVVJUkVNRU5UUyByZXEiICYmIGVu YWJsZSBkM2QxMl9lbmNvZGVyX2ZlYXR1cmUNCiBjaGVja190eXBlICJ3aW5kb3dzLmgiICJEUElf QVdBUkVORVNTX0NPTlRFWFQiIC1EX1dJTjMyX1dJTk5UPTB4MEEwMA0KZGlmZiAtLWdpdCBhL2xp YmF2ZmlsdGVyL01ha2VmaWxlIGIvbGliYXZmaWx0ZXIvTWFrZWZpbGUNCmluZGV4IDA3ZmI0YzNk NmMuLjczMjU1MWZkNTYgMTAwNjQ0DQotLS0gYS9saWJhdmZpbHRlci9NYWtlZmlsZQ0KKysrIGIv bGliYXZmaWx0ZXIvTWFrZWZpbGUNCkBAIC00NzQsNiArNDc0LDcgQEAgT0JKUy0kKENPTkZJR19T Q0FMRV9RU1ZfRklMVEVSKSAgICAgICAgICAgICAgKz0gdmZfdnBwX3Fzdi5vDQogT0JKUy0kKENP TkZJR19TQ0FMRV9WQUFQSV9GSUxURVIpICAgICAgICAgICAgKz0gdmZfc2NhbGVfdmFhcGkubyBz Y2FsZV9ldmFsLm8gdmFhcGlfdnBwLm8NCiBPQkpTLSQoQ09ORklHX1NDQUxFX1ZUX0ZJTFRFUikg ICAgICAgICAgICAgICArPSB2Zl9zY2FsZV92dC5vIHNjYWxlX2V2YWwubw0KIE9CSlMtJChDT05G SUdfU0NBTEVfVlVMS0FOX0ZJTFRFUikgICAgICAgICAgICs9IHZmX3NjYWxlX3Z1bGthbi5vIHZ1 bGthbi5vIHZ1bGthbl9maWx0ZXIubw0KK09CSlMtJChDT05GSUdfU0NBTEVfRDNEMTJfRklMVEVS KSAgICAgICAgICAgICs9IHZmX3NjYWxlX2QzZDEyLm8NCiBPQkpTLSQoQ09ORklHX1NDQUxFMlJF Rl9GSUxURVIpICAgICAgICAgICAgICArPSB2Zl9zY2FsZS5vIHNjYWxlX2V2YWwubyBmcmFtZXN5 bmMubw0KIE9CSlMtJChDT05GSUdfU0NBTEUyUkVGX05QUF9GSUxURVIpICAgICAgICAgICs9IHZm X3NjYWxlX25wcC5vIHNjYWxlX2V2YWwubw0KIE9CSlMtJChDT05GSUdfU0NERVRfRklMVEVSKSAg ICAgICAgICAgICAgICAgICs9IHZmX3NjZGV0Lm8NCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9h bGxmaWx0ZXJzLmMgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMNCmluZGV4IGNjYTRjZTAyODgu LjVjYmQxYTgwNGQgMTAwNjQ0DQotLS0gYS9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMNCisrKyBi L2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYw0KQEAgLTQ0MCw2ICs0NDAsNyBAQCBleHRlcm4gY29u c3QgRkZGaWx0ZXIgZmZfdmZfdnBwX2FtZjsNCiBleHRlcm4gY29uc3QgRkZGaWx0ZXIgZmZfdmZf c3JfYW1mOw0KIGV4dGVybiBjb25zdCBGRkZpbHRlciBmZl92Zl9zY2FsZV9jdWRhOw0KIGV4dGVy biBjb25zdCBGRkZpbHRlciBmZl92Zl9zY2FsZV9kM2QxMTsNCitleHRlcm4gY29uc3QgRkZGaWx0 ZXIgZmZfdmZfc2NhbGVfZDNkMTI7DQogZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX3ZmX3NjYWxl X25wcDsNCiBleHRlcm4gY29uc3QgRkZGaWx0ZXIgZmZfdmZfc2NhbGVfcXN2Ow0KIGV4dGVybiBj b25zdCBGRkZpbHRlciBmZl92Zl9zY2FsZV92YWFwaTsNCmRpZmYgLS1naXQgYS9saWJhdmZpbHRl ci92Zl9zY2FsZV9kM2QxMi5jIGIvbGliYXZmaWx0ZXIvdmZfc2NhbGVfZDNkMTIuYw0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjhkMzhlMDViNmYNCi0tLSAvZGV2L251 bGwNCisrKyBiL2xpYmF2ZmlsdGVyL3ZmX3NjYWxlX2QzZDEyLmMNCkBAIC0wLDAgKzEsNDI1IEBA DQorLyoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMjUgSmlhbmZlbmcuWmhlbmcgPGppYW5mZW5nLnpo ZW5nQG10aHJlYWRzLmNvbT4NCisgKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4N CisgKg0KKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3INCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljDQorICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VDQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4NCisgKg0KKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFsb25nIHdpdGgg RkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICogRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQ0KKyAqLw0KKw0KKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiDQorI2luY2x1 ZGUgImxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgiDQorI2luY2x1ZGUgImxpYmF2ZmlsdGVyL3NjYWxl X2V2YWwuaCINCisjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCINCisjaW5jbHVkZSAidmlk ZW8uaCINCisjaW5jbHVkZSAiY29tcGF0L3czMmRsZmNuLmgiDQorI2luY2x1ZGUgImxpYmF2Y29k ZWMvbWZfdXRpbHMuaCINCisjaW5jbHVkZSAibGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhX2lu dGVybmFsLmgiDQorI2luY2x1ZGUgImxpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5oIg0KKw0K KyNkZWZpbmUgRFhIUl9DSEVDSyhociwgZm10LCAuLi4pICAgIFwNCisgICAgaWYgKEZBSUxFRCho cikpIHsgICAgICAgICAgICAgICBcDQorICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJP UiwgIltXaW5FcnI6MHglbFhdICIsIGhyKTsgICAgIFwNCisgICAgICAgIGF2X2xvZyhhdmN0eCwg QVZfTE9HX0VSUk9SLCBmbXQsICMjX19WQV9BUkdTX18pOyAgICAgICAgXA0KKyAgICAgICAgZ290 byBmYWlsOyAgICAgICAgICAgICAgICAgIFwNCisgICAgfQ0KKw0KKyNkZWZpbmUgQ09ORF9DSEVD Syhjb25kLCBmbXQsIC4uLikgIFwNCisgICAgaWYgKGNvbmQpIHsgICAgICAgICAgICAgICAgICAg ICBcDQorICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgZm10LCAjI19fVkFfQVJH U19fKTsgICAgICAgIFwNCisgICAgICAgIGdvdG8gZmFpbDsgICAgICAgICAgICAgICAgICBcDQor ICAgIH0NCisNCisjZGVmaW5lIERYX1JFTEVBU0UocCwgcmxzKSAgICAgICAgICBcDQorICAgIGlm IChwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgcmxzKHApOyAgICAgICAg ICAgICAgICAgICAgIFwNCisgICAgICAgIHAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICBcDQor ICAgIH0NCisNCit0eXBlZGVmIHN0cnVjdCBTY2FsZUQzZDEyQ29udGV4dCB7DQorICAgIGNvbnN0 IEFWQ2xhc3MgICAgICAgICAgICAgICAgICAgKmNsYXNzQ3R4Ow0KKw0KKyAgICAvKioNCisgICAg ICogaW5wdXQgZGV2aWNlIHJlZmVyZW5jZQ0KKyAgICAgKi8NCisgICAgQVZCdWZmZXJSZWYgICAg ICAgICAgICAgICAgICAgICAqYXZfZGV2aWNlX3JlZjsNCisgICAgQVZEM0QxMlZBRGV2aWNlQ29u dGV4dCAgICAgICAgICAqaW5wdXRfaHdjdHg7DQorICAgIElEM0QxMkRldmljZSAgICAgICAgICAg ICAgICAgICAgKmQzZF9kZXZpY2VfcmVmOw0KKw0KKyAgICAvKioNCisgICAgICogZmlsdGVyJ3Mg ZGV2aWNlIGNvbnRleHQNCisgICAgICovDQorICAgIElEM0QxMlZpZGVvRGV2aWNlICAgICAgICAg ICAgICAgKnZpZGVvX2RldjsNCisgICAgSUQzRDEyVmlkZW9Qcm9jZXNzb3IgICAgICAgICAgICAq dnA7DQorICAgIElEM0QxMkNvbW1hbmRRdWV1ZSAgICAgICAgICAgICAgKnZwX2NvbW1hbmRfcXVl dWU7DQorICAgIElEM0QxMkNvbW1hbmRBbGxvY2F0b3IgICAgICAgICAgKnZwX2NvbW1hbmRfYWxs b2NhdG9yOw0KKyAgICBJRDNEMTJWaWRlb1Byb2Nlc3NDb21tYW5kTGlzdCAgICp2cF9jb21tYW5k X2xpc3Q7DQorICAgIEFWRDNEMTJWQVN5bmNDb250ZXh0ICAgICAgICAgICAgdnBfc3luYzsNCisg ICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHVfbWFzazsNCisgICAgDQorDQor ICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKndfZXhwcjsNCisgICAgY2hhciAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqaF9leHByOw0KKyAgICBpbnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZvcmNlX29yaWdpbmFsX2FzcGVjdF9yYXRpbzsNCisgICAgaW50ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZV9kaXZpc2libGVfYnk7DQorfSBTY2FsZUQz ZDEyQ29udGV4dDsNCisNCisNCitzdGF0aWMgaW50IHNjYWxlX2QzZDEyX2luaXQoQVZGaWx0ZXJD b250ZXh0KiBhdmN0eCkNCit7DQorICAgIFNjYWxlRDNkMTJDb250ZXh0ICpjdHggPSBhdmN0eC0+ cHJpdjsNCisgICAgY3R4LT5ncHVfbWFzayA9IDE7DQorICAgIHJldHVybiAwOw0KK30NCisNCitz dGF0aWMgSFJFU1VMVCBtdHZzcl9mZW5jZV9jb21wbGV0aW9uKEFWRDNEMTJWQVN5bmNDb250ZXh0 ICpwc3luY19jdHgpDQorew0KKyAgICB1aW50NjRfdCBjb21wbGV0aW9uID0gSUQzRDEyRmVuY2Vf R2V0Q29tcGxldGVkVmFsdWUocHN5bmNfY3R4LT5mZW5jZSk7DQorICAgIGlmIChjb21wbGV0aW9u IDwgcHN5bmNfY3R4LT5mZW5jZV92YWx1ZSkgew0KKyAgICAgICAgSFJFU1VMVCBociA9IElEM0Qx MkZlbmNlX1NldEV2ZW50T25Db21wbGV0aW9uKHBzeW5jX2N0eC0+ZmVuY2UsIHBzeW5jX2N0eC0+ ZmVuY2VfdmFsdWUsIHBzeW5jX2N0eC0+ZXZlbnQpOw0KKyAgICAgICAgaWYgKEZBSUxFRChocikp DQorICAgICAgICAgICAgcmV0dXJuIGhyOw0KKw0KKyAgICAgICAgV2FpdEZvclNpbmdsZU9iamVj dEV4KHBzeW5jX2N0eC0+ZXZlbnQsIElORklOSVRFLCBGQUxTRSk7DQorICAgIH0NCisNCisgICAg cmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBIUkVTVUxUIHdhaXRfcXVldWVfaWRsZShBVkQzRDEy VkFTeW5jQ29udGV4dCAqcHN5bmNfY3R4LCBJRDNEMTJDb21tYW5kUXVldWUgKmNtZF9xdWV1ZSkN Cit7DQorICAgIElEM0QxMkNvbW1hbmRRdWV1ZV9TaWduYWwoY21kX3F1ZXVlLCBwc3luY19jdHgt PmZlbmNlLCArK3BzeW5jX2N0eC0+ZmVuY2VfdmFsdWUpOw0KKyAgICByZXR1cm4gbXR2c3JfZmVu Y2VfY29tcGxldGlvbihwc3luY19jdHgpOw0KK30NCisNCitzdGF0aWMgRFhHSV9DT0xPUl9TUEFD RV9UWVBFIGdldF9keGdpX2NvbG9yX3NwYWNlKERYR0lfRk9STUFUIGR4Z2lfZm10KQ0KK3sNCisg ICAgRFhHSV9DT0xPUl9TUEFDRV9UWVBFIGNzcGFjZSA9IERYR0lfQ09MT1JfU1BBQ0VfUkdCX0ZV TExfRzIyX05PTkVfUDcwOTsNCisgICAgc3dpdGNoIChkeGdpX2ZtdCkNCisgICAgew0KKyAgICBj YXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoNCisgICAgICAgIGNzcGFjZSA9IERY R0lfQ09MT1JfU1BBQ0VfUkdCX0ZVTExfRzEwX05PTkVfUDcwOTsNCisgICAgICAgIGJyZWFrOw0K KyAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNOg0KKyAgICAgICAgY3NwYWNl ID0gRFhHSV9DT0xPUl9TUEFDRV9SR0JfRlVMTF9HMjA4NF9OT05FX1AyMDIwOw0KKyAgICAgICAg YnJlYWs7DQorICAgIGNhc2UgRFhHSV9GT1JNQVRfTlYxMjoNCisgICAgICAgIGNzcGFjZSA9IERY R0lfQ09MT1JfU1BBQ0VfUkdCX0ZVTExfRzIyX05PTkVfUDcwOTsNCisgICAgICAgIGJyZWFrOw0K KyAgICBjYXNlIERYR0lfRk9STUFUX1AwMTA6DQorICAgICAgICBjc3BhY2UgPSBEWEdJX0NPTE9S X1NQQUNFX1lDQkNSX0ZVTExfRzIyX0xFRlRfUDIwMjA7DQorICAgICAgICBicmVhazsNCisgICAg Y2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STToNCisgICAgY2FzZSBEWEdJX0ZPUk1BVF9S OEc4QjhBOF9VTk9STToNCisgICAgICAgIGNzcGFjZSA9IERYR0lfQ09MT1JfU1BBQ0VfUkdCX0ZV TExfRzIyX05PTkVfUDcwOTsNCisgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIHJldHVy biBjc3BhY2U7DQorfQ0KKw0KK3N0YXRpYyBIUkVTVUxUIGNyZWF0ZV92aWRlb19wcm9jZXNzb3Io QVZGaWx0ZXJDb250ZXh0ICphdmN0eCwgSUQzRDEyVmlkZW9Qcm9jZXNzb3IgKipwcF92cCwNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGlmbXQsIERY R0lfRk9STUFUIG9mbXQpDQorew0KKyAgICBTY2FsZUQzZDEyQ29udGV4dCAqY3R4ID0gYXZjdHgt PnByaXY7DQorICAgIEFWRmlsdGVyTGluayAgICppbmxpbmsgPSBhdmN0eC0+aW5wdXRzWzBdOw0K KyAgICBBVkZpbHRlckxpbmsgICpvdXRsaW5rID0gYXZjdHgtPm91dHB1dHNbMF07DQorICAgIEhS RVNVTFQgICAgICAgICAgICAgaHIgPSAwOw0KKw0KKyAgICBEM0QxMl9WSURFT19QUk9DRVNTX09V VFBVVF9TVFJFQU1fREVTQyBvdXRkZXNjPSB7DQorICAgICAgICAuRm9ybWF0ICAgICA9IG9mbXQs DQorICAgICAgICAuQ29sb3JTcGFjZSA9IGdldF9keGdpX2NvbG9yX3NwYWNlKG9mbXQpLA0KKyAg ICAgICAgLkZyYW1lUmF0ZSAgPSB7NjAsIDF9LA0KKyAgICB9Ow0KKw0KKyAgICBEM0QxMl9WSURF T19TSVpFX1JBTkdFIHNpemVfcmFuZ2UgPSB7DQorICAgICAgICAuTWluV2lkdGggICA9IDY0LA0K KyAgICAgICAgLk1pbkhlaWdodCAgPSA2NCwNCisgICAgICAgIC5NYXhXaWR0aCAgID0gMzg0MCwN CisgICAgICAgIC5NYXhIZWlnaHQgID0gMzg0MCwNCisgICAgfTsNCisgICAgRDNEMTJfVklERU9f UFJPQ0VTU19JTlBVVF9TVFJFQU1fREVTQyBpbmRlc2MgPSB7DQorICAgICAgICAuRm9ybWF0ICAg ICA9IGlmbXQsDQorICAgICAgICAuQ29sb3JTcGFjZSA9IGdldF9keGdpX2NvbG9yX3NwYWNlKGlm bXQpLA0KKyAgICAgICAgLkZyYW1lUmF0ZSAgPSB7NjAsIDF9LA0KKyAgICAgICAgLlNvdXJjZUFz cGVjdFJhdGlvICAgICAgPSB7MSwgMX0sDQorICAgICAgICAuRGVzdGluYXRpb25Bc3BlY3RSYXRp byA9IHsxLCAxfSwNCisgICAgICAgIC5Tb3VyY2VTaXplUmFuZ2UgICAgICAgID0gc2l6ZV9yYW5n ZSwNCisgICAgICAgIC5EZXN0aW5hdGlvblNpemVSYW5nZSAgID0gc2l6ZV9yYW5nZSwNCisgICAg fTsNCisNCisgICAgaHIgPSBJRDNEMTJWaWRlb0RldmljZV9DcmVhdGVWaWRlb1Byb2Nlc3Nvcihj dHgtPnZpZGVvX2RldiwgY3R4LT5ncHVfbWFzaywgDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJm91dGRlc2MsIDEsICZpbmRlc2MsIA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZJSURfSUQzRDEyVmlkZW9Q cm9jZXNzb3IsIHBwX3ZwKTsNCisgICAgRFhIUl9DSEVDSyhociwgIkZhaWxlZCB0byBjcmVhdGUg RDNEMTIgVlAgKGZtdCAlZC0+JWQpLlxuIiwgKGludClpZm10LCAoaW50KW9mbXQpOw0KKw0KK2Zh aWw6DQorICAgIHJldHVybiBocjsNCit9DQorDQorc3RhdGljIGludCBmaWx0ZXJfZnJhbWUoQVZG aWx0ZXJMaW5rKiBpbmxpbmssIEFWRnJhbWUqIGluKSANCit7DQorICAgIEFWRmlsdGVyQ29udGV4 dCAqYXZjdHggPSBpbmxpbmstPmRzdDsNCisgICAgU2NhbGVEM2QxMkNvbnRleHQgKmN0eCA9IGF2 Y3R4LT5wcml2Ow0KKyAgICBBVkZpbHRlckxpbmsgICpvdXRsaW5rID0gYXZjdHgtPm91dHB1dHNb MF07DQorDQorICAgIEFWRnJhbWUgICAgICAgICAgICpvdXQgPSBOVUxMOw0KKyAgICBIUkVTVUxU ICAgICAgICAgICAgIGhyID0gMDsNCisgICAgaW50ICAgICAgICAgICAgICAgIHJldCA9IDA7DQor DQorICAgIEQzRDEyX1ZJREVPX1BST0NFU1NfT1VUUFVUX1NUUkVBTV9BUkdVTUVOVFMgb3V0X3N0 cmVhbSA9IHt9Ow0KKyAgICBEM0QxMl9WSURFT19QUk9DRVNTX0lOUFVUX1NUUkVBTV9BUkdVTUVO VFMgICBpbl9zdHJlYW0gPSB7fTsNCisNCisgICAgaWYgKGluLT5mb3JtYXQgIT0gQVZfUElYX0ZN VF9EM0QxMikgew0KKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJOb3QgRDNE MTIgaGFyZHdhcmUgaW5wdXRzLlxuIik7DQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwp Ow0KKyAgICB9DQorDQorICAgIC8vIEFsbG9jYXRlIG91dHB1dCBmcmFtZe+8jCBzZWUgZDNkMTJ2 YV9nZXRfYnVmZmVyKCkNCisgICAgb3V0ID0gZmZfZ2V0X3ZpZGVvX2J1ZmZlcihvdXRsaW5rLCBv dXRsaW5rLT53LCBvdXRsaW5rLT5oKTsNCisgICAgaWYgKCFvdXQpIHsNCisgICAgICAgIGF2X2xv ZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGFsbG9jYXRlIG91dHB1dCBmcmFtZS5c biIpOw0KKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisgICAgfQ0KKyAgICBhdl9m cmFtZV9jb3B5X3Byb3BzKG91dCwgaW4pOw0KKw0KKyAgICBociA9IElEM0QxMkNvbW1hbmRBbGxv Y2F0b3JfUmVzZXQoY3R4LT52cF9jb21tYW5kX2FsbG9jYXRvcik7DQorICAgIERYSFJfQ0hFQ0so aHIsICJGYWlsZWQgdG8gcmVzZXQgY29tbWFuZCBhbGxvY2F0b3IuXG4iKTsNCisgICAgaHIgPSBJ RDNEMTJWaWRlb1Byb2Nlc3NDb21tYW5kTGlzdF9SZXNldChjdHgtPnZwX2NvbW1hbmRfbGlzdCwg Y3R4LT52cF9jb21tYW5kX2FsbG9jYXRvcik7DQorICAgIERYSFJfQ0hFQ0soaHIsICJGYWlsZWQg dG8gcmVzZXQgdnAgY29tbWFuZCBsaXN0LlxuIik7DQorDQorICAgIG91dF9zdHJlYW0uT3V0cHV0 U3RyZWFtWzBdLnBUZXh0dXJlMkQgICA9ICgoQVZEM0QxMlZBRnJhbWUgKilvdXQtPmRhdGFbMF0p LT50ZXh0dXJlOw0KKyAgICBvdXRfc3RyZWFtLk91dHB1dFN0cmVhbVswXS5TdWJyZXNvdXJjZSAg PSAwOw0KKyAgICBTZXRSZWN0KCZvdXRfc3RyZWFtLlRhcmdldFJlY3RhbmdsZSwgMCwgMCwgb3V0 bGluay0+dywgb3V0bGluay0+aCk7DQorDQorICAgIGluX3N0cmVhbS5JbnB1dFN0cmVhbVswXS5w VGV4dHVyZTJEICAgICA9ICgoQVZEM0QxMlZBRnJhbWUgKilpbi0+ZGF0YVswXSktPnRleHR1cmU7 DQorICAgIGluX3N0cmVhbS5JbnB1dFN0cmVhbVswXS5TdWJyZXNvdXJjZSAgICA9IChpbnQpKGlu dHB0cl90KWluLT5kYXRhWzFdOw0KKyAgICBTZXRSZWN0KCZpbl9zdHJlYW0uVHJhbnNmb3JtLlNv dXJjZVJlY3RhbmdsZSwgMCwgMCwgaW5saW5rLT53LCBpbmxpbmstPmgpOw0KKyAgICBTZXRSZWN0 KCZpbl9zdHJlYW0uVHJhbnNmb3JtLkRlc3RpbmF0aW9uUmVjdGFuZ2xlLCAwLCAwLCBvdXRsaW5r LT53LCBvdXRsaW5rLT5oKTsNCisNCisgICAgSUQzRDEyVmlkZW9Qcm9jZXNzQ29tbWFuZExpc3Rf UHJvY2Vzc0ZyYW1lcyhjdHgtPnZwX2NvbW1hbmRfbGlzdCwgY3R4LT52cCwgJm91dF9zdHJlYW0s IDEsICZpbl9zdHJlYW0pOw0KKw0KKyAgICBociA9IElEM0QxMlZpZGVvUHJvY2Vzc0NvbW1hbmRM aXN0X0Nsb3NlKGN0eC0+dnBfY29tbWFuZF9saXN0KTsNCisgICAgRFhIUl9DSEVDSyhociwgIkZh aWxlZCB0byBjbG9zZSB2cCBjb21tYW5kIGxpc3QuXG4iKTsNCisgICAgSUQzRDEyQ29tbWFuZFF1 ZXVlX0V4ZWN1dGVDb21tYW5kTGlzdHMoY3R4LT52cF9jb21tYW5kX3F1ZXVlLCAxLCAmY3R4LT52 cF9jb21tYW5kX2xpc3QpOw0KKyAgICBociA9IHdhaXRfcXVldWVfaWRsZSgmY3R4LT52cF9zeW5j LCBjdHgtPnZwX2NvbW1hbmRfcXVldWUpOw0KKyAgICBEWEhSX0NIRUNLKGhyLCAiRmFpbGVkIHRv IHN5bmMgVlAgY29tbWFuZCBxdWV1ZS5cbiIpOw0KKw0KKyAgICBhdl9mcmFtZV9mcmVlKCZpbik7 DQorICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgb3V0KTsNCisNCitmYWlsOg0K KyAgICBhdl9mcmFtZV9mcmVlKCZpbik7DQorICAgIGF2X2ZyYW1lX2ZyZWUoJm91dCk7DQorICAg IHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOw0KK30NCisNCitzdGF0aWMgaW50IGNvbmZpZ19pbnB1 dChBVkZpbHRlckxpbmsgKmlubGluaykNCit7DQorICAgIEFWRmlsdGVyQ29udGV4dCAqYXZjdHgg PSBpbmxpbmstPmRzdDsNCisgICAgU2NhbGVEM2QxMkNvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2 Ow0KKyAgICBBVkhXRnJhbWVzQ29udGV4dCAqZnJhbWVzX2N0eDsNCisgICAgQVZIV0RldmljZUNv bnRleHQgKmRldmljZV9jdHg7DQorICAgIEZpbHRlckxpbmsgICAgICAgICppbmwgPSBmZl9maWx0 ZXJfbGluayhpbmxpbmspOw0KKw0KKyAgICBpZiAoIWlubC0+aHdfZnJhbWVzX2N0eCkgew0KKyAg ICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiTm90IEhXIGZyYW1lIGlucHV0cyBmb3Ig dmZfc2NhbGVfZDNkMTIuXG4iKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQor ICAgIH0NCisNCisgICAgZnJhbWVzX2N0eCA9IChBVkhXRnJhbWVzQ29udGV4dCAqKWlubC0+aHdf ZnJhbWVzX2N0eC0+ZGF0YTsNCisgICAgZGV2aWNlX2N0eCA9IChBVkhXRGV2aWNlQ29udGV4dCAq KWZyYW1lc19jdHgtPmRldmljZV9yZWYtPmRhdGE7DQorDQorICAgIGlmIChkZXZpY2VfY3R4LT50 eXBlICE9IEFWX0hXREVWSUNFX1RZUEVfRDNEMTJWQSkgew0KKyAgICAgICAgYXZfbG9nKGN0eCwg QVZfTE9HX0VSUk9SLCAiTm90IEQzRDEyVkEgaW5wdXRzIGZvciB2Zl9zY2FsZV9kM2QxMi5cbiIp Ow0KKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsNCisgICAgfQ0KKw0KKyAgICByZXR1 cm4gMDsNCit9DQorDQorc3RhdGljIGludCBjb25maWdfb3V0cHV0KEFWRmlsdGVyTGluayogb3V0 bGluaykgDQorew0KKyAgICBBVkZpbHRlckNvbnRleHQgKmF2Y3R4ID0gb3V0bGluay0+c3JjOw0K KyAgICBTY2FsZUQzZDEyQ29udGV4dCAqY3R4ID0gYXZjdHgtPnByaXY7DQorICAgIEFWRmlsdGVy TGluayAgICppbmxpbmsgPSBhdmN0eC0+aW5wdXRzWzBdOw0KKyAgICBGaWx0ZXJMaW5rICAgICAg ICAqaW5sID0gZmZfZmlsdGVyX2xpbmsoaW5saW5rKTsNCisgICAgRmlsdGVyTGluayAgICAgICAq b3V0bCA9IGZmX2ZpbHRlcl9saW5rKG91dGxpbmspOw0KKyAgICBBVkhXRnJhbWVzQ29udGV4dCAg ICAgICAqaW5fZnJhbWVzX2N0eDsNCisgICAgQVZIV0RldmljZUNvbnRleHQgICAgICAgKmluX2Rl dmljZV9jdHg7DQorICAgIEFWSFdGcmFtZXNDb250ZXh0ICAgICAgICpvdXRfZnJhbWVzX2N0eDsN CisgICAgRFhHSV9GT1JNQVQgICAgICAgICAgICAgZHhnaV9mb3JtYXQ7DQorICAgIEhSRVNVTFQg ICAgICAgICAgICAgICAgICBocjsNCisgICAgRDNEMTJfQ09NTUFORF9RVUVVRV9ERVNDIHF1ZXVl X2Rlc2M7DQorICAgIGRvdWJsZSAgICAgICAgICAgd19hZGogPSAxLjA7DQorDQorICAgIC8vIEV2 YWx1YXRlIG91dHB1dCBkaW1lbnNpb25zDQorICAgIGludCB3LCBoOw0KKyAgICBpbnQgcmV0ID0g ZmZfc2NhbGVfZXZhbF9kaW1lbnNpb25zKGN0eCwgY3R4LT53X2V4cHIsIGN0eC0+aF9leHByLCBp bmxpbmssIG91dGxpbmssICZ3LCAmaCk7DQorICAgIGlmIChyZXQgPCAwKSB7DQorICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBldmFsdWF0ZSBkaW1lbnNpb25z LlxuIik7DQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KKyAgICB9DQorDQorICAg IGZmX3NjYWxlX2FkanVzdF9kaW1lbnNpb25zKGlubGluaywgJncsICZoLCBjdHgtPmZvcmNlX29y aWdpbmFsX2FzcGVjdF9yYXRpbywgY3R4LT5mb3JjZV9kaXZpc2libGVfYnksIHdfYWRqKTsNCisN CisgICAgb3V0bGluay0+dyA9IHc7DQorICAgIG91dGxpbmstPmggPSBoOw0KKw0KKyAgICAvLyBS ZWZlcmVuY2UgdG8gaW5wdXQgZGV2aWNlIA0KKyAgICBpbl9mcmFtZXNfY3R4ICAgICAgID0gKEFW SFdGcmFtZXNDb250ZXh0ICopaW5sLT5od19mcmFtZXNfY3R4LT5kYXRhOw0KKyAgICBjdHgtPmF2 X2RldmljZV9yZWYgID0gYXZfYnVmZmVyX3JlZihpbl9mcmFtZXNfY3R4LT5kZXZpY2VfcmVmKTsN CisgICAgaW5fZGV2aWNlX2N0eCAgICAgICA9IChBVkhXRGV2aWNlQ29udGV4dCAqKWN0eC0+YXZf ZGV2aWNlX3JlZi0+ZGF0YTsNCisgICAgY3R4LT5pbnB1dF9od2N0eCAgICA9IChBVkQzRDEyVkFE ZXZpY2VDb250ZXh0ICopaW5fZGV2aWNlX2N0eC0+aHdjdHg7DQorICAgIGlmICghY3R4LT5pbnB1 dF9od2N0eC0+ZGV2aWNlKSB7DQorICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwg IkZhaWxlZCB0byBpbml0aWFsaXplIGZpbHRlciBkZXZpY2Ugb3IgY29udGV4dCBpbiBjb25maWdf cHJvcHMuXG4iKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQorICAgIH0NCisg ICAgSUQzRDEyRGV2aWNlX0FkZFJlZihjdHgtPmlucHV0X2h3Y3R4LT5kZXZpY2UpOw0KKyAgICBj dHgtPmQzZF9kZXZpY2VfcmVmID0gY3R4LT5pbnB1dF9od2N0eC0+ZGV2aWNlOw0KKw0KKyAgICAv LyBDcmVhdGUgb3V0cHV0IGh3IGZyYW1lIGNvbnRleHQNCisgICAgb3V0bC0+aHdfZnJhbWVzX2N0 eCA9IGF2X2h3ZnJhbWVfY3R4X2FsbG9jKGN0eC0+YXZfZGV2aWNlX3JlZik7DQorICAgIGlmICgh b3V0bC0+aHdfZnJhbWVzX2N0eCkgew0KKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9S LCAiRmFpbGVkIHRvIGFsbG9jIEhXIGZyYW1lIGNvbnRleHQgZm9yIG91dHB1dC5cbiIpOw0KKyAg ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisgICAgfQ0KKyAgICBvdXRfZnJhbWVzX2N0 eCA9IChBVkhXRnJhbWVzQ29udGV4dCopb3V0bC0+aHdfZnJhbWVzX2N0eC0+ZGF0YTsNCisgICAg b3V0X2ZyYW1lc19jdHgtPmZvcm1hdCAgICA9IGluX2ZyYW1lc19jdHgtPmZvcm1hdDsNCisgICAg b3V0X2ZyYW1lc19jdHgtPnN3X2Zvcm1hdCA9IGluX2ZyYW1lc19jdHgtPnN3X2Zvcm1hdDsNCisg ICAgb3V0X2ZyYW1lc19jdHgtPndpZHRoICAgICA9IHc7DQorICAgIG91dF9mcmFtZXNfY3R4LT5o ZWlnaHQgICAgPSBoOw0KKyAgICBvdXRfZnJhbWVzX2N0eC0+aW5pdGlhbF9wb29sX3NpemUgPSAw OyAgLy8gRHluYW1pYyBhbGxvY2F0aW9uDQorICAgIGZmX2ZpbHRlcl9pbml0X2h3X2ZyYW1lcyhh dmN0eCwgb3V0bGluaywgMTApOw0KKyAgICByZXQgPSBhdl9od2ZyYW1lX2N0eF9pbml0KG91dGwt Pmh3X2ZyYW1lc19jdHgpOw0KKyAgICBpZiAocmV0IDwgMCkgew0KKyAgICAgICAgYXZfbG9nKGN0 eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGludCBIVyBmcmFtZSBjb250ZXh0IGZvciBvdXRw dXQuXG4iKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7DQorICAgIH0NCisNCisg ICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfVkVSQk9TRSwgImZvcm1hdD0lcywgJWR4JWQgLT4gJWR4 JWQuXG4iLA0KKyAgICAgICAgICAgIGF2X2dldF9waXhfZm10X25hbWUoaW5fZnJhbWVzX2N0eC0+ c3dfZm9ybWF0KSwNCisgICAgICAgICAgICBpbmxpbmstPncsIGlubGluay0+aCwgb3V0bGluay0+ dywgb3V0bGluay0+aCk7DQorDQorICAgIGhyID0gSUQzRDEyRGV2aWNlX1F1ZXJ5SW50ZXJmYWNl KGN0eC0+ZDNkX2RldmljZV9yZWYsICZJSURfSUQzRDEyVmlkZW9EZXZpY2UsICh2b2lkICoqKSZj dHgtPnZpZGVvX2Rldik7DQorICAgIERYSFJfQ0hFQ0soaHIsICAiRmFpbGVkIHRvIGNyZWF0ZSBE M0QxMlZpZGVvRGV2aWNlLlxuIikNCisNCisgICAgcXVldWVfZGVzYyA9IChEM0QxMl9DT01NQU5E X1FVRVVFX0RFU0Mpew0KKyAgICAgICAgLlR5cGUgPSBEM0QxMl9DT01NQU5EX0xJU1RfVFlQRV9W SURFT19QUk9DRVNTLA0KKyAgICAgICAgLk5vZGVNYXNrID0gY3R4LT5ncHVfbWFzaywNCisgICAg fTsNCisgICAgaHIgPSBJRDNEMTJEZXZpY2VfQ3JlYXRlQ29tbWFuZFF1ZXVlKGN0eC0+ZDNkX2Rl dmljZV9yZWYsICZxdWV1ZV9kZXNjLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmSUlEX0lEM0QxMkNvbW1hbmRRdWV1ZSwgJmN0eC0+dnBfY29tbWFuZF9xdWV1ZSk7 DQorICAgIERYSFJfQ0hFQ0soaHIsICJGcmFpbGVkIHRvIGNyZWF0ZSBjb21tYW5kIHF1ZXVlLlxu Iik7DQorDQorICAgIGhyID0gSUQzRDEyRGV2aWNlX0NyZWF0ZUZlbmNlKGN0eC0+ZDNkX2Rldmlj ZV9yZWYsIChjdHgtPnZwX3N5bmMuZmVuY2VfdmFsdWUgPSAwKSwgDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEM0QxMl9GRU5DRV9GTEFHX05PTkUsIA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJklJRF9JRDNEMTJGZW5jZSwgJmN0eC0+dnBfc3luYy5mZW5jZSk7 DQorICAgIERYSFJfQ0hFQ0soaHIsICJGYWlsZWQgdG8gY3JlYXRlIHZwIGZlbmNlLlxuIik7DQor ICAgIGN0eC0+dnBfc3luYy5ldmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxTRSwg TlVMTCk7DQorICAgIENPTkRfQ0hFQ0soIWN0eC0+dnBfc3luYy5ldmVudCwgIkZhaWxlZCB0byBj cmVhdGUgdnAgc3luYyBldmVudC5cbiIpOw0KKw0KKyAgICBociA9IElEM0QxMkRldmljZV9DcmVh dGVDb21tYW5kQWxsb2NhdG9yKGN0eC0+ZDNkX2RldmljZV9yZWYsIEQzRDEyX0NPTU1BTkRfTElT VF9UWVBFX1ZJREVPX1BST0NFU1MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmSUlEX0lEM0QxMkNvbW1hbmRBbGxvY2F0b3IsICZjdHgtPnZwX2NvbW1hbmRf YWxsb2NhdG9yKTsNCisgICAgRFhIUl9DSEVDSyhociwgIkZyYWlsZWQgdG8gY3JlYXRlIGNvbW1h bmQgYWxsb2NhdG9yLlxuIik7DQorDQorICAgIGhyID0gSUQzRDEyRGV2aWNlX0NyZWF0ZUNvbW1h bmRMaXN0KGN0eC0+ZDNkX2RldmljZV9yZWYsIGN0eC0+Z3B1X21hc2ssIEQzRDEyX0NPTU1BTkRf TElTVF9UWVBFX1ZJREVPX1BST0NFU1MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC0+dnBfY29tbWFuZF9hbGxvY2F0b3IsIE5VTEwsDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZJSURfSUQzRDEyVmlkZW9Qcm9jZXNzQ29tbWFu ZExpc3QsICZjdHgtPnZwX2NvbW1hbmRfbGlzdCk7DQorICAgIERYSFJfQ0hFQ0soaHIsICJGcmFp bGVkIHRvIGNyZWF0ZSBWUCBjb21tYW5kIGxpc3QuXG4iKTsNCisNCisgICAgaHIgPSBJRDNEMTJW aWRlb1Byb2Nlc3NDb21tYW5kTGlzdF9DbG9zZShjdHgtPnZwX2NvbW1hbmRfbGlzdCk7DQorICAg IERYSFJfQ0hFQ0soaHIsICJGcmFpbGVkIHRvIGNsb3NlIFZQIGNvbW1hbmQgbGlzdC5cbiIpOw0K Kw0KKyAgICBJRDNEMTJDb21tYW5kUXVldWVfRXhlY3V0ZUNvbW1hbmRMaXN0cyhjdHgtPnZwX2Nv bW1hbmRfcXVldWUsIDEsICZjdHgtPnZwX2NvbW1hbmRfbGlzdCk7DQorICAgIGhyID0gd2FpdF9x dWV1ZV9pZGxlKCZjdHgtPnZwX3N5bmMsIGN0eC0+dnBfY29tbWFuZF9xdWV1ZSk7DQorICAgIERY SFJfQ0hFQ0soaHIsICJGYWlsZWQgdG8gc3luYyBWUCBjb21tYW5kIHF1ZXVlLlxuIik7DQorDQor ICAgIGR4Z2lfZm9ybWF0ID0gKChBVkQzRDEyVkFGcmFtZXNDb250ZXh0KikoaW5fZnJhbWVzX2N0 eC0+aHdjdHgpKS0+Zm9ybWF0Ow0KKyAgICBpZiAoY3JlYXRlX3ZpZGVvX3Byb2Nlc3NvcihhdmN0 eCwgJmN0eC0+dnAsIGR4Z2lfZm9ybWF0LCBkeGdpX2Zvcm1hdCkgPCAwKSB7DQorICAgICAgICBn b3RvIGZhaWw7DQorICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQorDQorZmFpbDoNCisgICAgcmV0 dXJuIEFWRVJST1JfRVhURVJOQUw7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHNjYWxlX2QzZDEyX3Vu aW5pdChBVkZpbHRlckNvbnRleHQqIGF2Y3R4KQ0KK3sNCisgICAgU2NhbGVEM2QxMkNvbnRleHQg KmN0eCA9IGF2Y3R4LT5wcml2Ow0KKw0KKyAgICBEWF9SRUxFQVNFKGN0eC0+dnAsICAgICAgICAg ICAgICAgICBJRDNEMTJWaWRlb1Byb2Nlc3Nvcl9SZWxlYXNlKTsNCisgICAgRFhfUkVMRUFTRShj dHgtPnZwX2NvbW1hbmRfbGlzdCwgICAgSUQzRDEyVmlkZW9Qcm9jZXNzQ29tbWFuZExpc3RfUmVs ZWFzZSk7DQorICAgIERYX1JFTEVBU0UoY3R4LT52cF9jb21tYW5kX2FsbG9jYXRvciwgICBJRDNE MTJDb21tYW5kQWxsb2NhdG9yX1JlbGVhc2UpOw0KKyAgICBEWF9SRUxFQVNFKGN0eC0+dnBfY29t bWFuZF9xdWV1ZSwgICBJRDNEMTJDb21tYW5kUXVldWVfUmVsZWFzZSk7DQorICAgIERYX1JFTEVB U0UoY3R4LT52cF9zeW5jLmZlbmNlLCAgICAgIElEM0QxMkZlbmNlX1JlbGVhc2UpOw0KKyAgICBE WF9SRUxFQVNFKGN0eC0+dnBfc3luYy5ldmVudCwgICAgICBDbG9zZUhhbmRsZSk7DQorICAgIERY X1JFTEVBU0UoY3R4LT52aWRlb19kZXYsICAgICAgICAgIElEM0QxMlZpZGVvRGV2aWNlX1JlbGVh c2UpOw0KKyAgICBEWF9SRUxFQVNFKGN0eC0+ZDNkX2RldmljZV9yZWYsICAgICBJRDNEMTJEZXZp Y2VfUmVsZWFzZSk7DQorDQorICAgIGF2X2J1ZmZlcl91bnJlZigmY3R4LT5hdl9kZXZpY2VfcmVm KTsNCit9DQorDQorc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIHNjYWxlX2QzZDEyX2lucHV0c1td ID0gew0KKyAgICB7DQorICAgICAgICAubmFtZSAgICAgICAgID0gImRlZmF1bHQiLA0KKyAgICAg ICAgLnR5cGUgICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywNCisgICAgICAgIC5maWx0ZXJf ZnJhbWUgPSAmZmlsdGVyX2ZyYW1lLA0KKyAgICAgICAgLmNvbmZpZ19wcm9wcyA9ICZjb25maWdf aW5wdXQsDQorICAgIH0sDQorfTsNCisNCitzdGF0aWMgY29uc3QgQVZGaWx0ZXJQYWQgc2NhbGVf ZDNkMTJfb3V0cHV0c1tdID0gew0KKyAgICB7DQorICAgICAgICAubmFtZSAgICAgICAgID0gImRl ZmF1bHQiLA0KKyAgICAgICAgLnR5cGUgICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywNCisg ICAgICAgIC5jb25maWdfcHJvcHMgPSAmY29uZmlnX291dHB1dCwNCisgICAgfSwNCit9Ow0KKw0K KyNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKFNjYWxlRDNkMTJDb250ZXh0LCB4KQ0KKyNkZWZp bmUgRkxBR1MgKEFWX09QVF9GTEFHX0ZJTFRFUklOR19QQVJBTSB8IEFWX09QVF9GTEFHX1ZJREVP X1BBUkFNKQ0KK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBzY2FsZV9kM2QxMl9vcHRpb25zW10gPSB7 DQorICAgIHsgInciLCAiT3V0cHV0IHZpZGVvIG91dHB1dF93aWR0aCIsDQorICAgICAgICAgICAg T0ZGU0VUKHdfZXhwciksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHIgPSAiaXcifSwgLmZsYWdz ID0gRkxBR1MgfSwNCisgICAgeyAiaCIsICJPdXRwdXQgdmlkZW8gb3V0cHV0X2hlaWdodCIsDQor ICAgICAgICAgICAgT0ZGU0VUKGhfZXhwciksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHIgPSAi aWgifSwgLmZsYWdzID0gRkxBR1MgfSwNCisgICAgeyAiZm9yY2Vfb3JpZ2luYWxfYXNwZWN0X3Jh dGlvIiwgImRlY3JlYXNlIG9yIGluY3JlYXNlIHcvaCBpZiBuZWNlc3NhcnkgdG8ga2VlcCB0aGUg b3JpZ2luYWwgQVIiLA0KKyAgICAgICAgICAgIE9GRlNFVChmb3JjZV9vcmlnaW5hbF9hc3BlY3Rf cmF0aW8pLCBBVl9PUFRfVFlQRV9JTlQsIHsgLmk2NCA9IDB9LCAwLCAyLCBGTEFHUywgLnVuaXQg PSAiZm9yY2Vfb2FyIiB9LA0KKyAgICB7ICJkaXNhYmxlIiwgIE5VTEwsIDAsIEFWX09QVF9UWVBF X0NPTlNULCB7Lmk2NCA9IDAgfSwgMCwgMCwgRkxBR1MsIC51bml0ID0gImZvcmNlX29hciIgfSwN CisgICAgeyAiZGVjcmVhc2UiLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSAx IH0sIDAsIDAsIEZMQUdTLCAudW5pdCA9ICJmb3JjZV9vYXIiIH0sDQorICAgIHsgImluY3JlYXNl IiwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMiB9LCAwLCAwLCBGTEFHUywg LnVuaXQgPSAiZm9yY2Vfb2FyIiB9LA0KKyAgICB7ICJmb3JjZV9kaXZpc2libGVfYnkiLCAiZW5m b3JjZSB0aGF0IHRoZSBvdXRwdXQgcmVzb2x1dGlvbiBpcyBkaXZpc2libGUgYnkgYSBkZWZpbmVk IGludGVnZXIgd2hlbiBmb3JjZV9vcmlnaW5hbF9hc3BlY3RfcmF0aW8gaXMgdXNlZCIsDQorICAg ICAgICAgICAgT0ZGU0VUKGZvcmNlX2RpdmlzaWJsZV9ieSksIEFWX09QVF9UWVBFX0lOVCwgeyAu aTY0ID0gMX0sIDEsIDI1NiwgRkxBR1MgfSwNCisgICAgeyBOVUxMIH0NCit9Ow0KKw0KKw0KK0FW RklMVEVSX0RFRklORV9DTEFTUyhzY2FsZV9kM2QxMik7DQorDQorY29uc3QgRkZGaWx0ZXIgZmZf dmZfc2NhbGVfZDNkMTIgPSB7DQorICAgIC5wLm5hbWUgICAgICAgICA9ICJzY2FsZV9kM2QxMiIs DQorICAgIC5wLmRlc2NyaXB0aW9uICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJTY2FsZSB2aWRl byB1c2luZyBEM0QxMiBWUFAiKSwNCisgICAgLnByaXZfc2l6ZSAgICAgID0gc2l6ZW9mKFNjYWxl RDNkMTJDb250ZXh0KSwNCisgICAgLnAucHJpdl9jbGFzcyAgID0gJnNjYWxlX2QzZDEyX2NsYXNz LA0KKyAgICAuaW5pdCAgICAgICAgICAgPSBzY2FsZV9kM2QxMl9pbml0LA0KKyAgICAudW5pbml0 ICAgICAgICAgPSBzY2FsZV9kM2QxMl91bmluaXQsDQorICAgIEZJTFRFUl9JTlBVVFMoc2NhbGVf ZDNkMTJfaW5wdXRzKSwNCisgICAgRklMVEVSX09VVFBVVFMoc2NhbGVfZDNkMTJfb3V0cHV0cyks DQorICAgIEZJTFRFUl9TSU5HTEVfUElYRk1UKEFWX1BJWF9GTVRfRDNEMTIpLA0KKyAgICAucC5m bGFncyAgICAgICAgPSBBVkZJTFRFUl9GTEFHX1NVUFBPUlRfVElNRUxJTkVfR0VORVJJQywNCisg ICAgLmZsYWdzX2ludGVybmFsID0gRkZfRklMVEVSX0ZMQUdfSFdGUkFNRV9BV0FSRSwNCit9Ow0K LS0gDQoyLjQ4LjENCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdCAtLSBmZm1wZWctZGV2ZWxAZmZtcGVnLm9y ZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIGZmbXBlZy1kZXZlbC1sZWF2ZUBmZm1w ZWcub3JnCg==