Received: by 2002:a05:7412:f690:b0:e2:908c:2ebd with SMTP id ej16csp863147rdb; Fri, 20 Oct 2023 01:16:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGmsH9KAyNeTs3cm2O3tgBOflqXYdLlMJnlY7vBApg6J1SlL1DsDljVl9JS76qEPjLmcRMP X-Received: by 2002:a17:902:d502:b0:1c4:4dbc:92bc with SMTP id b2-20020a170902d50200b001c44dbc92bcmr1276033plg.16.1697789799872; Fri, 20 Oct 2023 01:16:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697789799; cv=none; d=google.com; s=arc-20160816; b=tcocooh/Qmbmz1bXvBayN7YXLQv/6zcHNFT0S81ony6xSVEieAO8vyhNrh5JHitrK5 IG/T9CCKHyLPZa0Fbn/UPDVNIr3pKL49XSLOyCz/iZIc5N7JPYYcNKjhK6YekOK8V6Ra /LTnNZX5Ok4hRzQBHguVjUwdm+ts0wtaHgp7s5g0X79wUpMFiXQc0vEyNHQ1zbyYFQuU CKGB4vQrhX8WQnYciGbFY+JExBFGf9+cLaSG+9+1PeWeUpWbOMPFTQIKuy02eOMXTS0+ D0PNKIaA6dQnhutBi+ldg0Elx0B+1uy9wMcqGKcynQGziMA7qnd83r/1oKuVYCU9wwg8 AlRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:message-id:date:thread-index :thread-topic:subject:cc:to:from; bh=QkdQNLQtbZ4uwDo5Wkaz2e8u1b+QQM+W6BZr8WTtExM=; fh=pggw3tdzg3Kt7Y8/o0crNP+mN6hN20FMXp+thoaTxgY=; b=A7iigvTdB3A1EQ2IsI3gnLszdX3pFasg+DcaT/P511S9585n+Li8aYW1YkhO4OfBKS QYHXmR9S+czBGwAltwn/nyxLsMnilwT7FcTS8kvQq3QMNXvQ3MtgsXpSGWqbasD1YQTQ iR25paiIDZm0R9NRttK2zAsi6HE0Ytn20OipFmKyzI6PM9tpELY/mPUhl7A++gZrN69Z uCq8BgaWQrxB4TmWpUxVuylwPjvNVycpH3/NgJeBLY/rPn9bJXiG5p3BlJwQanWkx6yG VWtSpFurJMf8vISGuLvx07IuGrTUcdflNCO+tHBuW2B6snMk1k7+QfTpOLp/HLBO/9Un X7Bw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id c8-20020a170902d48800b001ca89920d2fsi1342799plg.588.2023.10.20.01.16.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Oct 2023 01:16:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 2A91F803954B; Fri, 20 Oct 2023 01:15:43 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235651AbjJTIPH (ORCPT + 99 others); Fri, 20 Oct 2023 04:15:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233391AbjJTIPG (ORCPT ); Fri, 20 Oct 2023 04:15:06 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CB5541A6; Fri, 20 Oct 2023 01:15:01 -0700 (PDT) X-SpamFilter-By: ArmorX SpamTrap 5.78 with qID 39K8DmNW23983131, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36505.realtek.com.tw[172.21.6.25]) by rtits2.realtek.com.tw (8.15.2/2.93/5.92) with ESMTPS id 39K8DmNW23983131 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 20 Oct 2023 16:13:48 +0800 Received: from RTEXMBS03.realtek.com.tw (172.21.6.96) by RTEXH36505.realtek.com.tw (172.21.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.32; Fri, 20 Oct 2023 16:13:48 +0800 Received: from RTEXMBS01.realtek.com.tw (172.21.6.94) by RTEXMBS03.realtek.com.tw (172.21.6.96) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.7; Fri, 20 Oct 2023 16:13:46 +0800 Received: from RTEXMBS01.realtek.com.tw ([fe80::9cb8:8d5:b6b3:213b]) by RTEXMBS01.realtek.com.tw ([fe80::9cb8:8d5:b6b3:213b%5]) with mapi id 15.01.2375.007; Fri, 20 Oct 2023 16:13:46 +0800 From: Ricky WU To: "arnd@arndb.de" , "gregkh@linuxfoundation.org" , Ricky WU , "linux-kernel@vger.kernel.org" CC: "ulf.hansson@linaro.org" , "frank.li@vivo.com" , "u.kleine-koenig@pengutronix.de" , "yangyingliang@huawei.com" , "linux-mmc@vger.kernel.org" Subject: [PATCH v3 1/2] misc: rtsx: add to support new card reader rts5264 Thread-Topic: [PATCH v3 1/2] misc: rtsx: add to support new card reader rts5264 Thread-Index: AQHaAynsmhTs26pH702PHG8h5layhg== Date: Fri, 20 Oct 2023 08:13:46 +0000 Message-ID: <121ced554a9e4f4791018e8f6a72d586@realtek.com> Accept-Language: zh-TW, en-US Content-Language: zh-TW x-originating-ip: [172.22.81.102] x-kse-serverinfo: RTEXMBS03.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-ServerInfo: RTEXH36505.realtek.com.tw, 9 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-Antivirus-Interceptor-Info: fallback X-KSE-AntiSpam-Interceptor-Info: fallback X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Fri, 20 Oct 2023 01:15:43 -0700 (PDT) SW4gb3JkZXIgdG8gc3VwcG9ydCBuZXcgY2hpcCBydHM1MjY0LCB0aGUgZGVmaW5pdGlvbnMgb2Yg c29tZSBpbnRlcm5hbA0KcmVnaXN0ZXJzIGFuZCB3b3JrZmxvdyBoYXZlIHRvIGJlIG1vZGlmaWVk Lg0KQWRkZWQgcnRzNTI2NC5jIHJ0czUyNjQuaCBmb3IgaW5kZXBlbmRlbnQgZnVuY3Rpb25zIG9m IHRoZSBuZXcgY2hpcCBydHM1MjY0DQoNClNpZ25lZC1vZmYtYnk6IFJpY2t5IFd1IDxyaWNreV93 dUByZWFsdGVrLmNvbT4NCi0tLQ0KdjI6IHJlbW92ZWQgaWMgdmVyc2lvbiBjaGVjaw0KdjM6IHNw bGl0IHRoZSBwYXRjaCB1cCB3aXRoIGNhcmRyZWFkZXIgcGFydCBhbmQgbW1jIHBhcnQNCi0tLQ0K IGRyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL01ha2VmaWxlICAgfCAgIDIgKy0NCiBkcml2ZXJzL21p c2MvY2FyZHJlYWRlci9ydHM1MjY0LmMgIHwgODg2ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrDQogZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI2NC5oICB8IDI3OCArKysrKysrKysN CiBkcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5jIHwgIDMwICstDQogZHJpdmVycy9t aXNjL2NhcmRyZWFkZXIvcnRzeF9wY3IuaCB8ICAgMSArDQogaW5jbHVkZS9saW51eC9ydHN4X3Bj aS5oICAgICAgICAgICB8ICAgOCArDQogNiBmaWxlcyBjaGFuZ2VkLCAxMTk5IGluc2VydGlvbnMo KyksIDYgZGVsZXRpb25zKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWlzYy9jYXJk cmVhZGVyL3J0czUyNjQuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21pc2MvY2FyZHJl YWRlci9ydHM1MjY0LmgNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL01h a2VmaWxlIGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvTWFrZWZpbGUNCmluZGV4IDg5NTEyODQ3 NWQ4My4uMWUxYmNhNmIwYjIyIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIv TWFrZWZpbGUNCisrKyBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL01ha2VmaWxlDQpAQCAtMSw1 ICsxLDUgQEANCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCiBvYmot JChDT05GSUdfTUlTQ19BTENPUl9QQ0kpCSs9IGFsY29yX3BjaS5vDQogb2JqLSQoQ09ORklHX01J U0NfUlRTWF9QQ0kpCSs9IHJ0c3hfcGNpLm8NCi1ydHN4X3BjaS1vYmpzIDo9IHJ0c3hfcGNyLm8g cnRzNTIwOS5vIHJ0czUyMjkubyBydGw4NDExLm8gcnRzNTIyNy5vIHJ0czUyNDkubyBydHM1MjYw Lm8gcnRzNTI2MS5vIHJ0czUyMjgubw0KK3J0c3hfcGNpLW9ianMgOj0gcnRzeF9wY3IubyBydHM1 MjA5Lm8gcnRzNTIyOS5vIHJ0bDg0MTEubyBydHM1MjI3Lm8gcnRzNTI0OS5vIHJ0czUyNjAubyBy dHM1MjYxLm8gcnRzNTIyOC5vIHJ0czUyNjQubw0KIG9iai0kKENPTkZJR19NSVNDX1JUU1hfVVNC KQkrPSBydHN4X3VzYi5vDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRz NTI2NC5jIGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI2NC5jDQpuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi44YmU0ZWQ3ZDlkNDcNCi0tLSAvZGV2L251bGwN CisrKyBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNjQuYw0KQEAgLTAsMCArMSw4ODYg QEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcg0KKy8qIERy aXZlciBmb3IgUmVhbHRlayBQQ0ktRXhwcmVzcyBjYXJkIHJlYWRlcg0KKyAqDQorICogQ29weXJp Z2h0KGMpIDIwMDktMjAxMyBSZWFsdGVrIFNlbWljb25kdWN0b3IgQ29ycC4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCisgKg0KKyAqIEF1dGhvcjoNCisgKiAgIFJpY2t5IFd1IDxyaWNreV93dUByZWFs dGVrLmNvbT4NCisgKi8NCisNCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQorI2luY2x1ZGUg PGxpbnV4L2RlbGF5Lmg+DQorI2luY2x1ZGUgPGxpbnV4L3J0c3hfcGNpLmg+DQorDQorI2luY2x1 ZGUgInJ0czUyNjQuaCINCisjaW5jbHVkZSAicnRzeF9wY3IuaCINCisNCitzdGF0aWMgdTggcnRz NTI2NF9nZXRfaWNfdmVyc2lvbihzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQorCXU4IHZhbDsN CisNCisJcnRzeF9wY2lfcmVhZF9yZWdpc3RlcihwY3IsIERVTU1ZX1JFR19SRVNFVF8wLCAmdmFs KTsNCisJcmV0dXJuIHZhbCAmIDB4MEY7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfZmls bF9kcml2aW5nKHN0cnVjdCBydHN4X3BjciAqcGNyLCB1OCB2b2x0YWdlKQ0KK3sNCisJdTggZHJp dmluZ18zdjNbNF1bM10gPSB7DQorCQl7MHg4OCwgMHg4OCwgMHg4OH0sDQorCQl7MHg3NywgMHg3 NywgMHg3N30sDQorCQl7MHg5OSwgMHg5OSwgMHg5OX0sDQorCQl7MHg2NiwgMHg2NiwgMHg2Nn0s DQorCX07DQorCXU4IGRyaXZpbmdfMXY4WzRdWzNdID0gew0KKwkJezB4OTksIDB4OTksIDB4OTl9 LA0KKwkJezB4NzcsIDB4NzcsIDB4Nzd9LA0KKwkJezB4QkIsIDB4QkIsIDB4QkJ9LA0KKwkJezB4 NjUsIDB4NjUsIDB4NjV9LA0KKwl9Ow0KKwl1OCAoKmRyaXZpbmcpWzNdLCBkcml2ZV9zZWw7DQor DQorCWlmICh2b2x0YWdlID09IE9VVFBVVF8zVjMpIHsNCisJCWRyaXZpbmcgPSBkcml2aW5nXzN2 MzsNCisJCWRyaXZlX3NlbCA9IHBjci0+c2QzMF9kcml2ZV9zZWxfM3YzOw0KKwl9IGVsc2Ugew0K KwkJZHJpdmluZyA9IGRyaXZpbmdfMXY4Ow0KKwkJZHJpdmVfc2VsID0gcGNyLT5zZDMwX2RyaXZl X3NlbF8xdjg7DQorCX0NCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRDMwX0NM S19EUklWRV9TRUwsDQorCQkJMHhGRiwgZHJpdmluZ1tkcml2ZV9zZWxdWzBdKTsNCisJcnRzeF9w Y2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRDMwX0NNRF9EUklWRV9TRUwsDQorCQkJMHhGRiwgZHJp dmluZ1tkcml2ZV9zZWxdWzFdKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRDMw X0RBVF9EUklWRV9TRUwsDQorCQkJMHhGRiwgZHJpdmluZ1tkcml2ZV9zZWxdWzJdKTsNCit9DQor DQorc3RhdGljIHZvaWQgcnRzNTI2NF9mb3JjZV9wb3dlcl9kb3duKHN0cnVjdCBydHN4X3BjciAq cGNyLCB1OCBwbV9zdGF0ZSwgYm9vbCBydW50aW1lKQ0KK3sNCisJLyogU2V0IHJlbGlua190aW1l IHRvIDAgKi8NCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBBVVRPTE9BRF9DRkdfQkFT RSArIDEsIE1BU0tfOF9CSVRfREVGLCAwKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNy LCBBVVRPTE9BRF9DRkdfQkFTRSArIDIsIE1BU0tfOF9CSVRfREVGLCAwKTsNCisJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBBVVRPTE9BRF9DRkdfQkFTRSArIDMsDQorCQkJCVJFTElOS19U SU1FX01BU0ssIDApOw0KKw0KKwlpZiAocG1fc3RhdGUgPT0gSE9TVF9FTlRFUl9TMykNCisJCXJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdfcG1fY3RybDMsDQorCQkJCQlEM19E RUxJTktfTU9ERV9FTiwgRDNfREVMSU5LX01PREVfRU4pOw0KKw0KKwlpZiAoIXJ1bnRpbWUpIHsN CisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9BVVRPTE9BRF9DRkcxLA0K KwkJCQlDRF9SRVNVTUVfRU5fTUFTSywgMCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIHBjci0+cmVnX3BtX2N0cmwzLCAweDAxLCAweDAwKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3Jl Z2lzdGVyKHBjciwgUlRTNTI2NF9SRUdfUE1FX0ZPUkNFX0NUTCwNCisJCQkJRk9SQ0VfUE1fQ09O VFJPTCB8IEZPUkNFX1BNX1ZBTFVFLCBGT1JDRV9QTV9DT05UUk9MKTsNCisJfSBlbHNlIHsNCisJ CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9SRUdfUE1FX0ZPUkNFX0NUTCwN CisJCQkJRk9SQ0VfUE1fQ09OVFJPTCB8IEZPUkNFX1BNX1ZBTFVFLCAwKTsNCisJCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdfcG1fY3RybDMsIDB4MDEsIDB4MDEpOw0KKwkJ cnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBwY3ItPnJlZ19wbV9jdHJsMywNCisJCQkJCUQz X0RFTElOS19NT0RFX0VOLCAwKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRT NTI2NF9GV19DVEwsDQorCQkJCVJUUzUyNjRfSU5GT1JNX1JURDNfQ09MRCwgUlRTNTI2NF9JTkZP Uk1fUlREM19DT0xEKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9B VVRPTE9BRF9DRkc0LA0KKwkJCQlSVFM1MjY0X0ZPUkNFX1BSU05UX0xPVywgUlRTNTI2NF9GT1JD RV9QUlNOVF9MT1cpOw0KKwl9DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRT NTI2NF9SRUdfRlBEQ1RMLA0KKwkJU1NDX1BPV0VSX0RPV04sIFNTQ19QT1dFUl9ET1dOKTsNCit9 DQorDQorc3RhdGljIGludCBydHM1MjY0X2VuYWJsZV9hdXRvX2JsaW5rKHN0cnVjdCBydHN4X3Bj ciAqcGNyKQ0KK3sNCisJcmV0dXJuIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgT0xUX0xF RF9DVEwsDQorCQlMRURfU0hJTkVfTUFTSywgTEVEX1NISU5FX0VOKTsNCit9DQorDQorc3RhdGlj IGludCBydHM1MjY0X2Rpc2FibGVfYXV0b19ibGluayhzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7 DQorCXJldHVybiBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIE9MVF9MRURfQ1RMLA0KKwkJ TEVEX1NISU5FX01BU0ssIExFRF9TSElORV9ESVNBQkxFKTsNCit9DQorDQorc3RhdGljIGludCBy dHM1MjY0X3R1cm5fb25fbGVkKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sNCisJcmV0dXJuIHJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgR1BJT19DVEwsDQorCQkweDAyLCAweDAyKTsNCit9 DQorDQorc3RhdGljIGludCBydHM1MjY0X3R1cm5fb2ZmX2xlZChzdHJ1Y3QgcnRzeF9wY3IgKnBj cikNCit7DQorCXJldHVybiBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEdQSU9fQ1RMLA0K KwkJMHgwMiwgMHgwMCk7DQorfQ0KKw0KKy8qIFNEIFB1bGwgQ29udHJvbCBFbmFibGU6DQorICog ICAgIFNEX0RBVFszOjBdID09PiBwdWxsIHVwDQorICogICAgIFNEX0NEICAgICAgID09PiBwdWxs IHVwDQorICogICAgIFNEX1dQICAgICAgID09PiBwdWxsIHVwDQorICogICAgIFNEX0NNRCAgICAg ID09PiBwdWxsIHVwDQorICogICAgIFNEX0NMSyAgICAgID09PiBwdWxsIGRvd24NCisgKi8NCitz dGF0aWMgY29uc3QgdTMyIHJ0czUyNjRfc2RfcHVsbF9jdGxfZW5hYmxlX3RibFtdID0gew0KKwlS VFNYX1JFR19QQUlSKENBUkRfUFVMTF9DVEwyLCAweEFBKSwNCisJUlRTWF9SRUdfUEFJUihDQVJE X1BVTExfQ1RMMywgMHhFOSksDQorCTAsDQorfTsNCisNCisvKiBTRCBQdWxsIENvbnRyb2wgRGlz YWJsZToNCisgKiAgICAgU0RfREFUWzM6MF0gPT0+IHB1bGwgZG93bg0KKyAqICAgICBTRF9DRCAg ICAgICA9PT4gcHVsbCB1cA0KKyAqICAgICBTRF9XUCAgICAgICA9PT4gcHVsbCBkb3duDQorICog ICAgIFNEX0NNRCAgICAgID09PiBwdWxsIGRvd24NCisgKiAgICAgU0RfQ0xLICAgICAgPT0+IHB1 bGwgZG93bg0KKyAqLw0KK3N0YXRpYyBjb25zdCB1MzIgcnRzNTI2NF9zZF9wdWxsX2N0bF9kaXNh YmxlX3RibFtdID0gew0KKwlSVFNYX1JFR19QQUlSKENBUkRfUFVMTF9DVEwyLCAweDU1KSwNCisJ UlRTWF9SRUdfUEFJUihDQVJEX1BVTExfQ1RMMywgMHhENSksDQorCTAsDQorfTsNCisNCitzdGF0 aWMgaW50IHJ0czUyNjRfc2Rfc2V0X3NhbXBsZV9wdXNoX3RpbWluZ19zZDMwKHN0cnVjdCBydHN4 X3BjciAqcGNyKQ0KK3sNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRF9DRkcxLCBT RF9NT0RFX1NFTEVDVF9NQVNLDQorCQl8IFNEX0FTWU5DX0ZJRk9fTk9UX1JTVCwgU0RfMzBfTU9E RSB8IFNEX0FTWU5DX0ZJRk9fTk9UX1JTVCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgQ0xLX0NUTCwgQ0xLX0xPV19GUkVRLCBDTEtfTE9XX0ZSRVEpOw0KKwlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIENBUkRfQ0xLX1NPVVJDRSwgMHhGRiwNCisJCQlDUkNfVkFSX0NMSzAg fCBTRDMwX0ZJWF9DTEsgfCBTQU1QTEVfVkFSX0NMSzEpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdp c3RlcihwY3IsIENMS19DVEwsIENMS19MT1dfRlJFUSwgMCk7DQorDQorCXJldHVybiAwOw0KK30N CisNCitzdGF0aWMgaW50IHJ0czUyNjRfY2FyZF9wb3dlcl9vbihzdHJ1Y3QgcnRzeF9wY3IgKnBj ciwgaW50IGNhcmQpDQorew0KKwlzdHJ1Y3QgcnRzeF9jcl9vcHRpb24gKm9wdGlvbiA9ICZwY3It Pm9wdGlvbjsNCisNCisJaWYgKG9wdGlvbi0+b2NwX2VuKQ0KKwkJcnRzeF9wY2lfZW5hYmxlX29j cChwY3IpOw0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJFR19DUkNfRFVNTVlf MCwNCisJCUNGR19TRF9QT1dfQVVUT19QRCwgQ0ZHX1NEX1BPV19BVVRPX1BEKTsNCisNCisJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzFfQ0ZHMSwNCisJCQlSVFM1MjY0 X0xETzFfVFVORV9NQVNLLCBSVFM1MjY0X0xETzFfMzMpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdp c3RlcihwY3IsIFJUUzUyNjRfTERPMTIzMzMxOF9QT1dfQ1RMLA0KKwkJCVJUUzUyNjRfTERPMV9Q T1dFUk9OLCBSVFM1MjY0X0xETzFfUE9XRVJPTik7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgUlRTNTI2NF9MRE8xMjMzMzE4X1BPV19DVEwsDQorCQkJUlRTNTI2NF9MRE8zMzE4X1BP V0VST04sIFJUUzUyNjRfTERPMzMxOF9QT1dFUk9OKTsNCisNCisJbXNsZWVwKDIwKTsNCisNCisJ cnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBDQVJEX09FLCBTRF9PVVRQVVRfRU4sIFNEX09V VFBVVF9FTik7DQorDQorCS8qIEluaXRpYWxpemUgU0RfQ0ZHMSByZWdpc3RlciAqLw0KKwlydHN4 X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFNEX0NGRzEsIDB4RkYsDQorCQkJU0RfQ0xLX0RJVklE RV8xMjggfCBTRF8yMF9NT0RFIHwgU0RfQlVTX1dJRFRIXzFCSVQpOw0KKwlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFNEX1NBTVBMRV9QT0lOVF9DVEwsDQorCQkJMHhGRiwgU0QyMF9SWF9Q T1NfRURHRSk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgU0RfUFVTSF9QT0lOVF9D VEwsIDB4RkYsIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIENBUkRfU1RPUCwg U0RfU1RPUCB8IFNEX0NMUl9FUlIsDQorCQkJU0RfU1RPUCB8IFNEX0NMUl9FUlIpOw0KKw0KKwkv KiBSZXNldCBTRF9DRkczIHJlZ2lzdGVyICovDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgU0RfQ0ZHMywgU0QzMF9DTEtfRU5EX0VOLCAwKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCBSRUdfU0RfU1RPUF9TRENMS19DRkcsDQorCQkJU0QzMF9DTEtfU1RPUF9DRkdfRU4g fCBTRDMwX0NMS19TVE9QX0NGRzEgfA0KKwkJCVNEMzBfQ0xLX1NUT1BfQ0ZHMCwgMCk7DQorDQor CWlmIChwY3ItPmV4dHJhX2NhcHMgJiBFWFRSQV9DQVBTX1NEX1NEUjUwIHx8DQorCSAgICBwY3It PmV4dHJhX2NhcHMgJiBFWFRSQV9DQVBTX1NEX1NEUjEwNCkNCisJCXJ0czUyNjRfc2Rfc2V0X3Nh bXBsZV9wdXNoX3RpbWluZ19zZDMwKHBjcik7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0 aWMgaW50IHJ0czUyNjRfc3dpdGNoX291dHB1dF92b2x0YWdlKHN0cnVjdCBydHN4X3BjciAqcGNy LCB1OCB2b2x0YWdlKQ0KK3sNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0 X0NBUkRfUFdSX0NUTCwNCisJCQlSVFM1MjY0X1BVUERDLCBSVFM1MjY0X1BVUERDKTsNCisNCisJ c3dpdGNoICh2b2x0YWdlKSB7DQorCWNhc2UgT1VUUFVUXzNWMzoNCisJCXJ0c3hfcGNpX3dyaXRl X3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8xMjMzMzE4X1BPV19DVEwsDQorCQkJCVJUUzUyNjRf VFVORV9SRUZfTERPMzMxOCwgUlRTNTI2NF9UVU5FX1JFRl9MRE8zMzE4KTsNCisJCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9EVjMzMThfQ0ZHLA0KKwkJCQlSVFM1MjY0X0RW MzMxOF9UVU5FX01BU0ssIFJUUzUyNjRfRFYzMzE4XzMzKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3Jl Z2lzdGVyKHBjciwgU0RfUEFEX0NUTCwNCisJCQkJU0RfSU9fVVNJTkdfMVY4LCAwKTsNCisJCWJy ZWFrOw0KKwljYXNlIE9VVFBVVF8xVjg6DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IFJUUzUyNjRfTERPMTIzMzMxOF9QT1dfQ1RMLA0KKwkJCQlSVFM1MjY0X1RVTkVfUkVGX0xETzMz MTgsIFJUUzUyNjRfVFVORV9SRUZfTERPMzMxOF9ERlQpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVn aXN0ZXIocGNyLCBSVFM1MjY0X0RWMzMxOF9DRkcsDQorCQkJCVJUUzUyNjRfRFYzMzE4X1RVTkVf TUFTSywgUlRTNTI2NF9EVjMzMThfMTgpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNy LCBTRF9QQURfQ1RMLA0KKwkJCQlTRF9JT19VU0lOR18xVjgsIFNEX0lPX1VTSU5HXzFWOCk7DQor CQlicmVhazsNCisJZGVmYXVsdDoNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCS8qIHNl dCBwYWQgZHJpdmUgKi8NCisJcnRzNTI2NF9maWxsX2RyaXZpbmcocGNyLCB2b2x0YWdlKTsNCisN CisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfc3RvcF9jbWQoc3RydWN0 IHJ0c3hfcGNyICpwY3IpDQorew0KKwlydHN4X3BjaV93cml0ZWwocGNyLCBSVFNYX0hDQkNUTFIs IFNUT1BfQ01EKTsNCisJcnRzeF9wY2lfd3JpdGVsKHBjciwgUlRTWF9IREJDVExSLCBTVE9QX0RN QSk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgRE1BQ1RMLCBETUFfUlNULCBETUFf UlNUKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSQkNUTCwgUkJfRkxVU0gsIFJC X0ZMVVNIKTsNCit9DQorDQorc3RhdGljIHZvaWQgcnRzNTI2NF9jYXJkX2JlZm9yZV9wb3dlcl9v ZmYoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQorew0KKwlydHM1MjY0X3N0b3BfY21kKHBjcik7DQor CXJ0czUyNjRfc3dpdGNoX291dHB1dF92b2x0YWdlKHBjciwgT1VUUFVUXzNWMyk7DQorfQ0KKw0K K3N0YXRpYyBpbnQgcnRzNTI2NF9jYXJkX3Bvd2VyX29mZihzdHJ1Y3QgcnRzeF9wY3IgKnBjciwg aW50IGNhcmQpDQorew0KKwlpbnQgZXJyID0gMDsNCisNCisJcnRzNTI2NF9jYXJkX2JlZm9yZV9w b3dlcl9vZmYocGNyKTsNCisJZXJyID0gcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1 MjY0X0xETzEyMzMzMThfUE9XX0NUTCwNCisJCQkJUlRTNTI2NF9MRE9fUE9XRVJPTl9NQVNLLCAw KTsNCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSRUdfQ1JDX0RVTU1ZXzAsDQor CQlDRkdfU0RfUE9XX0FVVE9fUEQsIDApOw0KKwlpZiAocGNyLT5vcHRpb24ub2NwX2VuKQ0KKwkJ cnRzeF9wY2lfZGlzYWJsZV9vY3AocGNyKTsNCisNCisJcmV0dXJuIGVycjsNCit9DQorDQorc3Rh dGljIHZvaWQgcnRzNTI2NF9lbmFibGVfb2NwKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sNCisJ dTggbWFzayA9IDA7DQorCXU4IHZhbCA9IDA7DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgUlRTNTI2NF9MRE8xX0NGRzAsDQorCQkJUlRTNTI2NF9MRE8xX09DUF9FTiB8IFJUUzUy NjRfTERPMV9PQ1BfTE1UX0VOLA0KKwkJCVJUUzUyNjRfTERPMV9PQ1BfRU4gfCBSVFM1MjY0X0xE TzFfT0NQX0xNVF9FTik7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9M RE8yX0NGRzAsDQorCQkJUlRTNTI2NF9MRE8yX09DUF9FTiB8IFJUUzUyNjRfTERPMl9PQ1BfTE1U X0VOLA0KKwkJCVJUUzUyNjRfTERPMl9PQ1BfRU4gfCBSVFM1MjY0X0xETzJfT0NQX0xNVF9FTik7 DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8zX0NGRzAsDQorCQkJ UlRTNTI2NF9MRE8zX09DUF9FTiB8IFJUUzUyNjRfTERPM19PQ1BfTE1UX0VOLA0KKwkJCVJUUzUy NjRfTERPM19PQ1BfRU4gfCBSVFM1MjY0X0xETzNfT0NQX0xNVF9FTik7DQorCXJ0c3hfcGNpX3dy aXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PVlBfREVULA0KKwkJCVJUUzUyNjRfUE9XX1ZERVQs IFJUUzUyNjRfUE9XX1ZERVQpOw0KKw0KKwltYXNrID0gU0RfT0NQX0lOVF9FTiB8IFNEX0RFVEVD VF9FTjsNCisJbWFzayB8PSBTRFZJT19PQ1BfSU5UX0VOIHwgU0RWSU9fREVURUNUX0VOOw0KKwl2 YWwgPSBtYXNrOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJFR19PQ1BDVEwsIG1h c2ssIHZhbCk7DQorDQorCW1hc2sgPSBTRF9WREQzX09DUF9JTlRfRU4gfCBTRF9WREQzX0RFVEVD VF9FTjsNCisJdmFsID0gbWFzazsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1 MjY0X09DUF9WREQzX0NUTCwgbWFzaywgdmFsKTsNCisNCisJbWFzayA9IFJUUzUyNjRfT1ZQX0lO VF9FTiB8IFJUUzUyNjRfT1ZQX0RFVEVDVF9FTjsNCisJdmFsID0gbWFzazsNCisJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X09WUF9DVEwsIG1hc2ssIHZhbCk7DQorfQ0KKw0K K3N0YXRpYyB2b2lkIHJ0czUyNjRfZGlzYWJsZV9vY3Aoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQor ew0KKwl1OCBtYXNrID0gMDsNCisNCisJbWFzayA9IFNEX09DUF9JTlRfRU4gfCBTRF9ERVRFQ1Rf RU47DQorCW1hc2sgfD0gU0RWSU9fT0NQX0lOVF9FTiB8IFNEVklPX0RFVEVDVF9FTjsNCisJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSRUdfT0NQQ1RMLCBtYXNrLCAwKTsNCisNCisJbWFz ayA9IFNEX1ZERDNfT0NQX0lOVF9FTiB8IFNEX1ZERDNfREVURUNUX0VOOw0KKwlydHN4X3BjaV93 cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfT0NQX1ZERDNfQ1RMLCBtYXNrLCAwKTsNCisNCisJ bWFzayA9IFJUUzUyNjRfT1ZQX0lOVF9FTiB8IFJUUzUyNjRfT1ZQX0RFVEVDVF9FTjsNCisJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X09WUF9DVEwsIG1hc2ssIDApOw0KKw0K KwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMV9DRkcwLA0KKwkJCVJU UzUyNjRfTERPMV9PQ1BfRU4gfCBSVFM1MjY0X0xETzFfT0NQX0xNVF9FTiwgMCk7DQorCXJ0c3hf cGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8yX0NGRzAsDQorCQkJUlRTNTI2NF9M RE8yX09DUF9FTiB8IFJUUzUyNjRfTERPMl9PQ1BfTE1UX0VOLCAwKTsNCisJcnRzeF9wY2lfd3Jp dGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzNfQ0ZHMCwNCisJCQlSVFM1MjY0X0xETzNfT0NQ X0VOIHwgUlRTNTI2NF9MRE8zX09DUF9MTVRfRU4sIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdp c3RlcihwY3IsIFJUUzUyNjRfT1ZQX0RFVCwgUlRTNTI2NF9QT1dfVkRFVCwgMCk7DQorfQ0KKw0K K3N0YXRpYyB2b2lkIHJ0czUyNjRfaW5pdF9vY3Aoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQorew0K KwlzdHJ1Y3QgcnRzeF9jcl9vcHRpb24gKm9wdGlvbiA9ICZwY3ItPm9wdGlvbjsNCisNCisJaWYg KG9wdGlvbi0+b2NwX2VuKSB7DQorCQl1OCBtYXNrLCB2YWw7DQorDQorCQlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMV9DRkcwLA0KKwkJCVJUUzUyNjRfTERPMV9PQ1Bf VEhEX01BU0ssIG9wdGlvbi0+c2RfODAwbUFfb2NwX3RoZCk7DQorCQlydHN4X3BjaV93cml0ZV9y ZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMV9DRkcwLA0KKwkJCVJUUzUyNjRfTERPMV9PQ1BfTE1U X1RIRF9NQVNLLA0KKwkJCVJUUzUyNjRfTERPMV9MTVRfVEhEXzIwMDApOw0KKw0KKwkJcnRzeF9w Y2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzJfQ0ZHMCwNCisJCQlSVFM1MjY0X0xE TzJfT0NQX1RIRF9NQVNLLCBSVFM1MjY0X0xETzJfT0NQX1RIRF85NTApOw0KKwkJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzJfQ0ZHMCwNCisJCQlSVFM1MjY0X0xETzJf T0NQX0xNVF9USERfTUFTSywNCisJCQlSVFM1MjY0X0xETzJfTE1UX1RIRF8yMDAwKTsNCisNCisJ CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8zX0NGRzAsDQorCQkJUlRT NTI2NF9MRE8zX09DUF9USERfTUFTSywgUlRTNTI2NF9MRE8zX09DUF9USERfNzEwKTsNCisJCXJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8zX0NGRzAsDQorCQkJUlRTNTI2 NF9MRE8zX09DUF9MTVRfVEhEX01BU0ssDQorCQkJUlRTNTI2NF9MRE8zX0xNVF9USERfMTUwMCk7 DQorDQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfT1ZQX0RFVCwNCisJ CQlSVFM1MjY0X1RVTkVfVlJPVl9NQVNLLCBSVFM1MjY0X1RVTkVfVlJPVl8xVjYpOw0KKw0KKwkJ bWFzayA9IFNEX09DUF9HTElUQ0hfTUFTSyB8IFNEVklPX09DUF9HTElUQ0hfTUFTSzsNCisJCXZh bCA9IHBjci0+aHdfcGFyYW0ub2NwX2dsaXRjaDsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgUkVHX09DUEdMSVRDSCwgbWFzaywgdmFsKTsNCisNCisJfSBlbHNlIHsNCisJCXJ0c3hf cGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8xX0NGRzAsDQorCQkJUlRTNTI2NF9M RE8xX09DUF9FTiB8IFJUUzUyNjRfTERPMV9PQ1BfTE1UX0VOLCAwKTsNCisJCXJ0c3hfcGNpX3dy aXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8yX0NGRzAsDQorCQkJUlRTNTI2NF9MRE8yX09D UF9FTiB8IFJUUzUyNjRfTERPMl9PQ1BfTE1UX0VOLCAwKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3Jl Z2lzdGVyKHBjciwgUlRTNTI2NF9MRE8zX0NGRzAsDQorCQkJUlRTNTI2NF9MRE8zX09DUF9FTiB8 IFJUUzUyNjRfTERPM19PQ1BfTE1UX0VOLCAwKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgUlRTNTI2NF9PVlBfREVULA0KKwkJCVJUUzUyNjRfUE9XX1ZERVQsIDApOw0KKwl9DQor fQ0KKw0KK3N0YXRpYyBpbnQgcnRzNTI2NF9nZXRfb2Nwc3RhdDIoc3RydWN0IHJ0c3hfcGNyICpw Y3IsIHU4ICp2YWwpDQorew0KKwlyZXR1cm4gcnRzeF9wY2lfcmVhZF9yZWdpc3RlcihwY3IsIFJU UzUyNjRfT0NQX1ZERDNfU1RTLCB2YWwpOw0KK30NCisNCitzdGF0aWMgaW50IHJ0czUyNjRfZ2V0 X292cHN0YXQoc3RydWN0IHJ0c3hfcGNyICpwY3IsIHU4ICp2YWwpDQorew0KKwlyZXR1cm4gcnRz eF9wY2lfcmVhZF9yZWdpc3RlcihwY3IsIFJUUzUyNjRfT1ZQX1NUUywgdmFsKTsNCit9DQorDQor c3RhdGljIHZvaWQgcnRzNTI2NF9jbGVhcl9vY3BzdGF0KHN0cnVjdCBydHN4X3BjciAqcGNyKQ0K K3sNCisJdTggbWFzayA9IDA7DQorCXU4IHZhbCA9IDA7DQorDQorCW1hc2sgPSBTRF9PQ1BfSU5U X0NMUiB8IFNEX09DX0NMUjsNCisJbWFzayB8PSBTRFZJT19PQ1BfSU5UX0NMUiB8IFNEVklPX09D X0NMUjsNCisJdmFsID0gbWFzazsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSRUdf T0NQQ1RMLCBtYXNrLCB2YWwpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUy NjRfT0NQX1ZERDNfQ1RMLA0KKwkJU0RfVkREM19PQ1BfSU5UX0NMUiB8IFNEX1ZERDNfT0NfQ0xS LA0KKwkJU0RfVkREM19PQ1BfSU5UX0NMUiB8IFNEX1ZERDNfT0NfQ0xSKTsNCisJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X09WUF9DVEwsDQorCQlSVFM1MjY0X09WUF9JTlRf Q0xSIHwgUlRTNTI2NF9PVlBfQ0xSLA0KKwkJUlRTNTI2NF9PVlBfSU5UX0NMUiB8IFJUUzUyNjRf T1ZQX0NMUik7DQorDQorCXVkZWxheSgxMDAwKTsNCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCBSRUdfT0NQQ1RMLCBtYXNrLCAwKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIo cGNyLCBSVFM1MjY0X09DUF9WREQzX0NUTCwNCisJCVNEX1ZERDNfT0NQX0lOVF9DTFIgfCBTRF9W REQzX09DX0NMUiwgMCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9P VlBfQ1RMLA0KKwkJUlRTNTI2NF9PVlBfSU5UX0NMUiB8IFJUUzUyNjRfT1ZQX0NMUiwgMCk7DQor fQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfcHJvY2Vzc19vY3Aoc3RydWN0IHJ0c3hfcGNyICpw Y3IpDQorew0KKwlpZiAoIXBjci0+b3B0aW9uLm9jcF9lbikNCisJCXJldHVybjsNCisNCisJcnRz eF9wY2lfZ2V0X29jcHN0YXQocGNyLCAmcGNyLT5vY3Bfc3RhdCk7DQorCXJ0czUyNjRfZ2V0X29j cHN0YXQyKHBjciwgJnBjci0+b2NwX3N0YXQyKTsNCisJcnRzNTI2NF9nZXRfb3Zwc3RhdChwY3Is ICZwY3ItPm92cF9zdGF0KTsNCisNCisJaWYgKChwY3ItPm9jcF9zdGF0ICYgKFNEX09DX05PVyB8 IFNEX09DX0VWRVIgfCBTRFZJT19PQ19OT1cgfCBTRFZJT19PQ19FVkVSKSkgfHwNCisJCQkocGNy LT5vY3Bfc3RhdDIgJiAoU0RfVkREM19PQ19OT1cgfCBTRF9WREQzX09DX0VWRVIpKSB8fA0KKwkJ CShwY3ItPm92cF9zdGF0ICYgKFJUUzUyNjRfT1ZQX05PVyB8IFJUUzUyNjRfT1ZQX0VWRVIpKSkg ew0KKwkJcnRzNTI2NF9jbGVhcl9vY3BzdGF0KHBjcik7DQorCQlydHM1MjY0X2NhcmRfcG93ZXJf b2ZmKHBjciwgUlRTWF9TRF9DQVJEKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwg Q0FSRF9PRSwgU0RfT1VUUFVUX0VOLCAwKTsNCisJCXBjci0+b2NwX3N0YXQgPSAwOw0KKwkJcGNy LT5vY3Bfc3RhdDIgPSAwOw0KKwkJcGNyLT5vdnBfc3RhdCA9IDA7DQorCX0NCit9DQorDQorc3Rh dGljIHZvaWQgcnRzNTI2NF9pbml0X2Zyb21faHcoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQorew0K KwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHBjci0+cGNpOw0KKwl1MzIgbHZhbDEsIGx2YWwyLCBp Ow0KKwl1MTYgc2V0dGluZ19yZWcxLCBzZXR0aW5nX3JlZzI7DQorCXU4IHZhbGlkLCBlZnVzZV92 YWxpZCwgdG1wOw0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfUkVH X1BNRV9GT1JDRV9DVEwsDQorCQlSRUdfRUZVU0VfUE9SIHwgUkVHX0VGVVNFX1BPV0VSX01BU0ss DQorCQlSRUdfRUZVU0VfUE9SIHwgUkVHX0VGVVNFX1BPV0VST04pOw0KKwl1ZGVsYXkoMSk7DQor CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9FRlVTRV9BRERSLA0KKwkJUlRT NTI2NF9FRlVTRV9BRERSX01BU0ssIDB4MDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIFJUUzUyNjRfRUZVU0VfQ1RMLA0KKwkJUlRTNTI2NF9FRlVTRV9FTkFCTEUgfCBSVFM1MjY0 X0VGVVNFX01PREVfTUFTSywNCisJCVJUUzUyNjRfRUZVU0VfRU5BQkxFKTsNCisNCisJLyogV2Fp dCB0cmFuc2ZlciBlbmQgKi8NCisJZm9yIChpID0gMDsgaSA8IE1BWF9SV19SRUdfQ05UOyBpKysp IHsNCisJCXJ0c3hfcGNpX3JlYWRfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0VGVVNFX0NUTCwgJnRt cCk7DQorCQlpZiAoKHRtcCAmIDB4ODApID09IDApDQorCQkJYnJlYWs7DQorCX0NCisJcnRzeF9w Y2lfcmVhZF9yZWdpc3RlcihwY3IsIFJUUzUyNjRfRUZVU0VfUkVBRF9EQVRBLCAmdG1wKTsNCisJ ZWZ1c2VfdmFsaWQgPSAoKHRtcCAmIDB4MEMpID4+IDIpOw0KKwlwY3JfZGJnKHBjciwgIkxvYWQg ZWZ1c2UgdmFsaWQ6IDB4JXhcbiIsIGVmdXNlX3ZhbGlkKTsNCisNCisJcGNpX3JlYWRfY29uZmln X2R3b3JkKHBkZXYsIFBDUl9TRVRUSU5HX1JFRzIsICZsdmFsMik7DQorCXBjcl9kYmcocGNyLCAi Q2ZnIDB4JXg6IDB4JXhcbiIsIFBDUl9TRVRUSU5HX1JFRzIsIGx2YWwyKTsNCisJLyogMHg4MTYg Ki8NCisJdmFsaWQgPSAodTgpKChsdmFsMiA+PiAxNikgJiAweDAzKTsNCisNCisJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X1JFR19QTUVfRk9SQ0VfQ1RMLA0KKwkJUkVHX0VG VVNFX1BPUiwgMCk7DQorCXBjcl9kYmcocGNyLCAiRGlzYWJsZSBlZnVzZSBwb3IhXG4iKTsNCisN CisJaWYgKGVmdXNlX3ZhbGlkID09IDIgfHwgZWZ1c2VfdmFsaWQgPT0gMykgew0KKwkJaWYgKHZh bGlkID09IDMpIHsNCisJCQkvKiBCeXBhc3MgZWZ1c2UgKi8NCisJCQlzZXR0aW5nX3JlZzEgPSBQ Q1JfU0VUVElOR19SRUcxOw0KKwkJCXNldHRpbmdfcmVnMiA9IFBDUl9TRVRUSU5HX1JFRzI7DQor CQl9IGVsc2Ugew0KKwkJCS8qIFVzZSBlZnVzZSBkYXRhICovDQorCQkJc2V0dGluZ19yZWcxID0g UENSX1NFVFRJTkdfUkVHNDsNCisJCQlzZXR0aW5nX3JlZzIgPSBQQ1JfU0VUVElOR19SRUc1Ow0K KwkJfQ0KKwl9IGVsc2UgaWYgKGVmdXNlX3ZhbGlkID09IDApIHsNCisJCS8vIGRlZmF1bHQNCisJ CXNldHRpbmdfcmVnMSA9IFBDUl9TRVRUSU5HX1JFRzE7DQorCQlzZXR0aW5nX3JlZzIgPSBQQ1Jf U0VUVElOR19SRUcyOw0KKwl9IGVsc2Ugew0KKwkJcmV0dXJuOw0KKwl9DQorDQorCXBjaV9yZWFk X2NvbmZpZ19kd29yZChwZGV2LCBzZXR0aW5nX3JlZzIsICZsdmFsMik7DQorCXBjcl9kYmcocGNy LCAiQ2ZnIDB4JXg6IDB4JXhcbiIsIHNldHRpbmdfcmVnMiwgbHZhbDIpOw0KKw0KKwlpZiAoIXJ0 czUyNjRfdmVuZG9yX3NldHRpbmdfdmFsaWQobHZhbDIpKSB7DQorCQlwY3JfZGJnKHBjciwgInNr aXAgZmV0Y2ggdmVuZG9yIHNldHRpbmdcbiIpOw0KKwkJcmV0dXJuOw0KKwl9DQorDQorCXBjci0+ cnRkM19lbiA9IHJ0czUyNjRfcmVnX3RvX3J0ZDMobHZhbDIpOw0KKw0KKwlpZiAocnRzNTI2NF9y ZWdfY2hlY2tfcmV2ZXJzZV9zb2NrZXQobHZhbDIpKQ0KKwkJcGNyLT5mbGFncyB8PSBQQ1JfUkVW RVJTRV9TT0NLRVQ7DQorDQorCXBjaV9yZWFkX2NvbmZpZ19kd29yZChwZGV2LCBzZXR0aW5nX3Jl ZzEsICZsdmFsMSk7DQorCXBjcl9kYmcocGNyLCAiQ2ZnIDB4JXg6IDB4JXhcbiIsIHNldHRpbmdf cmVnMSwgbHZhbDEpOw0KKw0KKwlwY3ItPmFzcG1fZW4gPSBydHM1MjY0X3JlZ190b19hc3BtKGx2 YWwxKTsNCisJcGNyLT5zZDMwX2RyaXZlX3NlbF8xdjggPSBydHM1MjY0X3JlZ190b19zZDMwX2Ry aXZlX3NlbF8xdjgobHZhbDEpOw0KKwlwY3ItPnNkMzBfZHJpdmVfc2VsXzN2MyA9IHJ0czUyNjRf cmVnX3RvX3NkMzBfZHJpdmVfc2VsXzN2MyhsdmFsMSk7DQorDQorCWlmIChzZXR0aW5nX3JlZzEg PT0gUENSX1NFVFRJTkdfUkVHMSkgew0KKwkJLyogc3RvcmUgc2V0dGluZyAqLw0KKwkJcnRzeF9w Y2lfd3JpdGVfcmVnaXN0ZXIocGNyLCAweEZGMEMsIDB4RkYsICh1OCkobHZhbDEgJiAweEZGKSk7 DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIDB4RkYwRCwgMHhGRiwgKHU4KSgobHZh bDEgPj4gOCkgJiAweEZGKSk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIDB4RkYw RSwgMHhGRiwgKHU4KSgobHZhbDEgPj4gMTYpICYgMHhGRikpOw0KKwkJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCAweEZGMEYsIDB4RkYsICh1OCkoKGx2YWwxID4+IDI0KSAmIDB4RkYpKTsN CisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgMHhGRjEwLCAweEZGLCAodTgpKGx2YWwy ICYgMHhGRikpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCAweEZGMTEsIDB4RkYs ICh1OCkoKGx2YWwyID4+IDgpICYgMHhGRikpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIo cGNyLCAweEZGMTIsIDB4RkYsICh1OCkoKGx2YWwyID4+IDE2KSAmIDB4RkYpKTsNCisNCisJCXBj aV93cml0ZV9jb25maWdfZHdvcmQocGRldiwgUENSX1NFVFRJTkdfUkVHNCwgbHZhbDEpOw0KKwkJ bHZhbDIgPSBsdmFsMiAmIDB4MDBGRkZGRkY7DQorCQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKHBk ZXYsIFBDUl9TRVRUSU5HX1JFRzUsIGx2YWwyKTsNCisJfQ0KK30NCisNCitzdGF0aWMgdm9pZCBy dHM1MjY0X2luaXRfZnJvbV9jZmcoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQorew0KKwlzdHJ1Y3Qg cnRzeF9jcl9vcHRpb24gKm9wdGlvbiA9ICZwY3ItPm9wdGlvbjsNCisNCisJaWYgKHJ0c3hfY2hl Y2tfZGV2X2ZsYWcocGNyLCBBU1BNX0wxXzFfRU4gfCBBU1BNX0wxXzJfRU4NCisJCQkJfCBQTV9M MV8xX0VOIHwgUE1fTDFfMl9FTikpDQorCQlydHN4X3BjaV9kaXNhYmxlX29vYnNfcG9sbGluZyhw Y3IpOw0KKwllbHNlDQorCQlydHN4X3BjaV9lbmFibGVfb29ic19wb2xsaW5nKHBjcik7DQorDQor CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQVNQTV9GT1JDRV9DVEwsIDB4RkYsIDApOw0K Kw0KKwlpZiAob3B0aW9uLT5sdHJfZW4pIHsNCisJCWlmIChvcHRpb24tPmx0cl9lbmFibGVkKQ0K KwkJCXJ0c3hfc2V0X2x0cl9sYXRlbmN5KHBjciwgb3B0aW9uLT5sdHJfYWN0aXZlX2xhdGVuY3kp Ow0KKwl9DQorfQ0KKw0KK3N0YXRpYyBpbnQgcnRzNTI2NF9leHRyYV9pbml0X2h3KHN0cnVjdCBy dHN4X3BjciAqcGNyKQ0KK3sNCisJc3RydWN0IHJ0c3hfY3Jfb3B0aW9uICpvcHRpb24gPSAmcGNy LT5vcHRpb247DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9BVVRP TE9BRF9DRkcxLA0KKwkJCUNEX1JFU1VNRV9FTl9NQVNLLCBDRF9SRVNVTUVfRU5fTUFTSyk7DQor CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkVHX1ZSRUYsIFBXRF9TVVNQTkRfRU4sIFBX RF9TVVNQTkRfRU4pOw0KKw0KKwlydHM1MjY0X2luaXRfZnJvbV9jZmcocGNyKTsNCisJcnRzNTI2 NF9pbml0X2Zyb21faHcocGNyKTsNCisNCisJLyogcG93ZXIgb2ZmIGVmdXNlICovDQorCXJ0c3hf cGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9SRUdfUE1FX0ZPUkNFX0NUTCwNCisJCQlS RUdfRUZVU0VfUE9XRVJfTUFTSywgUkVHX0VGVVNFX1BPV0VST0ZGKTsNCisJcnRzeF9wY2lfd3Jp dGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0FVVE9MT0FEX0NGRzIsDQorCQkJUlRTNTI2NF9DSElQ X1JTVF9OX1NFTCwgMCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9S RUdfTERPMTJfQ0ZHLA0KKwkJCVJUUzUyNjRfTERPMTJfU1JfTUFTSywgUlRTNTI2NF9MRE8xMl9T Ul8wXzBfTVMpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIENER1csIDB4RkYsIDB4 MDEpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfQ0tNVVhfTUJJQVNf UFdSLA0KKwkJCVJUUzUyNjRfUE9XX0NLTVVYLCBSVFM1MjY0X1BPV19DS01VWCk7DQorCXJ0c3hf cGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9DTURfT0VfU1RBUlRfRUFSTFksDQorCQkJ UlRTNTI2NF9DTURfT0VfRUFSTFlfRU4gfCBSVFM1MjY0X0NNRF9PRV9FQVJMWV9DWUNMRV9NQVNL LA0KKwkJCVJUUzUyNjRfQ01EX09FX0VBUkxZX0VOKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCBSVFM1MjY0X0RBVF9PRV9TVEFSVF9FQVJMWSwNCisJCQlSVFM1MjY0X0RBVF9PRV9F QVJMWV9FTiB8IFJUUzUyNjRfREFUX09FX0VBUkxZX0NZQ0xFX01BU0ssDQorCQkJUlRTNTI2NF9E QVRfT0VfRUFSTFlfRU4pOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFNTQ19ESVZf Tl8wLCAweEZGLCAweDVEKTsNCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1 MjY0X1BXUl9DVVQsDQorCQkJUlRTNTI2NF9DRkdfTUVNX1BELCBSVFM1MjY0X0NGR19NRU1fUEQp Ow0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEwxU1VCX0NPTkZJRzEsDQorCQkJQVVY X0NMS19BQ1RJVkVfU0VMX01BU0ssIE1BQ19DS1NXX0RPTkUpOw0KKwlydHN4X3BjaV93cml0ZV9y ZWdpc3RlcihwY3IsIEwxU1VCX0NPTkZJRzMsIDB4RkYsIDApOw0KKwlydHN4X3BjaV93cml0ZV9y ZWdpc3RlcihwY3IsIFJUUzUyNjRfQVVUT0xPQURfQ0ZHNCwNCisJCQlSVFM1MjY0X0FVWF9DTEtf MTZNX0VOLCAwKTsNCisNCisJLyogUmVsZWFzZSBQUlNOVCMgKi8NCisJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSVFM1MjY0X0FVVE9MT0FEX0NGRzQsDQorCQkJUlRTNTI2NF9GT1JDRV9Q UlNOVF9MT1csIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFBDTEtfQ1RMLA0K KwkJCVBDTEtfTU9ERV9TRUwsIFBDTEtfTU9ERV9TRUwpOw0KKw0KKwkvKiBMRUQgc2hpbmUgZGlz YWJsZWQsIHNldCBpbml0aWFsIHNoaW5lIGN5Y2xlIHBlcmlvZCAqLw0KKwlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIE9MVF9MRURfQ1RMLCAweDBGLCAweDAyKTsNCisNCisJLyogQ29uZmln dXJlIGRyaXZpbmcgKi8NCisJcnRzNTI2NF9maWxsX2RyaXZpbmcocGNyLCBPVVRQVVRfM1YzKTsN CisNCisJaWYgKHBjci0+ZmxhZ3MgJiBQQ1JfUkVWRVJTRV9TT0NLRVQpDQorCQlydHN4X3BjaV93 cml0ZV9yZWdpc3RlcihwY3IsIFBFVFhDRkcsIDB4MzAsIDB4MzApOw0KKwllbHNlDQorCQlydHN4 X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFBFVFhDRkcsIDB4MzAsIDB4MDApOw0KKw0KKwkvKg0K KwkgKiBJZiB1X2ZvcmNlX2Nsa3JlcV8wIGlzIGVuYWJsZWQsIENMS1JFUSMgUElOIHdpbGwgYmUg Zm9yY2VkDQorCSAqIHRvIGRyaXZlIGxvdywgYW5kIHdlIGZvcmNpYmx5IHJlcXVlc3QgY2xvY2su DQorCSAqLw0KKwlpZiAob3B0aW9uLT5mb3JjZV9jbGtyZXFfMCkNCisJCXJ0c3hfcGNpX3dyaXRl X3JlZ2lzdGVyKHBjciwgUEVUWENGRywNCisJCQkJIEZPUkNFX0NMS1JFUV9ERUxJTktfTUFTSywg Rk9SQ0VfQ0xLUkVRX0xPVyk7DQorCWVsc2UNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgUEVUWENGRywNCisJCQkJIEZPUkNFX0NMS1JFUV9ERUxJTktfTUFTSywgRk9SQ0VfQ0xLUkVR X0hJR0gpOw0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFBXRF9TVVNQRU5EX0VO LCAweEZGLCAweEZGKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSQkNUTCwgVV9B VVRPX0RNQV9FTl9NQVNLLCAwKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1 MjY0X0FVVE9MT0FEX0NGRzQsDQorCQkJUlRTNTI2NF9GX0hJR0hfUkNfTUFTSywgUlRTNTI2NF9G X0hJR0hfUkNfNDAwSyk7DQorDQorCWlmIChwY3ItPnJ0ZDNfZW4pIHsNCisJCXJ0c3hfcGNpX3dy aXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdfcG1fY3RybDMsIDB4MDEsIDB4MDApOw0KKwkJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X1JFR19QTUVfRk9SQ0VfQ1RMLA0KKwkJ CQlGT1JDRV9QTV9DT05UUk9MIHwgRk9SQ0VfUE1fVkFMVUUsIDApOw0KKwl9IGVsc2Ugew0KKwkJ cnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBwY3ItPnJlZ19wbV9jdHJsMywgMHgwMSwgMHgw MCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfUkVHX1BNRV9GT1JD RV9DVEwsDQorCQkJCUZPUkNFX1BNX0NPTlRST0wgfCBGT1JDRV9QTV9WQUxVRSwgRk9SQ0VfUE1f Q09OVFJPTCk7DQorCX0NCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBwY3ItPnJlZ19w bV9jdHJsMywgRDNfREVMSU5LX01PREVfRU4sIDB4MDApOw0KKw0KKwkvKiBDbGVhciBFbnRlciBS VEQzX2NvbGQgSW5mb3JtYXRpb24qLw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJU UzUyNjRfRldfQ1RMLA0KKwkJUlRTNTI2NF9JTkZPUk1fUlREM19DT0xELCAwKTsNCisNCisJcmV0 dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfZW5hYmxlX2FzcG0oc3RydWN0IHJ0 c3hfcGNyICpwY3IsIGJvb2wgZW5hYmxlKQ0KK3sNCisJdTggdmFsID0gRk9SQ0VfQVNQTV9DVEww IHwgRk9SQ0VfQVNQTV9DVEwxOw0KKwl1OCBtYXNrID0gRk9SQ0VfQVNQTV9WQUxfTUFTSyB8IEZP UkNFX0FTUE1fQ1RMMCB8IEZPUkNFX0FTUE1fQ1RMMTsNCisNCisJaWYgKHBjci0+YXNwbV9lbmFi bGVkID09IGVuYWJsZSkNCisJCXJldHVybjsNCisNCisJdmFsIHw9IChwY3ItPmFzcG1fZW4gJiAw eDAyKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBBU1BNX0ZPUkNFX0NUTCwgbWFz aywgdmFsKTsNCisJcGNpZV9jYXBhYmlsaXR5X2NsZWFyX2FuZF9zZXRfd29yZChwY3ItPnBjaSwg UENJX0VYUF9MTktDVEwsDQorCQkJCQkgICBQQ0lfRVhQX0xOS0NUTF9BU1BNQywgcGNyLT5hc3Bt X2VuKTsNCisJcGNyLT5hc3BtX2VuYWJsZWQgPSBlbmFibGU7DQorfQ0KKw0KK3N0YXRpYyB2b2lk IHJ0czUyNjRfZGlzYWJsZV9hc3BtKHN0cnVjdCBydHN4X3BjciAqcGNyLCBib29sIGVuYWJsZSkN Cit7DQorCXU4IHZhbCA9IEZPUkNFX0FTUE1fQ1RMMCB8IEZPUkNFX0FTUE1fQ1RMMTsNCisJdTgg bWFzayA9IEZPUkNFX0FTUE1fVkFMX01BU0sgfCBGT1JDRV9BU1BNX0NUTDAgfCBGT1JDRV9BU1BN X0NUTDE7DQorDQorCWlmIChwY3ItPmFzcG1fZW5hYmxlZCA9PSBlbmFibGUpDQorCQlyZXR1cm47 DQorDQorCXBjaWVfY2FwYWJpbGl0eV9jbGVhcl9hbmRfc2V0X3dvcmQocGNyLT5wY2ksIFBDSV9F WFBfTE5LQ1RMLA0KKwkJCQkJICAgUENJX0VYUF9MTktDVExfQVNQTUMsIDApOw0KKwlydHN4X3Bj aV93cml0ZV9yZWdpc3RlcihwY3IsIEFTUE1fRk9SQ0VfQ1RMLCBtYXNrLCB2YWwpOw0KKwlydHN4 X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFNEX0NGRzEsIFNEX0FTWU5DX0ZJRk9fTk9UX1JTVCwg MCk7DQorCXVkZWxheSgxMCk7DQorCXBjci0+YXNwbV9lbmFibGVkID0gZW5hYmxlOw0KK30NCisN CitzdGF0aWMgdm9pZCBydHM1MjY0X3NldF9hc3BtKHN0cnVjdCBydHN4X3BjciAqcGNyLCBib29s IGVuYWJsZSkNCit7DQorCWlmIChlbmFibGUpDQorCQlydHM1MjY0X2VuYWJsZV9hc3BtKHBjciwg dHJ1ZSk7DQorCWVsc2UNCisJCXJ0czUyNjRfZGlzYWJsZV9hc3BtKHBjciwgZmFsc2UpOw0KK30N CisNCitzdGF0aWMgdm9pZCBydHM1MjY0X3NldF9sMW9mZl9jZmdfc3ViX2QwKHN0cnVjdCBydHN4 X3BjciAqcGNyLCBpbnQgYWN0aXZlKQ0KK3sNCisJc3RydWN0IHJ0c3hfY3Jfb3B0aW9uICpvcHRp b24gPSAmKHBjci0+b3B0aW9uKTsNCisNCisJdTMyIGludGVycnVwdCA9IHJ0c3hfcGNpX3JlYWRs KHBjciwgUlRTWF9CSVBSKTsNCisJaW50IGNhcmRfZXhpc3QgPSAoaW50ZXJydXB0ICYgU0RfRVhJ U1QpOw0KKwlpbnQgYXNwbV9MMV8xLCBhc3BtX0wxXzI7DQorCXU4IHZhbCA9IDA7DQorDQorCWFz cG1fTDFfMSA9IHJ0c3hfY2hlY2tfZGV2X2ZsYWcocGNyLCBBU1BNX0wxXzFfRU4pOw0KKwlhc3Bt X0wxXzIgPSBydHN4X2NoZWNrX2Rldl9mbGFnKHBjciwgQVNQTV9MMV8yX0VOKTsNCisNCisJaWYg KGFjdGl2ZSkgew0KKwkJLyogUnVuLCBsYXRlbmN5OiA2MHVzICovDQorCQlpZiAoYXNwbV9MMV8x KQ0KKwkJCXZhbCA9IG9wdGlvbi0+bHRyX2wxb2ZmX3Nub296ZV9zc3B3cmdhdGU7DQorCX0gZWxz ZSB7DQorCQkvKiBMMW9mZiwgbGF0ZW5jeTogMzAwdXMgKi8NCisJCWlmIChhc3BtX0wxXzIpDQor CQkJdmFsID0gb3B0aW9uLT5sdHJfbDFvZmZfc3Nwd3JnYXRlOw0KKwl9DQorDQorCWlmIChhc3Bt X0wxXzEgfHwgYXNwbV9MMV8yKSB7DQorCQlpZiAocnRzeF9jaGVja19kZXZfZmxhZyhwY3IsDQor CQkJCQlMVFJfTDFTU19QV1JfR0FURV9DSEVDS19DQVJEX0VOKSkgew0KKwkJCWlmIChjYXJkX2V4 aXN0KQ0KKwkJCQl2YWwgJj0gfkwxT0ZGX01CSUFTMl9FTl81MjUwOw0KKwkJCWVsc2UNCisJCQkJ dmFsIHw9IEwxT0ZGX01CSUFTMl9FTl81MjUwOw0KKwkJfQ0KKwl9DQorCXJ0c3hfc2V0X2wxb2Zm X3N1YihwY3IsIHZhbCk7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGNyX29wcyBydHM1 MjY0X3Bjcl9vcHMgPSB7DQorCS50dXJuX29uX2xlZCA9IHJ0czUyNjRfdHVybl9vbl9sZWQsDQor CS50dXJuX29mZl9sZWQgPSBydHM1MjY0X3R1cm5fb2ZmX2xlZCwNCisJLmV4dHJhX2luaXRfaHcg PSBydHM1MjY0X2V4dHJhX2luaXRfaHcsDQorCS5lbmFibGVfYXV0b19ibGluayA9IHJ0czUyNjRf ZW5hYmxlX2F1dG9fYmxpbmssDQorCS5kaXNhYmxlX2F1dG9fYmxpbmsgPSBydHM1MjY0X2Rpc2Fi bGVfYXV0b19ibGluaywNCisJLmNhcmRfcG93ZXJfb24gPSBydHM1MjY0X2NhcmRfcG93ZXJfb24s DQorCS5jYXJkX3Bvd2VyX29mZiA9IHJ0czUyNjRfY2FyZF9wb3dlcl9vZmYsDQorCS5zd2l0Y2hf b3V0cHV0X3ZvbHRhZ2UgPSBydHM1MjY0X3N3aXRjaF9vdXRwdXRfdm9sdGFnZSwNCisJLmZvcmNl X3Bvd2VyX2Rvd24gPSBydHM1MjY0X2ZvcmNlX3Bvd2VyX2Rvd24sDQorCS5zdG9wX2NtZCA9IHJ0 czUyNjRfc3RvcF9jbWQsDQorCS5zZXRfYXNwbSA9IHJ0czUyNjRfc2V0X2FzcG0sDQorCS5zZXRf bDFvZmZfY2ZnX3N1Yl9kMCA9IHJ0czUyNjRfc2V0X2wxb2ZmX2NmZ19zdWJfZDAsDQorCS5lbmFi bGVfb2NwID0gcnRzNTI2NF9lbmFibGVfb2NwLA0KKwkuZGlzYWJsZV9vY3AgPSBydHM1MjY0X2Rp c2FibGVfb2NwLA0KKwkuaW5pdF9vY3AgPSBydHM1MjY0X2luaXRfb2NwLA0KKwkucHJvY2Vzc19v Y3AgPSBydHM1MjY0X3Byb2Nlc3Nfb2NwLA0KKwkuY2xlYXJfb2Nwc3RhdCA9IHJ0czUyNjRfY2xl YXJfb2Nwc3RhdCwNCit9Ow0KKw0KK3N0YXRpYyBpbmxpbmUgdTggZG91YmxlX3NzY19kZXB0aCh1 OCBkZXB0aCkNCit7DQorCXJldHVybiAoKGRlcHRoID4gMSkgPyAoZGVwdGggLSAxKSA6IGRlcHRo KTsNCit9DQorDQoraW50IHJ0czUyNjRfcGNpX3N3aXRjaF9jbG9jayhzdHJ1Y3QgcnRzeF9wY3Ig KnBjciwgdW5zaWduZWQgaW50IGNhcmRfY2xvY2ssDQorCQl1OCBzc2NfZGVwdGgsIGJvb2wgaW5p dGlhbF9tb2RlLCBib29sIGRvdWJsZV9jbGssIGJvb2wgdnBjbGspDQorew0KKwlpbnQgZXJyLCBj bGs7DQorCXUxNiBuOw0KKwl1OCBjbGtfZGl2aWRlciwgbWN1X2NudCwgZGl2Ow0KKwlzdGF0aWMg Y29uc3QgdTggZGVwdGhbXSA9IHsNCisJCVtSVFNYX1NTQ19ERVBUSF80TV0gPSBSVFM1MjY0X1NT Q19ERVBUSF80TSwNCisJCVtSVFNYX1NTQ19ERVBUSF8yTV0gPSBSVFM1MjY0X1NTQ19ERVBUSF8y TSwNCisJCVtSVFNYX1NTQ19ERVBUSF8xTV0gPSBSVFM1MjY0X1NTQ19ERVBUSF8xTSwNCisJCVtS VFNYX1NTQ19ERVBUSF81MDBLXSA9IFJUUzUyNjRfU1NDX0RFUFRIXzUxMkssDQorCX07DQorDQor CWlmIChpbml0aWFsX21vZGUpIHsNCisJCS8qIFdlIHVzZSAyNTBrKGFyb3VuZCkgaGVyZSwgaW4g aW5pdGlhbCBzdGFnZSAqLw0KKwkJY2xrX2RpdmlkZXIgPSBTRF9DTEtfRElWSURFXzEyODsNCisJ CWNhcmRfY2xvY2sgPSAzMDAwMDAwMDsNCisJfSBlbHNlIHsNCisJCWNsa19kaXZpZGVyID0gU0Rf Q0xLX0RJVklERV8wOw0KKwl9DQorCWVyciA9IHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwg U0RfQ0ZHMSwNCisJCQlTRF9DTEtfRElWSURFX01BU0ssIGNsa19kaXZpZGVyKTsNCisJaWYgKGVy ciA8IDApDQorCQlyZXR1cm4gZXJyOw0KKw0KKwljYXJkX2Nsb2NrIC89IDEwMDAwMDA7DQorCXBj cl9kYmcocGNyLCAiU3dpdGNoIGNhcmQgY2xvY2sgdG8gJWRNSHpcbiIsIGNhcmRfY2xvY2spOw0K Kw0KKwljbGsgPSBjYXJkX2Nsb2NrOw0KKwlpZiAoIWluaXRpYWxfbW9kZSAmJiBkb3VibGVfY2xr KQ0KKwkJY2xrID0gY2FyZF9jbG9jayAqIDI7DQorCXBjcl9kYmcocGNyLCAiSW50ZXJuYWwgU1ND IGNsb2NrOiAlZE1IeiAoY3VyX2Nsb2NrID0gJWQpXG4iLA0KKwkJY2xrLCBwY3ItPmN1cl9jbG9j ayk7DQorDQorCWlmIChjbGsgPT0gcGNyLT5jdXJfY2xvY2spDQorCQlyZXR1cm4gMDsNCisNCisJ aWYgKHBjci0+b3BzLT5jb252X2Nsa19hbmRfZGl2X24pDQorCQluID0gcGNyLT5vcHMtPmNvbnZf Y2xrX2FuZF9kaXZfbihjbGssIENMS19UT19ESVZfTik7DQorCWVsc2UNCisJCW4gPSBjbGsgLSA0 Ow0KKwlpZiAoKGNsayA8PSA0KSB8fCAobiA+IDM5NikpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisN CisJbWN1X2NudCA9IDEyNS9jbGsgKyAzOw0KKwlpZiAobWN1X2NudCA+IDE1KQ0KKwkJbWN1X2Nu dCA9IDE1Ow0KKw0KKwlkaXYgPSBDTEtfRElWXzE7DQorCXdoaWxlICgobiA8IE1JTl9ESVZfTl9Q Q1IgLSA0KSAmJiAoZGl2IDwgQ0xLX0RJVl84KSkgew0KKwkJaWYgKHBjci0+b3BzLT5jb252X2Ns a19hbmRfZGl2X24pIHsNCisJCQlpbnQgZGJsX2NsayA9IHBjci0+b3BzLT5jb252X2Nsa19hbmRf ZGl2X24obiwNCisJCQkJCURJVl9OX1RPX0NMSykgKiAyOw0KKwkJCW4gPSBwY3ItPm9wcy0+Y29u dl9jbGtfYW5kX2Rpdl9uKGRibF9jbGssDQorCQkJCQlDTEtfVE9fRElWX04pOw0KKwkJfSBlbHNl IHsNCisJCQluID0gKG4gKyA0KSAqIDIgLSA0Ow0KKwkJfQ0KKwkJZGl2Kys7DQorCX0NCisNCisJ biA9IChuIC8gMikgLSAxOw0KKwlwY3JfZGJnKHBjciwgIm4gPSAlZCwgZGl2ID0gJWRcbiIsIG4s IGRpdik7DQorDQorCXNzY19kZXB0aCA9IGRlcHRoW3NzY19kZXB0aF07DQorCWlmIChkb3VibGVf Y2xrKQ0KKwkJc3NjX2RlcHRoID0gZG91YmxlX3NzY19kZXB0aChzc2NfZGVwdGgpOw0KKw0KKwlp ZiAoc3NjX2RlcHRoKSB7DQorCQlpZiAoZGl2ID09IENMS19ESVZfMikgew0KKwkJCWlmIChzc2Nf ZGVwdGggPiAxKQ0KKwkJCQlzc2NfZGVwdGggLT0gMTsNCisJCQllbHNlDQorCQkJCXNzY19kZXB0 aCA9IFJUUzUyNjRfU1NDX0RFUFRIXzhNOw0KKwkJfSBlbHNlIGlmIChkaXYgPT0gQ0xLX0RJVl80 KSB7DQorCQkJaWYgKHNzY19kZXB0aCA+IDIpDQorCQkJCXNzY19kZXB0aCAtPSAyOw0KKwkJCWVs c2UNCisJCQkJc3NjX2RlcHRoID0gUlRTNTI2NF9TU0NfREVQVEhfOE07DQorCQl9IGVsc2UgaWYg KGRpdiA9PSBDTEtfRElWXzgpIHsNCisJCQlpZiAoc3NjX2RlcHRoID4gMykNCisJCQkJc3NjX2Rl cHRoIC09IDM7DQorCQkJZWxzZQ0KKwkJCQlzc2NfZGVwdGggPSBSVFM1MjY0X1NTQ19ERVBUSF84 TTsNCisJCX0NCisJfSBlbHNlIHsNCisJCXNzY19kZXB0aCA9IDA7DQorCX0NCisJcGNyX2RiZyhw Y3IsICJzc2NfZGVwdGggPSAlZFxuIiwgc3NjX2RlcHRoKTsNCisNCisJcnRzeF9wY2lfaW5pdF9j bWQocGNyKTsNCisJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIENMS19DVEws DQorCQkJCUNIQU5HRV9DTEssIENIQU5HRV9DTEspOw0KKwlydHN4X3BjaV9hZGRfY21kKHBjciwg V1JJVEVfUkVHX0NNRCwgQ0xLX0RJViwNCisJCQkweEZGLCAoZGl2IDw8IDQpIHwgbWN1X2NudCk7 DQorCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBTU0NfQ1RMMSwgU1NDX1JT VEIsIDApOw0KKwlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgU1NDX0NUTDIs DQorCQkJU1NDX0RFUFRIX01BU0ssIHNzY19kZXB0aCk7DQorCXJ0c3hfcGNpX2FkZF9jbWQocGNy LCBXUklURV9SRUdfQ01ELCBTU0NfRElWX05fMCwgMHhGRiwgbik7DQorDQorCWlmIChpc192ZXJz aW9uKHBjciwgMHg1MjY0LCBJQ19WRVJfQSkpIHsNCisJCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBX UklURV9SRUdfQ01ELCBTU0NfQ1RMMSwgU1NDX1JTVEIsIDApOw0KKwkJcnRzeF9wY2lfYWRkX2Nt ZChwY3IsIFdSSVRFX1JFR19DTUQsIFJUUzUyNjRfQ0FSRF9DTEtfU1JDMiwNCisJCQlSVFM1MjY0 X1JFR19CSUdfS1ZDT19BLCAwKTsNCisJfSBlbHNlIHsNCisJCXJ0c3hfcGNpX2FkZF9jbWQocGNy LCBXUklURV9SRUdfQ01ELCBTU0NfQ1RMMSwgU1NDX1JTVEIsIFNTQ19SU1RCKTsNCisJCXJ0c3hf cGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBSVFM1MjY0X1NZU19EVU1NWV8xLA0KKwkJ CVJUUzUyNjRfUkVHX0JJR19LVkNPLCAwKTsNCisJfQ0KKw0KKwlpZiAodnBjbGspIHsNCisJCXJ0 c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBTRF9WUENMSzBfQ1RMLA0KKwkJCQlQ SEFTRV9OT1RfUkVTRVQsIDApOw0KKwkJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19D TUQsIFNEX1ZQQ0xLMV9DVEwsDQorCQkJCVBIQVNFX05PVF9SRVNFVCwgMCk7DQorCQlydHN4X3Bj aV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgU0RfVlBDTEswX0NUTCwNCisJCQkJUEhBU0Vf Tk9UX1JFU0VULCBQSEFTRV9OT1RfUkVTRVQpOw0KKwkJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdS SVRFX1JFR19DTUQsIFNEX1ZQQ0xLMV9DVEwsDQorCQkJCVBIQVNFX05PVF9SRVNFVCwgUEhBU0Vf Tk9UX1JFU0VUKTsNCisJfQ0KKw0KKwllcnIgPSBydHN4X3BjaV9zZW5kX2NtZChwY3IsIDIwMDAp Ow0KKwlpZiAoZXJyIDwgMCkNCisJCXJldHVybiBlcnI7DQorDQorCS8qIFdhaXQgU1NDIGNsb2Nr IHN0YWJsZSAqLw0KKwl1ZGVsYXkoU1NDX0NMT0NLX1NUQUJMRV9XQUlUKTsNCisJZXJyID0gcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBDTEtfQ1RMLCBDSEFOR0VfQ0xLLCAwKTsNCisJaWYg KGVyciA8IDApDQorCQlyZXR1cm4gZXJyOw0KKw0KKwlwY3ItPmN1cl9jbG9jayA9IGNsazsNCisJ cmV0dXJuIDA7DQorfQ0KKw0KK3ZvaWQgcnRzNTI2NF9pbml0X3BhcmFtcyhzdHJ1Y3QgcnRzeF9w Y3IgKnBjcikNCit7DQorCXN0cnVjdCBydHN4X2NyX29wdGlvbiAqb3B0aW9uID0gJnBjci0+b3B0 aW9uOw0KKwlzdHJ1Y3QgcnRzeF9od19wYXJhbSAqaHdfcGFyYW0gPSAmcGNyLT5od19wYXJhbTsN CisJdTggdmFsOw0KKw0KKwlwY3ItPmV4dHJhX2NhcHMgPSBFWFRSQV9DQVBTX1NEX1NEUjUwIHwg RVhUUkFfQ0FQU19TRF9TRFIxMDQ7DQorCXBjci0+ZXh0cmFfY2FwcyB8PSBFWFRSQV9DQVBTX05P X01NQzsNCisJcnRzeF9wY2lfcmVhZF9yZWdpc3RlcihwY3IsIFJUUzUyNjRfRldfU1RBVFVTLCAm dmFsKTsNCisJaWYgKCEodmFsICYgUlRTNTI2NF9FWFBSRVNTX0xJTktfRkFJTF9NQVNLKSkNCisJ CXBjci0+ZXh0cmFfY2FwcyB8PSBFWFRSQV9DQVBTX1NEX0VYUFJFU1M7DQorCXBjci0+bnVtX3Ns b3RzID0gMTsNCisJcGNyLT5vcHMgPSAmcnRzNTI2NF9wY3Jfb3BzOw0KKw0KKwlwY3ItPmZsYWdz ID0gMDsNCisJcGNyLT5jYXJkX2RyaXZlX3NlbCA9IFJUU1hfQ0FSRF9EUklWRV9ERUZBVUxUOw0K KwlwY3ItPnNkMzBfZHJpdmVfc2VsXzF2OCA9IDB4MDA7DQorCXBjci0+c2QzMF9kcml2ZV9zZWxf M3YzID0gMHgwMDsNCisJcGNyLT5hc3BtX2VuID0gQVNQTV9MMV9FTjsNCisJcGNyLT5hc3BtX21v ZGUgPSBBU1BNX01PREVfUkVHOw0KKwlwY3ItPnR4X2luaXRpYWxfcGhhc2UgPSBTRVRfQ0xPQ0tf UEhBU0UoMjQsIDI0LCAxMSk7DQorCXBjci0+cnhfaW5pdGlhbF9waGFzZSA9IFNFVF9DTE9DS19Q SEFTRSgyNCwgNiwgNSk7DQorDQorCXBjci0+aWNfdmVyc2lvbiA9IHJ0czUyNjRfZ2V0X2ljX3Zl cnNpb24ocGNyKTsNCisJcGNyLT5zZF9wdWxsX2N0bF9lbmFibGVfdGJsID0gcnRzNTI2NF9zZF9w dWxsX2N0bF9lbmFibGVfdGJsOw0KKwlwY3ItPnNkX3B1bGxfY3RsX2Rpc2FibGVfdGJsID0gcnRz NTI2NF9zZF9wdWxsX2N0bF9kaXNhYmxlX3RibDsNCisNCisJcGNyLT5yZWdfcG1fY3RybDMgPSBS VFM1MjY0X0FVVE9MT0FEX0NGRzM7DQorDQorCW9wdGlvbi0+ZGV2X2ZsYWdzID0gKExUUl9MMVNT X1BXUl9HQVRFX0NIRUNLX0NBUkRfRU4NCisJCQkJfCBMVFJfTDFTU19QV1JfR0FURV9FTik7DQor CW9wdGlvbi0+bHRyX2VuID0gdHJ1ZTsNCisNCisJLyogaW5pdCBsYXRlbmN5IG9mIGFjdGl2ZSwg aWRsZSwgTDFPRkYgdG8gNjB1cywgMzAwdXMsIDNtcyAqLw0KKwlvcHRpb24tPmx0cl9hY3RpdmVf bGF0ZW5jeSA9IExUUl9BQ1RJVkVfTEFURU5DWV9ERUY7DQorCW9wdGlvbi0+bHRyX2lkbGVfbGF0 ZW5jeSA9IExUUl9JRExFX0xBVEVOQ1lfREVGOw0KKwlvcHRpb24tPmx0cl9sMW9mZl9sYXRlbmN5 ID0gTFRSX0wxT0ZGX0xBVEVOQ1lfREVGOw0KKwlvcHRpb24tPmwxX3Nub296ZV9kZWxheSA9IEwx X1NOT09aRV9ERUxBWV9ERUY7DQorCW9wdGlvbi0+bHRyX2wxb2ZmX3NzcHdyZ2F0ZSA9IDB4N0Y7 DQorCW9wdGlvbi0+bHRyX2wxb2ZmX3Nub296ZV9zc3B3cmdhdGUgPSAweDc4Ow0KKw0KKwlvcHRp b24tPm9jcF9lbiA9IDE7DQorCWh3X3BhcmFtLT5pbnRlcnJ1cHRfZW4gfD0gKFNEX09DX0lOVF9F TiB8IFNEX09WUF9JTlRfRU4pOw0KKwlod19wYXJhbS0+b2NwX2dsaXRjaCA9ICBTRF9PQ1BfR0xJ VENIXzgwMFUgfCBTRFZJT19PQ1BfR0xJVENIXzgwMFU7DQorCW9wdGlvbi0+c2RfODAwbUFfb2Nw X3RoZCA9ICBSVFM1MjY0X0xETzFfT0NQX1RIRF8xMTUwOw0KK30NCmRpZmYgLS1naXQgYS9kcml2 ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjY0LmggYi9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9y dHM1MjY0LmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmUzY2Ji ZjJmZTFhNA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRz NTI2NC5oDQpAQCAtMCwwICsxLDI3OCBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9ubHkgKi8NCisvKiBEcml2ZXIgZm9yIFJlYWx0ZWsgUENJLUV4cHJlc3MgY2FyZCBy ZWFkZXINCisgKg0KKyAqIENvcHlyaWdodChjKSAyMDE4LTIwMTkgUmVhbHRlayBTZW1pY29uZHVj dG9yIENvcnAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBBdXRob3I6DQorICogICBS aWNreSBXdSA8cmlja3lfd3VAcmVhbHRlay5jb20+DQorICovDQorI2lmbmRlZiBSVFM1MjY0X0gN CisjZGVmaW5lIFJUUzUyNjRfSA0KKw0KKy8qTmV3IGFkZCovDQorI2RlZmluZSBydHM1MjY0X3Zl bmRvcl9zZXR0aW5nX3ZhbGlkKHJlZykJKChyZWcpICYgMHgwMTAwMDApDQorI2RlZmluZSBydHM1 MjY0X3JlZ190b19hc3BtKHJlZykgXA0KKwkoKCh+KHJlZykgPj4gMjgpICYgMHgwMikgfCAoKChy ZWcpID4+IDI4KSAmIDB4MDEpKQ0KKyNkZWZpbmUgcnRzNTI2NF9yZWdfY2hlY2tfcmV2ZXJzZV9z b2NrZXQocmVnKQkoKHJlZykgJiAweDA0KQ0KKyNkZWZpbmUgcnRzNTI2NF9yZWdfdG9fc2QzMF9k cml2ZV9zZWxfMXY4KHJlZykJKCgocmVnKSA+PiAyMikgJiAweDAzKQ0KKyNkZWZpbmUgcnRzNTI2 NF9yZWdfdG9fc2QzMF9kcml2ZV9zZWxfM3YzKHJlZykJKCgocmVnKSA+PiAxNikgJiAweDAzKQ0K KyNkZWZpbmUgcnRzNTI2NF9yZWdfdG9fcnRkMyhyZWcpCQkoKHJlZykgJiAweDA4KQ0KKw0KKyNk ZWZpbmUgUlRTNTI2NF9BVVRPTE9BRF9DRkcwCQkweEZGN0INCisjZGVmaW5lIFJUUzUyNjRfQVVU T0xPQURfQ0ZHMQkJMHhGRjdDDQorI2RlZmluZSBSVFM1MjY0X0FVVE9MT0FEX0NGRzMJCTB4RkY3 RQ0KKyNkZWZpbmUgUlRTNTI2NF9BVVRPTE9BRF9DRkc0CQkweEZGN0YNCisjZGVmaW5lIFJUUzUy NjRfRk9SQ0VfUFJTTlRfTE9XCQkoMSA8PCA2KQ0KKyNkZWZpbmUgUlRTNTI2NF9BVVhfQ0xLXzE2 TV9FTgkJKDEgPDwgNSkNCisjZGVmaW5lIFJUUzUyNjRfRl9ISUdIX1JDX01BU0sJCSgxIDw8IDQp DQorI2RlZmluZSBSVFM1MjY0X0ZfSElHSF9SQ18xXzZNCQkoMSA8PCA0KQ0KKyNkZWZpbmUgUlRT NTI2NF9GX0hJR0hfUkNfNDAwSwkJKDAgPDwgNCkNCisNCisvKiBTU0NfQ1RMMiAweEZDMTIgKi8N CisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRIX01BU0sJCTB4MDcNCisjZGVmaW5lIFJUUzUyNjRf U1NDX0RFUFRIX0RJU0FMQkUJMHgwMA0KKyNkZWZpbmUgUlRTNTI2NF9TU0NfREVQVEhfOE0JCTB4 MDENCisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRIXzRNCQkweDAyDQorI2RlZmluZSBSVFM1MjY0 X1NTQ19ERVBUSF8yTQkJMHgwMw0KKyNkZWZpbmUgUlRTNTI2NF9TU0NfREVQVEhfMU0JCTB4MDQN CisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRIXzUxMksJCTB4MDUNCisjZGVmaW5lIFJUUzUyNjRf U1NDX0RFUFRIXzI1NksJCTB4MDYNCisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRIXzEyOEsJCTB4 MDcNCisNCisjZGVmaW5lIFJUUzUyNjRfQ0FSRF9DTEtfU1JDMgkJMHhGQzJGDQorI2RlZmluZSBS VFM1MjY0X1JFR19CSUdfS1ZDT19BCQkweDIwDQorDQorLyogZWZ1c2UgY29udHJvbCByZWdpc3Rl ciovDQorI2RlZmluZSBSVFM1MjY0X0VGVVNFX0NUTAkJMHhGQzMwDQorI2RlZmluZSBSVFM1MjY0 X0VGVVNFX0VOQUJMRQkJMHg4MA0KKy8qIEVGVVNFX01PREU6IDA9UkVBRCAxPVBST0dSQU0gKi8N CisjZGVmaW5lIFJUUzUyNjRfRUZVU0VfTU9ERV9NQVNLCQkweDQwDQorI2RlZmluZSBSVFM1MjY0 X0VGVVNFX1BST0dSQU0JCTB4NDANCisNCisjZGVmaW5lIFJUUzUyNjRfRUZVU0VfQUREUgkJMHhG QzMxDQorI2RlZmluZQlSVFM1MjY0X0VGVVNFX0FERFJfTUFTSwkJMHgzRg0KKw0KKyNkZWZpbmUg UlRTNTI2NF9FRlVTRV9XUklURV9EQVRBCTB4RkMzMg0KKyNkZWZpbmUgUlRTNTI2NF9FRlVTRV9S RUFEX0RBVEEJCTB4RkMzNA0KKw0KKyNkZWZpbmUgUlRTNTI2NF9TWVNfRFVNTVlfMQkJMHhGQzM1 DQorI2RlZmluZSBSVFM1MjY0X1JFR19CSUdfS1ZDTwkJMHgwNA0KKw0KKy8qIERNQUNUTCAweEZF MkMgKi8NCisjZGVmaW5lIFJUUzUyNjRfRE1BX1BBQ0tfU0laRV9NQVNLCTB4NzANCisNCisjZGVm aW5lIFJUUzUyNjRfRldfQ0ZHMQkJCTB4RkY1NQ0KKyNkZWZpbmUgUlRTNTI2NF9TWVNfQ0xLX1NF TF9NQ1VfQ0xLCSgweDAxPDw3KQ0KKyNkZWZpbmUgUlRTNTI2NF9DUkNfQ0xLX1NFTF9NQ1VfQ0xL CSgweDAxPDw2KQ0KKyNkZWZpbmUgUlRTNTI2NF9GQUtFX01DVV9DTE9DS19HQVRJTkcJKDB4MDE8 PDUpDQorI2RlZmluZSBSVFM1MjY0X01DVV9CVVNfU0VMX01BU0sJKDB4MDE8PDQpDQorDQorLyog Rlcgc3RhdHVzIHJlZ2lzdGVyICovDQorI2RlZmluZSBSVFM1MjY0X0ZXX1NUQVRVUwkJMHhGRjU2 DQorI2RlZmluZSBSVFM1MjY0X0VYUFJFU1NfTElOS19GQUlMX01BU0sJKDB4MDE8PDcpDQorDQor LyogRlcgY29udHJvbCByZWdpc3RlciAqLw0KKyNkZWZpbmUgUlRTNTI2NF9GV19DVEwJCQkweEZG NUYNCisjZGVmaW5lIFJUUzUyNjRfSU5GT1JNX1JURDNfQ09MRAkoMHgwMTw8NSkNCisNCisjZGVm aW5lIFJUUzUyNjRfUkVHX0ZQRENUTAkJMHhGRjYwDQorDQorI2RlZmluZSBSVFM1MjY0X1JFR19M RE8xMl9DRkcJCTB4RkY2RQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xMl9TUl9NQVNLCQkoMHgwMzw8 NikNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfU1JfMV8wX01TCQkoMHgwMzw8NikNCisjZGVmaW5l IFJUUzUyNjRfTERPMTJfU1JfMF81X01TCQkoMHgwMjw8NikNCisjZGVmaW5lIFJUUzUyNjRfTERP MTJfU1JfMF8yXzVfTVMJKDB4MDE8PDYpDQorI2RlZmluZSBSVFM1MjY0X0xETzEyX1NSXzBfMF9N UwkJKDB4MDA8PDYpDQorI2RlZmluZSBSVFM1MjY0X0xETzEyX1ZPX1RVTkVfTUFTSwkoMHgwNzw8 MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfMTE1CQkoMHgwMzw8MSkNCisjZGVmaW5lIFJUUzUy NjRfTERPMTJfMTIwCQkoMHgwNDw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfMTI1CQkoMHgw NTw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfMTMwCQkoMHgwNjw8MSkNCisjZGVmaW5lIFJU UzUyNjRfTERPMTJfMTM1CQkoMHgwNzw8MSkNCisNCisvKiBMRE8gY29udHJvbCByZWdpc3RlciAq Lw0KKyNkZWZpbmUgUlRTNTI2NF9DQVJEX1BXUl9DVEwJCTB4RkQ1MA0KKyNkZWZpbmUgUlRTNTI2 NF9TRF9DTEtfSVNPCQkoMHgwMTw8NykNCisjZGVmaW5lIFJUUzUyNjRfUEFEX1NEX0RBVF9GV19D VFJMCSgweDAxPDw2KQ0KKyNkZWZpbmUgUlRTNTI2NF9QVVBEQwkJCSgweDAxPDw1KQ0KKyNkZWZp bmUgUlRTNTI2NF9TRF9DTURfSVNPCQkoMHgwMTw8NCkNCisNCisjZGVmaW5lIFJUUzUyNjRfT0NQ X1ZERDNfQ1RMCQkweEZEODkNCisjZGVmaW5lIFNEX1ZERDNfREVURUNUX0VOCQkweDA4DQorI2Rl ZmluZSBTRF9WREQzX09DUF9JTlRfRU4JCTB4MDQNCisjZGVmaW5lIFNEX1ZERDNfT0NQX0lOVF9D TFIJCTB4MDINCisjZGVmaW5lIFNEX1ZERDNfT0NfQ0xSCQkJMHgwMQ0KKw0KKyNkZWZpbmUgUlRT NTI2NF9PQ1BfVkREM19TVFMJCTB4RkQ4QQ0KKyNkZWZpbmUgU0RfVkREM19PQ1BfREVURUNUCQkw eDA4DQorI2RlZmluZSBTRF9WREQzX09DX05PVwkJCTB4MDQNCisjZGVmaW5lIFNEX1ZERDNfT0Nf RVZFUgkJCTB4MDINCisNCisjZGVmaW5lIFJUUzUyNjRfT1ZQX0NUTAkJCTB4RkQ4RA0KKyNkZWZp bmUgUlRTNTI2NF9PVlBfVElNRV9NQVNLCQkweEYwDQorI2RlZmluZSBSVFM1MjY0X09WUF9USU1F X0RGVAkJMHg1MA0KKyNkZWZpbmUgUlRTNTI2NF9PVlBfREVURUNUX0VOCQkweDA4DQorI2RlZmlu ZSBSVFM1MjY0X09WUF9JTlRfRU4JCTB4MDQNCisjZGVmaW5lIFJUUzUyNjRfT1ZQX0lOVF9DTFIJ CTB4MDINCisjZGVmaW5lIFJUUzUyNjRfT1ZQX0NMUgkJCTB4MDENCisNCisjZGVmaW5lIFJUUzUy NjRfT1ZQX1NUUwkJCTB4RkQ4RQ0KKyNkZWZpbmUgUlRTNTI2NF9PVlBfR0xUQ0hfVElNRV9NQVNL CTB4RjANCisjZGVmaW5lIFJUUzUyNjRfT1ZQX0dMVENIX1RJTUVfREZUCTB4NTANCisjZGVmaW5l IFJUUzUyNjRfVk9WRVJfREVUCQkweDA4DQorI2RlZmluZSBSVFM1MjY0X09WUF9OT1cJCQkweDA0 DQorI2RlZmluZSBSVFM1MjY0X09WUF9FVkVSCQkweDAyDQorDQorI2RlZmluZSBSVFM1MjY0X0NN RF9PRV9TVEFSVF9FQVJMWQkJMHhGRENCDQorI2RlZmluZSBSVFM1MjY0X0NNRF9PRV9FQVJMWV9M RUFWRQkJMHgwOA0KKyNkZWZpbmUgUlRTNTI2NF9DTURfT0VfRUFSTFlfQ1lDTEVfTUFTSwkJMHgw Ng0KKyNkZWZpbmUgUlRTNTI2NF9DTURfT0VfRUFSTFlfNENZQ0xFCQkweDA2DQorI2RlZmluZSBS VFM1MjY0X0NNRF9PRV9FQVJMWV8zQ1lDTEUJCTB4MDQNCisjZGVmaW5lIFJUUzUyNjRfQ01EX09F X0VBUkxZXzJDWUNMRQkJMHgwMg0KKyNkZWZpbmUgUlRTNTI2NF9DTURfT0VfRUFSTFlfMUNZQ0xF CQkweDAwDQorI2RlZmluZSBSVFM1MjY0X0NNRF9PRV9FQVJMWV9FTgkJCTB4MDENCisNCisjZGVm aW5lIFJUUzUyNjRfREFUX09FX1NUQVJUX0VBUkxZCQkweEZEQ0MNCisjZGVmaW5lIFJUUzUyNjRf REFUX09FX0VBUkxZX0xFQVZFCQkweDA4DQorI2RlZmluZSBSVFM1MjY0X0RBVF9PRV9FQVJMWV9D WUNMRV9NQVNLCQkweDA2DQorI2RlZmluZSBSVFM1MjY0X0RBVF9PRV9FQVJMWV80Q1lDTEUJCTB4 MDYNCisjZGVmaW5lIFJUUzUyNjRfREFUX09FX0VBUkxZXzNDWUNMRQkJMHgwNA0KKyNkZWZpbmUg UlRTNTI2NF9EQVRfT0VfRUFSTFlfMkNZQ0xFCQkweDAyDQorI2RlZmluZSBSVFM1MjY0X0RBVF9P RV9FQVJMWV8xQ1lDTEUJCTB4MDANCisjZGVmaW5lIFJUUzUyNjRfREFUX09FX0VBUkxZX0VOCQkJ MHgwMQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xMjMzMzE4X1BPV19DVEwJMHhGRjcwDQorI2Rl ZmluZSBSVFM1MjY0X1RVTkVfUkVGX0xETzMzMTgJKDB4MDM8PDYpDQorI2RlZmluZSBSVFM1MjY0 X1RVTkVfUkVGX0xETzMzMThfREZUCSgweDAyPDw2KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zMzE4 X1BPV0VST04JCSgweDAxPDwzKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX1BPV0VST04JCSgweDAx PDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX1BPV0VST04JCSgweDAxPDwxKQ0KKyNkZWZpbmUg UlRTNTI2NF9MRE8xX1BPV0VST04JCSgweDAxPDwwKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE9fUE9X RVJPTl9NQVNLCSgweDBGPDwwKQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9EVjMzMThfQ0ZHCQkweEZG NzENCisjZGVmaW5lIFJUUzUyNjRfRFYzMzE4X1RVTkVfTUFTSwkoMHgwNzw8NCkNCisjZGVmaW5l IFJUUzUyNjRfRFYzMzE4XzE4CQkoMHgwMjw8NCkNCisjZGVmaW5lIFJUUzUyNjRfRFYzMzE4XzE5 CQkoMHgwNDw8NCkNCisjZGVmaW5lIFJUUzUyNjRfRFYzMzE4XzMzCQkoMHgwNzw8NCkNCisNCisj ZGVmaW5lIFJUUzUyNjRfTERPMV9DRkcwCQkweEZGNzINCisjZGVmaW5lIFJUUzUyNjRfTERPMV9P Q1BfVEhEX01BU0sJKDB4MDcgPDwgNSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9PQ1BfRU4JCSgw eDAxIDw8IDQpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfT0NQX0xNVF9USERfTUFTSwkoMHgwMyA8 PCAyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX09DUF9MTVRfRU4JCSgweDAxIDw8IDEpDQorDQor I2RlZmluZSBSVFM1MjY0X0xETzFfT0NQX1RIRF84NTAJKDB4MDA8PDUpDQorI2RlZmluZSBSVFM1 MjY0X0xETzFfT0NQX1RIRF85NTAJKDB4MDE8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfT0NQ X1RIRF8xMDUwCSgweDAyPDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX09DUF9USERfMTEwMAko MHgwMzw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9PQ1BfVEhEXzExNTAJKDB4MDQ8PDUpDQor I2RlZmluZSBSVFM1MjY0X0xETzFfT0NQX1RIRF8xMjAwCSgweDA1PDw1KQ0KKyNkZWZpbmUgUlRT NTI2NF9MRE8xX09DUF9USERfMTMwMAkoMHgwNjw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9P Q1BfVEhEXzEzNTAJKDB4MDc8PDUpDQorDQorI2RlZmluZSBSVFM1MjY0X0xETzFfTE1UX1RIRF8x NzAwCSgweDAwPDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX0xNVF9USERfMTgwMAkoMHgwMTw8 MikNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9MTVRfVEhEXzE5MDAJKDB4MDI8PDIpDQorI2RlZmlu ZSBSVFM1MjY0X0xETzFfTE1UX1RIRF8yMDAwCSgweDAzPDwyKQ0KKw0KKyNkZWZpbmUgUlRTNTI2 NF9MRE8xX0NGRzEJCTB4RkY3Mw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX1RVTkVfTUFTSwkJKDB4 MDc8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfMTgJCQkoMHgwNTw8MSkNCisjZGVmaW5lIFJU UzUyNjRfTERPMV8zMwkJCSgweDA3PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX1BXRF9NQVNL CQkoMHgwMTw8MCkNCisNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9DRkcwCQkweEZGNzQNCisjZGVm aW5lIFJUUzUyNjRfTERPMl9PQ1BfVEhEX01BU0sJKDB4MDc8PDUpDQorI2RlZmluZSBSVFM1MjY0 X0xETzJfT0NQX0VOCQkoMHgwMTw8NCkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9PQ1BfTE1UX1RI RF9NQVNLCSgweDAzPDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9MTVRfRU4JCSgweDAx PDwxKQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9USERfNzUwCSgweDAwPDw1KQ0KKyNk ZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9USERfODUwCSgweDAxPDw1KQ0KKyNkZWZpbmUgUlRTNTI2 NF9MRE8yX09DUF9USERfOTAwCSgweDAyPDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9U SERfOTUwCSgweDAzPDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9USERfMTA1MAkoMHgw NDw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9PQ1BfVEhEXzExMDAJKDB4MDU8PDUpDQorI2Rl ZmluZSBSVFM1MjY0X0xETzJfT0NQX1RIRF8xMTUwCSgweDA2PDw1KQ0KKyNkZWZpbmUgUlRTNTI2 NF9MRE8yX09DUF9USERfMTIwMAkoMHgwNzw8NSkNCisNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9M TVRfVEhEXzE3MDAJKDB4MDA8PDIpDQorI2RlZmluZSBSVFM1MjY0X0xETzJfTE1UX1RIRF8xODAw CSgweDAxPDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX0xNVF9USERfMTkwMAkoMHgwMjw8MikN CisjZGVmaW5lIFJUUzUyNjRfTERPMl9MTVRfVEhEXzIwMDAJKDB4MDM8PDIpDQorDQorI2RlZmlu ZSBSVFM1MjY0X0xETzJfQ0ZHMQkJMHhGRjc1DQorI2RlZmluZSBSVFM1MjY0X0xETzJfVFVORV9N QVNLCQkoMHgwNzw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl8xOAkJCSgweDAyPDwxKQ0KKyNk ZWZpbmUgUlRTNTI2NF9MRE8yXzE4NQkJKDB4MDM8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzJf MTkJCQkoMHgwNDw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl8xOTUJCSgweDA1PDwxKQ0KKyNk ZWZpbmUgUlRTNTI2NF9MRE8yXzMzCQkJKDB4MDc8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzJf UFdEX01BU0sJCSgweDAxPDwwKQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX0NGRzAJCTB4RkY3 Ng0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX09DUF9USERfTUFTSwkoMHgwNzw8NSkNCisjZGVmaW5l IFJUUzUyNjRfTERPM19PQ1BfRU4JCSgweDAxPDw0KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX09D UF9MTVRfVEhEX01BU0sJKDB4MDM8PDIpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX0xNVF9F TgkJKDB4MDE8PDEpDQorDQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX1RIRF82MTAJKDB4MDA8 PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX1RIRF82MzAJKDB4MDE8PDUpDQorI2RlZmlu ZSBSVFM1MjY0X0xETzNfT0NQX1RIRF82NzAJKDB4MDI8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xE TzNfT0NQX1RIRF83MTAJKDB4MDM8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX1RIRF83 NTAJKDB4MDQ8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX1RIRF83NzAJKDB4MDU8PDUp DQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX1RIRF84MTAJKDB4MDY8PDUpDQorI2RlZmluZSBS VFM1MjY0X0xETzNfT0NQX1RIRF84NTAJKDB4MDc8PDUpDQorDQorI2RlZmluZSBSVFM1MjY0X0xE TzNfTE1UX1RIRF8xMjAwCSgweDAwPDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX0xNVF9USERf MTMwMAkoMHgwMTw8MikNCisjZGVmaW5lIFJUUzUyNjRfTERPM19MTVRfVEhEXzE0MDAJKDB4MDI8 PDIpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfTE1UX1RIRF8xNTAwCSgweDAzPDwyKQ0KKw0KKyNk ZWZpbmUgUlRTNTI2NF9MRE8zX0NGRzEJCTB4RkY3Nw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX1RV TkVfTUFTSwkJKDB4MDc8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfMTIJCQkoMHgwMjw8MSkN CisjZGVmaW5lIFJUUzUyNjRfTERPM18xMjUJCSgweDAzPDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9M RE8zXzEzCQkJKDB4MDQ8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfMTM1CQkoMHgwNTw8MSkN CisjZGVmaW5lIFJUUzUyNjRfTERPM18zMwkJCSgweDA3PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9M RE8zX1BXRF9NQVNLCQkoMHgwMTw8MCkNCisNCisjZGVmaW5lIFJUUzUyNjRfUkVHX1BNRV9GT1JD RV9DVEwJMHhGRjc4DQorI2RlZmluZSBGT1JDRV9QTV9DT05UUk9MCQkweDIwDQorI2RlZmluZSBG T1JDRV9QTV9WQUxVRQkJCTB4MTANCisjZGVmaW5lIFJFR19FRlVTRV9CWVBBU1MJCTB4MDgNCisj ZGVmaW5lIFJFR19FRlVTRV9QT1IJCQkweDA0DQorI2RlZmluZSBSRUdfRUZVU0VfUE9XRVJfTUFT SwkJMHgwMw0KKyNkZWZpbmUgUkVHX0VGVVNFX1BPV0VST04JCTB4MDMNCisjZGVmaW5lIFJFR19F RlVTRV9QT1dFUk9GRgkJMHgwMA0KKw0KKyNkZWZpbmUgUlRTNTI2NF9QV1JfQ1VUCQkJMHhGRjgx DQorI2RlZmluZSBSVFM1MjY0X0NGR19NRU1fUEQJCTB4RjANCisNCisjZGVmaW5lIFJUUzUyNjRf T1ZQX0RFVAkJCTB4RkY4QQ0KKyNkZWZpbmUgUlRTNTI2NF9QT1dfVkRFVAkJMHgwNA0KKyNkZWZp bmUgUlRTNTI2NF9UVU5FX1ZST1ZfTUFTSwkJMHgwMw0KKyNkZWZpbmUgUlRTNTI2NF9UVU5FX1ZS T1ZfMlYJCTB4MDMNCisjZGVmaW5lIFJUUzUyNjRfVFVORV9WUk9WXzFWOAkJMHgwMg0KKyNkZWZp bmUgUlRTNTI2NF9UVU5FX1ZST1ZfMVY2CQkweDAxDQorI2RlZmluZSBSVFM1MjY0X1RVTkVfVlJP Vl8xVjQJCTB4MDANCisNCisjZGVmaW5lIFJUUzUyNjRfQ0tNVVhfTUJJQVNfUFdSCQkweEZGOEIN CisjZGVmaW5lIFJUUzUyNjRfTk9OX1hUQUxfU0VMCQkweDgwDQorI2RlZmluZSBSVFM1MjY0X1BP V19DS01VWAkJMHg0MA0KKyNkZWZpbmUgUlRTNTI2NF9MVkRfTUFTSwkJMHgwNA0KKyNkZWZpbmUg UlRTNTI2NF9QT1dfUFNXX01BU0sJCTB4MDMNCisjZGVmaW5lIFJUUzUyNjRfUE9XX1BTV19ERlQJ CTB4MDMNCisNCisvKiBTaW5nbGUgTFVOLCBzdXBwb3J0IFNEL1NEIEVYUFJFU1MgKi8NCisjZGVm aW5lIERFRkFVTFRfU0lOR0xFCQkwDQorI2RlZmluZSBTRF9MVU4JCQkxDQorI2RlZmluZSBTRF9F WFBSRVNTX0xVTgkJMg0KKw0KK2ludCBydHM1MjY0X3BjaV9zd2l0Y2hfY2xvY2soc3RydWN0IHJ0 c3hfcGNyICpwY3IsIHVuc2lnbmVkIGludCBjYXJkX2Nsb2NrLA0KKwkJdTggc3NjX2RlcHRoLCBi b29sIGluaXRpYWxfbW9kZSwgYm9vbCBkb3VibGVfY2xrLCBib29sIHZwY2xrKTsNCisNCisjZW5k aWYgLyogUlRTNTI2NF9IICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIv cnRzeF9wY3IuYyBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0c3hfcGNyLmMNCmluZGV4IGEz MDc1MWFkMzczMy4uMWE2NDM2NDcwMGViIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9taXNjL2NhcmRy ZWFkZXIvcnRzeF9wY3IuYw0KKysrIGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzeF9wY3Iu Yw0KQEAgLTI2LDYgKzI2LDcgQEANCiAjaW5jbHVkZSAicnRzeF9wY3IuaCINCiAjaW5jbHVkZSAi cnRzNTI2MS5oIg0KICNpbmNsdWRlICJydHM1MjI4LmgiDQorI2luY2x1ZGUgInJ0czUyNjQuaCIN CiANCiBzdGF0aWMgYm9vbCBtc2lfZW4gPSB0cnVlOw0KIG1vZHVsZV9wYXJhbShtc2lfZW4sIGJv b2wsIFNfSVJVR08gfCBTX0lXVVNSKTsNCkBAIC01NCw2ICs1NSw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgcGNpX2RldmljZV9pZCBydHN4X3BjaV9pZHNbXSA9IHsNCiAJeyBQQ0lfREVWSUNFKDB4 MTBFQywgMHg1MjYwKSwgUENJX0NMQVNTX09USEVSUyA8PCAxNiwgMHhGRjAwMDAgfSwNCiAJeyBQ Q0lfREVWSUNFKDB4MTBFQywgMHg1MjYxKSwgUENJX0NMQVNTX09USEVSUyA8PCAxNiwgMHhGRjAw MDAgfSwNCiAJeyBQQ0lfREVWSUNFKDB4MTBFQywgMHg1MjI4KSwgUENJX0NMQVNTX09USEVSUyA8 PCAxNiwgMHhGRjAwMDAgfSwNCisJeyBQQ0lfREVWSUNFKDB4MTBFQywgMHg1MjY0KSwgUENJX0NM QVNTX09USEVSUyA8PCAxNiwgMHhGRjAwMDAgfSwNCiAJeyAwLCB9DQogfTsNCiANCkBAIC03MTQs NiArNzE2LDkgQEAgaW50IHJ0c3hfcGNpX3N3aXRjaF9jbG9jayhzdHJ1Y3QgcnRzeF9wY3IgKnBj ciwgdW5zaWduZWQgaW50IGNhcmRfY2xvY2ssDQogCWlmIChQQ0lfUElEKHBjcikgPT0gUElEXzUy MjgpDQogCQlyZXR1cm4gcnRzNTIyOF9wY2lfc3dpdGNoX2Nsb2NrKHBjciwgY2FyZF9jbG9jaywN CiAJCQkJc3NjX2RlcHRoLCBpbml0aWFsX21vZGUsIGRvdWJsZV9jbGssIHZwY2xrKTsNCisJaWYg KFBDSV9QSUQocGNyKSA9PSBQSURfNTI2NCkNCisJCXJldHVybiBydHM1MjY0X3BjaV9zd2l0Y2hf Y2xvY2socGNyLCBjYXJkX2Nsb2NrLA0KKwkJCQlzc2NfZGVwdGgsIGluaXRpYWxfbW9kZSwgZG91 YmxlX2NsaywgdnBjbGspOw0KIA0KIAlpZiAoaW5pdGlhbF9tb2RlKSB7DQogCQkvKiBXZSB1c2Ug MjUwayhhcm91bmQpIGhlcmUsIGluIGluaXRpYWwgc3RhZ2UgKi8NCkBAIC05ODcsNyArOTkyLDgg QEAgc3RhdGljIGlycXJldHVybl90IHJ0c3hfcGNpX2lzcihpbnQgaXJxLCB2b2lkICpkZXZfaWQp DQogDQogCWludF9yZWcgJj0gKHBjci0+YmllciB8IDB4N0ZGRkZGKTsNCiANCi0JaWYgKGludF9y ZWcgJiBTRF9PQ19JTlQpDQorCWlmICgoaW50X3JlZyAmIFNEX09DX0lOVCkgfHwNCisJCQkoKGlu dF9yZWcgJiBTRF9PVlBfSU5UKSAmJiAoUENJX1BJRChwY3IpID09IFBJRF81MjY0KSkpDQogCQly dHN4X3BjaV9wcm9jZXNzX29jcF9pbnRlcnJ1cHQocGNyKTsNCiANCiAJaWYgKGludF9yZWcgJiBT RF9JTlQpIHsNCkBAIC0xMTU5LDcgKzExNjUsOSBAQCB2b2lkIHJ0c3hfcGNpX2VuYWJsZV9vb2Jz X3BvbGxpbmcoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQogew0KIAl1MTYgdmFsOw0KIA0KLQlpZiAo KFBDSV9QSUQocGNyKSAhPSBQSURfNTI1QSkgJiYgKFBDSV9QSUQocGNyKSAhPSBQSURfNTI2MCkp IHsNCisJaWYgKChQQ0lfUElEKHBjcikgIT0gUElEXzUyNUEpICYmDQorCQkoUENJX1BJRChwY3Ip ICE9IFBJRF81MjYwKSAmJg0KKwkJKFBDSV9QSUQocGNyKSAhPSBQSURfNTI2NCkpIHsNCiAJCXJ0 c3hfcGNpX3JlYWRfcGh5X3JlZ2lzdGVyKHBjciwgMHgwMSwgJnZhbCk7DQogCQl2YWwgfD0gMTw8 OTsNCiAJCXJ0c3hfcGNpX3dyaXRlX3BoeV9yZWdpc3RlcihwY3IsIDB4MDEsIHZhbCk7DQpAQCAt MTE3NSw3ICsxMTgzLDkgQEAgdm9pZCBydHN4X3BjaV9kaXNhYmxlX29vYnNfcG9sbGluZyhzdHJ1 Y3QgcnRzeF9wY3IgKnBjcikNCiB7DQogCXUxNiB2YWw7DQogDQotCWlmICgoUENJX1BJRChwY3Ip ICE9IFBJRF81MjVBKSAmJiAoUENJX1BJRChwY3IpICE9IFBJRF81MjYwKSkgew0KKwlpZiAoKFBD SV9QSUQocGNyKSAhPSBQSURfNTI1QSkgJiYNCisJCShQQ0lfUElEKHBjcikgIT0gUElEXzUyNjAp ICYmDQorCQkoUENJX1BJRChwY3IpICE9IFBJRF81MjY0KSkgew0KIAkJcnRzeF9wY2lfcmVhZF9w aHlfcmVnaXN0ZXIocGNyLCAweDAxLCAmdmFsKTsNCiAJCXZhbCAmPSB+KDE8PDkpOw0KIAkJcnRz eF9wY2lfd3JpdGVfcGh5X3JlZ2lzdGVyKHBjciwgMHgwMSwgdmFsKTsNCkBAIC0xMjI2LDcgKzEy MzYsNyBAQCBzdGF0aWMgaW50IHJ0c3hfcGNpX2luaXRfaHcoc3RydWN0IHJ0c3hfcGNyICpwY3Ip DQogCXJ0c3hfcGNpX2VuYWJsZV9idXNfaW50KHBjcik7DQogDQogCS8qIFBvd2VyIG9uIFNTQyAq Lw0KLQlpZiAoUENJX1BJRChwY3IpID09IFBJRF81MjYxKSB7DQorCWlmICgoUENJX1BJRChwY3Ip ID09IFBJRF81MjYxKSB8fCAoUENJX1BJRChwY3IpID09IFBJRF81MjY0KSkgew0KIAkJLyogR2F0 aW5nIHJlYWwgbWN1IGNsb2NrICovDQogCQllcnIgPSBydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIFJUUzUyNjFfRldfQ0ZHMSwNCiAJCQlSVFM1MjYxX01DVV9DTE9DS19HQVRJTkcsIDApOw0K QEAgLTEyNzAsNiArMTI4MCwxMSBAQCBzdGF0aWMgaW50IHJ0c3hfcGNpX2luaXRfaHcoc3RydWN0 IHJ0c3hfcGNyICpwY3IpDQogCWVsc2UgaWYgKFBDSV9QSUQocGNyKSA9PSBQSURfNTIyOCkNCiAJ CXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBTU0NfQ1RMMiwgMHhGRiwNCiAJ CQlSVFM1MjI4X1NTQ19ERVBUSF8yTSk7DQorCWVsc2UgaWYgKGlzX3ZlcnNpb24ocGNyLCAweDUy NjQsIElDX1ZFUl9BKSkNCisJCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBT U0NfQ1RMMSwgU1NDX1JTVEIsIDApOw0KKwllbHNlIGlmIChQQ0lfUElEKHBjcikgPT0gUElEXzUy NjQpDQorCQlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgU1NDX0NUTDIsIDB4 RkYsDQorCQkJUlRTNTI2NF9TU0NfREVQVEhfMk0pOw0KIAllbHNlDQogCQlydHN4X3BjaV9hZGRf Y21kKHBjciwgV1JJVEVfUkVHX0NNRCwgU1NDX0NUTDIsIDB4RkYsIDB4MTIpOw0KIA0KQEAgLTEz MDUsNiArMTMyMCw3IEBAIHN0YXRpYyBpbnQgcnRzeF9wY2lfaW5pdF9odyhzdHJ1Y3QgcnRzeF9w Y3IgKnBjcikNCiAJY2FzZSBQSURfNTI2MDoNCiAJY2FzZSBQSURfNTI2MToNCiAJY2FzZSBQSURf NTIyODoNCisJY2FzZSBQSURfNTI2NDoNCiAJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwg UE1fQ0xLX0ZPUkNFX0NUTCwgMSwgMSk7DQogCQlicmVhazsNCiAJZGVmYXVsdDoNCkBAIC0xNDA0 LDYgKzE0MjAsMTAgQEAgc3RhdGljIGludCBydHN4X3BjaV9pbml0X2NoaXAoc3RydWN0IHJ0c3hf cGNyICpwY3IpDQogCWNhc2UgMHg1MjI4Og0KIAkJcnRzNTIyOF9pbml0X3BhcmFtcyhwY3IpOw0K IAkJYnJlYWs7DQorDQorCWNhc2UgMHg1MjY0Og0KKwkJcnRzNTI2NF9pbml0X3BhcmFtcyhwY3Ip Ow0KKwkJYnJlYWs7DQogCX0NCiANCiAJcGNyX2RiZyhwY3IsICJQSUQ6IDB4JTA0eCwgSUMgdmVy c2lvbjogMHglMDJ4XG4iLA0KQEAgLTE1NDQsNyArMTU2NCw3IEBAIHN0YXRpYyBpbnQgcnRzeF9w Y2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaWRldiwNCiAJcGNyLT5wY2kgPSBwY2lkZXY7DQog CWRldl9zZXRfZHJ2ZGF0YSgmcGNpZGV2LT5kZXYsIGhhbmRsZSk7DQogDQotCWlmIChDSEtfUENJ X1BJRChwY3IsIDB4NTI1QSkpDQorCWlmICgoQ0hLX1BDSV9QSUQocGNyLCAweDUyNUEpKSB8fCAo Q0hLX1BDSV9QSUQocGNyLCAweDUyNjQpKSkNCiAJCWJhciA9IDE7DQogCWxlbiA9IHBjaV9yZXNv dXJjZV9sZW4ocGNpZGV2LCBiYXIpOw0KIAliYXNlID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaWRl diwgYmFyKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5o IGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzeF9wY3IuaA0KaW5kZXggMzdkMWYzMTZhZTE3 Li45MjE1ZDY2ZGUwMGMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4 X3Bjci5oDQorKysgYi9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5oDQpAQCAtNzQs NiArNzQsNyBAQCB2b2lkIHJ0bDg0MTFiX2luaXRfcGFyYW1zKHN0cnVjdCBydHN4X3BjciAqcGNy KTsNCiB2b2lkIHJ0czUyNjBfaW5pdF9wYXJhbXMoc3RydWN0IHJ0c3hfcGNyICpwY3IpOw0KIHZv aWQgcnRzNTI2MV9pbml0X3BhcmFtcyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcik7DQogdm9pZCBydHM1 MjI4X2luaXRfcGFyYW1zKHN0cnVjdCBydHN4X3BjciAqcGNyKTsNCit2b2lkIHJ0czUyNjRfaW5p dF9wYXJhbXMoc3RydWN0IHJ0c3hfcGNyICpwY3IpOw0KIA0KIHN0YXRpYyBpbmxpbmUgdTggbWFw X3NkX2RyaXZlKGludCBpZHgpDQogew0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcnRzeF9w Y2kuaCBiL2luY2x1ZGUvbGludXgvcnRzeF9wY2kuaA0KaW5kZXggNTM0MDM4ZDk2MmU0Li40NjEy ZWYwOWEwYzcgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL2xpbnV4L3J0c3hfcGNpLmgNCisrKyBiL2lu Y2x1ZGUvbGludXgvcnRzeF9wY2kuaA0KQEAgLTYwLDYgKzYwLDcgQEANCiAjZGVmaW5lICAgU0Rf RVhJU1QJCQkoMSA8PCAxNikNCiAjZGVmaW5lICAgREVMSU5LX0lOVAkJCUdQSU8wX0lOVA0KICNk ZWZpbmUgICBNU19PQ19JTlQJCQkoMSA8PCAyMykNCisjZGVmaW5lICAgU0RfT1ZQX0lOVAkJKDEg PDwgMjMpDQogI2RlZmluZSAgIFNEX09DX0lOVAkJCSgxIDw8IDIyKQ0KIA0KICNkZWZpbmUgQ0FS RF9JTlQJCShYRF9JTlQgfCBNU19JTlQgfCBTRF9JTlQpDQpAQCAtODAsNiArODEsNyBAQA0KICNk ZWZpbmUgICBPQ19JTlRfRU4JCQkoMSA8PCAyMykNCiAjZGVmaW5lICAgREVMSU5LX0lOVF9FTgkJ CUdQSU8wX0lOVF9FTg0KICNkZWZpbmUgICBNU19PQ19JTlRfRU4JCQkoMSA8PCAyMykNCisjZGVm aW5lICAgU0RfT1ZQX0lOVF9FTgkJCSgxIDw8IDIzKQ0KICNkZWZpbmUgICBTRF9PQ19JTlRfRU4J CQkoMSA8PCAyMikNCiANCiAjZGVmaW5lIFJUU1hfRFVNX1JFRwkJCTB4MUMNCkBAIC01ODMsNiAr NTg1LDcgQEANCiAjZGVmaW5lICAgT0JGRl9ESVNBQkxFCQkJMHgwMA0KIA0KICNkZWZpbmUgQ0RS RVNVTUVDVEwJCQkweEZFNTINCisjZGVmaW5lIENER1cJCQkJMHhGRTUzDQogI2RlZmluZSBXQUtF X1NFTF9DVEwJCQkweEZFNTQNCiAjZGVmaW5lIFBDTEtfQ1RMCQkJMHhGRTU1DQogI2RlZmluZSAg IFBDTEtfTU9ERV9TRUwJCQkweDIwDQpAQCAtNzY0LDYgKzc2Nyw5IEBADQogI2RlZmluZSAgIFNE X1ZJT19MRE9fMVY4CQkweDQwDQogI2RlZmluZSAgIFNEX1ZJT19MRE9fM1YzCQkweDcwDQogDQor I2RlZmluZSBSVFM1MjY0X0FVVE9MT0FEX0NGRzIJCTB4RkY3RA0KKyNkZWZpbmUgUlRTNTI2NF9D SElQX1JTVF9OX1NFTAkJKDEgPDwgNikNCisNCiAjZGVmaW5lIFJUUzUyNjBfQVVUT0xPQURfQ0ZH NAkJMHhGRjdGDQogI2RlZmluZSAgIFJUUzUyNjBfTUlNT19ESVNBQkxFCQkweDhBDQogLypSVFM1 MjYxKi8NCkBAIC0xMjYxLDYgKzEyNjcsNyBAQCBzdHJ1Y3QgcnRzeF9wY3Igew0KIAl1OAkJCQlk bWFfZXJyb3JfY291bnQ7DQogCXU4CQkJb2NwX3N0YXQ7DQogCXU4CQkJb2NwX3N0YXQyOw0KKwl1 OAkJCW92cF9zdGF0Ow0KIAl1OAkJCXJ0ZDNfZW47DQogfTsNCiANCkBAIC0xMjcxLDYgKzEyNzgs NyBAQCBzdHJ1Y3QgcnRzeF9wY3Igew0KICNkZWZpbmUgUElEXzUyNjAJMHg1MjYwDQogI2RlZmlu ZSBQSURfNTI2MQkweDUyNjENCiAjZGVmaW5lIFBJRF81MjI4CTB4NTIyOA0KKyNkZWZpbmUgUElE XzUyNjQJMHg1MjY0DQogDQogI2RlZmluZSBDSEtfUENJX1BJRChwY3IsIHBpZCkJCSgocGNyKS0+ cGNpLT5kZXZpY2UgPT0gKHBpZCkpDQogI2RlZmluZSBQQ0lfVklEKHBjcikJCQkoKHBjciktPnBj aS0+dmVuZG9yKQ0KLS0gDQoyLjI1LjENCg0K