From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.1 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 777A4C4363D for ; Fri, 2 Oct 2020 07:36:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0CC7C20758 for ; Fri, 2 Oct 2020 07:36:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="LzClLtGT" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726439AbgJBHgA (ORCPT ); Fri, 2 Oct 2020 03:36:00 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:35350 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725971AbgJBHgA (ORCPT ); Fri, 2 Oct 2020 03:36:00 -0400 X-UUID: d9a48db4a395466f87edb3e04ad5c88d-20201002 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=qGiDoHxlpi4/rOG7gezQGqsuTJEkfz1DBe/eP+OjYhU=; b=LzClLtGTlGh2wTwu8Is1Gn9CHGhbo7PSK5VpZ04lYPDfCxfDBtZo0rOSEuYqVVIdApFfl6XblrQZNfc+WjMSoioZAayKSwKs9XQEzQJQTNuBvLkyzwOiP2kXG3w/CLoitVGHVCy59RWNQOTJtDzBncrhHiZty+fL5TrgtRbVWv0=; X-UUID: d9a48db4a395466f87edb3e04ad5c88d-20201002 Received: from mtkcas11.mediatek.inc [(172.21.101.40)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 412828606; Fri, 02 Oct 2020 15:35:48 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 2 Oct 2020 15:35:47 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 2 Oct 2020 15:35:46 +0800 From: Jiaxin Yu To: , , , , , , , , , CC: , , , Jiaxin Yu Subject: [PATCH 4/5] ASoC: mediatek: mt8192: add machine driver with mt6359, rt1015 and rt5682 Date: Fri, 2 Oct 2020 15:35:41 +0800 Message-ID: <1601624142-18991-5-git-send-email-jiaxin.yu@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1601624142-18991-1-git-send-email-jiaxin.yu@mediatek.com> References: <1601624142-18991-1-git-send-email-jiaxin.yu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBtYWNoaW5lIGJvYXJkIHdpdGggbXQ2MzU5 LCBydDEwMTUgYW5kIHJ0NTY4Mi4NCg0KU2lnbmVkLW9mZi1ieTogSmlheGluIFl1IDxqaWF4aW4u eXVAbWVkaWF0ZWsuY29tPg0KLS0tDQogc291bmQvc29jL21lZGlhdGVrL0tjb25maWcgICAgICAg ICAgICAgICAgICAgIHwgICAxMyArDQogc291bmQvc29jL21lZGlhdGVrL210ODE5Mi9NYWtlZmls ZSAgICAgICAgICAgIHwgICAgMiArDQogLi4uL210ODE5Mi9tdDgxOTItbXQ2MzU5LXJ0MTAxNS1y dDU2ODIuYyAgICAgIHwgMTA1OCArKysrKysrKysrKysrKysrKw0KIDMgZmlsZXMgY2hhbmdlZCwg MTA3MyBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5kL3NvYy9tZWRpYXRl ay9tdDgxOTIvbXQ4MTkyLW10NjM1OS1ydDEwMTUtcnQ1NjgyLmMNCg0KZGlmZiAtLWdpdCBhL3Nv dW5kL3NvYy9tZWRpYXRlay9LY29uZmlnIGIvc291bmQvc29jL21lZGlhdGVrL0tjb25maWcNCmlu ZGV4IDEwNTg4Y2Y4MDlkYzcuLmRjNjI4ZmI2YzEwMjUgMTAwNjQ0DQotLS0gYS9zb3VuZC9zb2Mv bWVkaWF0ZWsvS2NvbmZpZw0KKysrIGIvc291bmQvc29jL21lZGlhdGVrL0tjb25maWcNCkBAIC0x NjcsMyArMTY3LDE2IEBAIGNvbmZpZyBTTkRfU09DX01UODE5Mg0KIAkgIHRoYXQgY2FuIGJlIHVz ZWQgd2l0aCBvdGhlciBjb2RlY3MuDQogCSAgU2VsZWN0IFkgaWYgeW91IGhhdmUgc3VjaCBkZXZp Y2UuDQogCSAgSWYgdW5zdXJlIHNlbGVjdCAiTiIuDQorDQorY29uZmlnIFNORF9TT0NfTVQ4MTky X01UNjM1OV9SVDEwMTVfUlQ1NjgyDQorCXRyaXN0YXRlICJBU29DIEF1ZGlvIGRyaXZlciBmb3Ig TVQ4MTkyIHdpdGggTVQ2MzU5IFJUMTAxNSBSVDU2ODIgY29kZWMiDQorCWRlcGVuZHMgb24gSTJD DQorCWRlcGVuZHMgb24gU05EX1NPQ19NVDgxOTINCisJc2VsZWN0IFNORF9TT0NfTVQ2MzU5DQor CXNlbGVjdCBTTkRfU09DX1JUMTAxNQ0KKwlzZWxlY3QgU05EX1NPQ19SVDU2ODJfSTJDDQorCWhl bHANCisJICBUaGlzIGFkZHMgQVNvQyBkcml2ZXIgZm9yIE1lZGlhdGVrIE1UODE5MiBib2FyZHMN CisJICB3aXRoIHRoZSBNVDYzNTkgUlQxMDE1IFJUNTY4MiBhdWRpbyBjb2RlYy4NCisJICBTZWxl Y3QgWSBpZiB5b3UgaGF2ZSBzdWNoIGRldmljZS4NCisJICBJZiB1bnN1cmUgc2VsZWN0ICJOIi4N CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbWVkaWF0ZWsvbXQ4MTkyL01ha2VmaWxlIGIvc291bmQv c29jL21lZGlhdGVrL210ODE5Mi9NYWtlZmlsZQ0KaW5kZXggZGQxODQ4Njg4MTcwOC4uOGIyN2Q4 MjYyNmVhNCAxMDA2NDQNCi0tLSBhL3NvdW5kL3NvYy9tZWRpYXRlay9tdDgxOTIvTWFrZWZpbGUN CisrKyBiL3NvdW5kL3NvYy9tZWRpYXRlay9tdDgxOTIvTWFrZWZpbGUNCkBAIC0xMiwzICsxMiw1 IEBAIHNuZC1zb2MtbXQ4MTkyLWFmZS1vYmpzIDo9IFwNCiAJbXQ4MTkyLWRhaS10ZG0ubw0KIA0K IG9iai0kKENPTkZJR19TTkRfU09DX01UODE5MikgKz0gc25kLXNvYy1tdDgxOTItYWZlLm8NCitv YmotJChDT05GSUdfU05EX1NPQ19NVDgxOTJfTVQ2MzU5X1JUMTAxNV9SVDU2ODIpICs9IFwNCisJ bXQ4MTkyLW10NjM1OS1ydDEwMTUtcnQ1NjgyLm8NCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbWVk aWF0ZWsvbXQ4MTkyL210ODE5Mi1tdDYzNTktcnQxMDE1LXJ0NTY4Mi5jIGIvc291bmQvc29jL21l ZGlhdGVrL210ODE5Mi9tdDgxOTItbXQ2MzU5LXJ0MTAxNS1ydDU2ODIuYw0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAuLmNkMzhiMDI0OWRiNDMNCi0tLSAvZGV2L251 bGwNCisrKyBiL3NvdW5kL3NvYy9tZWRpYXRlay9tdDgxOTIvbXQ4MTkyLW10NjM1OS1ydDEwMTUt cnQ1NjgyLmMNCkBAIC0wLDAgKzEsMTA1OCBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wDQorLy8NCisvLyBtdDgxOTItbXQ2MzU5LXJ0MTAxNS1ydDU2ODIuYyAgLS0NCisv LwlNVDgxOTItTVQ2MzU5LVJUMTAxNS1SVDYzNTggQUxTQSBTb0MgbWFjaGluZSBkcml2ZXINCisv Lw0KKy8vIENvcHlyaWdodCAoYykgMjAyMCBNZWRpYVRlayBJbmMuDQorLy8gQXV0aG9yOiBKaWF4 aW4gWXUgPGppYXhpbi55dUBtZWRpYXRlay5jb20+DQorLy8NCisNCisjaW5jbHVkZSA8bGludXgv aW5wdXQuaD4NCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4L3Bt X3J1bnRpbWUuaD4NCisjaW5jbHVkZSA8c291bmQvamFjay5oPg0KKyNpbmNsdWRlIDxzb3VuZC9w Y21fcGFyYW1zLmg+DQorI2luY2x1ZGUgPHNvdW5kL3J0NTY4Mi5oPg0KKyNpbmNsdWRlIDxzb3Vu ZC9zb2MuaD4NCisNCisjaW5jbHVkZSAiLi4vLi4vY29kZWNzL210NjM1OS5oIg0KKyNpbmNsdWRl ICIuLi8uLi9jb2RlY3MvcnQxMDE1LmgiDQorI2luY2x1ZGUgIi4uLy4uL2NvZGVjcy9ydDU2ODIu aCINCisjaW5jbHVkZSAiLi4vY29tbW9uL210ay1hZmUtcGxhdGZvcm0tZHJpdmVyLmgiDQorI2lu Y2x1ZGUgIm10ODE5Mi1hZmUtY29tbW9uLmgiDQorI2luY2x1ZGUgIm10ODE5Mi1hZmUtY2xrLmgi DQorI2luY2x1ZGUgIm10ODE5Mi1hZmUtZ3Bpby5oIg0KKw0KKyNkZWZpbmUgUlQxMDE1X0NPREVD X0RBSQkicnQxMDE1LWFpZiINCisjZGVmaW5lIFJUMTAxNV9ERVYwX05BTUUJInJ0MTAxNS4xLTAw MjgiDQorI2RlZmluZSBSVDEwMTVfREVWMV9OQU1FCSJydDEwMTUuMS0wMDI5Ig0KKw0KKyNkZWZp bmUgUlQ1NjgyX0NPREVDX0RBSQkicnQ1NjgyLWFpZjEiDQorI2RlZmluZSBSVDU2ODJfREVWMF9O QU1FCSJydDU2ODIuMS0wMDFhIg0KKw0KK3N0YXRpYyBzdHJ1Y3Qgc25kX3NvY19qYWNrIGhlYWRz ZXRfamFjazsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQNCitt dDgxOTJfbXQ2MzU5X3J0MTAxNV9ydDU2ODJfd2lkZ2V0c1tdID0gew0KKwlTTkRfU09DX0RBUE1f U1BLKCJMZWZ0IFNwayIsIE5VTEwpLA0KKwlTTkRfU09DX0RBUE1fU1BLKCJSaWdodCBTcGsiLCBO VUxMKSwNCisJU05EX1NPQ19EQVBNX0hQKCJIZWFkcGhvbmUgSmFjayIsIE5VTEwpLA0KKwlTTkRf U09DX0RBUE1fTUlDKCJIZWFkc2V0IE1pYyIsIE5VTEwpLA0KK307DQorDQorc3RhdGljIGNvbnN0 IHN0cnVjdCBzbmRfc29jX2RhcG1fcm91dGUgbXQ4MTkyX210NjM1OV9ydDEwMTVfcnQ1NjgyX3Jv dXRlc1tdID0gew0KKwkvKiBzcGVha2VyICovDQorCXsgIkxlZnQgU3BrIiwgTlVMTCwgIkxlZnQg U1BPIiB9LA0KKwl7ICJSaWdodCBTcGsiLCBOVUxMLCAiUmlnaHQgU1BPIiB9LA0KKwkvKiBoZWFk c2V0ICovDQorCXsgIkhlYWRwaG9uZSBKYWNrIiwgTlVMTCwgIkhQT0wiIH0sDQorCXsgIkhlYWRw aG9uZSBKYWNrIiwgTlVMTCwgIkhQT1IiIH0sDQorCXsgIklOMVAiLCBOVUxMLCAiSGVhZHNldCBN aWMiIH0sDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgbXQ4 MTkyX210NjM1OV9ydDEwMTVfcnQ1NjgyX2NvbnRyb2xzW10gPSB7DQorCVNPQ19EQVBNX1BJTl9T V0lUQ0goIkxlZnQgU3BrIiksDQorCVNPQ19EQVBNX1BJTl9TV0lUQ0goIlJpZ2h0IFNwayIpLA0K KwlTT0NfREFQTV9QSU5fU1dJVENIKCJIZWFkcGhvbmUgSmFjayIpLA0KKwlTT0NfREFQTV9QSU5f U1dJVENIKCJIZWFkc2V0IE1pYyIpLA0KK307DQorDQorc3RhdGljIGludCBtdDgxOTJfcnQxMDE1 X2kyc19od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sDQorCQkJ CSAgICAgICBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcykNCit7DQorCXN0cnVjdCBz bmRfc29jX3BjbV9ydW50aW1lICpydGQgPSBzdWJzdHJlYW0tPnByaXZhdGVfZGF0YTsNCisJc3Ry dWN0IHNuZF9zb2NfY2FyZCAqY2FyZCA9IHJ0ZC0+Y2FyZDsNCisJc3RydWN0IHNuZF9zb2NfZGFp ICpjcHVfZGFpID0gYXNvY19ydGRfdG9fY3B1KHJ0ZCwgMCk7DQorCXN0cnVjdCBzbmRfc29jX2Rh aSAqY29kZWNfZGFpOw0KKwl1bnNpZ25lZCBpbnQgcmF0ZSA9IHBhcmFtc19yYXRlKHBhcmFtcyk7 DQorCXVuc2lnbmVkIGludCBtY2xrX2ZzX3JhdGlvID0gMTI4Ow0KKwl1bnNpZ25lZCBpbnQgbWNs a19mcyA9IHJhdGUgKiBtY2xrX2ZzX3JhdGlvOw0KKwlpbnQgcmV0LCBpOw0KKw0KKwlmb3JfZWFj aF9ydGRfY29kZWNfZGFpcyhydGQsIGksIGNvZGVjX2RhaSkgew0KKwkJcmV0ID0gc25kX3NvY19k YWlfc2V0X2JjbGtfcmF0aW8oY29kZWNfZGFpLCA2NCk7DQorCQlpZiAocmV0KSB7DQorCQkJZGV2 X2VycihjYXJkLT5kZXYsICJmYWlsZWQgdG8gc2V0IGJjbGsgcmF0aW9cbiIpOw0KKwkJCXJldHVy biByZXQ7DQorCQl9DQorDQorCQlyZXQgPSBzbmRfc29jX2RhaV9zZXRfcGxsKGNvZGVjX2RhaSwg MCwNCisJCQkJCSAgUlQxMDE1X1BMTF9TX0JDTEssDQorCQkJCQkgIHBhcmFtc19yYXRlKHBhcmFt cykgKiA2NCwNCisJCQkJCSAgcGFyYW1zX3JhdGUocGFyYW1zKSAqIDI1Nik7DQorCQlpZiAocmV0 KSB7DQorCQkJZGV2X2VycihjYXJkLT5kZXYsICJmYWlsZWQgdG8gc2V0IHBsbFxuIik7DQorCQkJ cmV0dXJuIHJldDsNCisJCX0NCisNCisJCXJldCA9IHNuZF9zb2NfZGFpX3NldF9zeXNjbGsoY29k ZWNfZGFpLA0KKwkJCQkJICAgICBSVDEwMTVfU0NMS19TX1BMTCwNCisJCQkJCSAgICAgcGFyYW1z X3JhdGUocGFyYW1zKSAqIDI1NiwNCisJCQkJCSAgICAgU05EX1NPQ19DTE9DS19JTik7DQorCQlp ZiAocmV0KSB7DQorCQkJZGV2X2VycihjYXJkLT5kZXYsICJmYWlsZWQgdG8gc2V0IHN5c2Nsa1xu Iik7DQorCQkJcmV0dXJuIHJldDsNCisJCX0NCisJfQ0KKw0KKwlyZXR1cm4gc25kX3NvY19kYWlf c2V0X3N5c2NsayhjcHVfZGFpLCAwLCBtY2xrX2ZzLCBTTkRfU09DX0NMT0NLX09VVCk7DQorfQ0K Kw0KK3N0YXRpYyBpbnQgbXQ4MTkyX3J0NTY4Ml9pMnNfaHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNt X3N1YnN0cmVhbSAqc3Vic3RyZWFtLA0KKwkJCQkgICAgICAgc3RydWN0IHNuZF9wY21faHdfcGFy YW1zICpwYXJhbXMpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkID0gc3Vi c3RyZWFtLT5wcml2YXRlX2RhdGE7DQorCXN0cnVjdCBzbmRfc29jX2NhcmQgKmNhcmQgPSBydGQt PmNhcmQ7DQorCXN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSA9IGFzb2NfcnRkX3RvX2NwdShy dGQsIDApOw0KKwlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNvZGVjX2RhaSA9IGFzb2NfcnRkX3RvX2Nv ZGVjKHJ0ZCwgMCk7DQorCXVuc2lnbmVkIGludCByYXRlID0gcGFyYW1zX3JhdGUocGFyYW1zKTsN CisJdW5zaWduZWQgaW50IG1jbGtfZnNfcmF0aW8gPSAxMjg7DQorCXVuc2lnbmVkIGludCBtY2xr X2ZzID0gcmF0ZSAqIG1jbGtfZnNfcmF0aW87DQorCWludCBiaXR3aWR0aDsNCisJaW50IHJldDsN CisNCisJYml0d2lkdGggPSBzbmRfcGNtX2Zvcm1hdF93aWR0aChwYXJhbXNfZm9ybWF0KHBhcmFt cykpOw0KKwlpZiAoYml0d2lkdGggPCAwKSB7DQorCQlkZXZfZXJyKGNhcmQtPmRldiwgImludmFs aWQgYml0IHdpZHRoOiAlZFxuIiwgYml0d2lkdGgpOw0KKwkJcmV0dXJuIGJpdHdpZHRoOw0KKwl9 DQorDQorCXJldCA9IHNuZF9zb2NfZGFpX3NldF90ZG1fc2xvdChjb2RlY19kYWksIDB4MDAsIDB4 MCwgMHgyLCBiaXR3aWR0aCk7DQorCWlmIChyZXQpIHsNCisJCWRldl9lcnIoY2FyZC0+ZGV2LCAi ZmFpbGVkIHRvIHNldCB0ZG0gc2xvdFxuIik7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCXJl dCA9IHNuZF9zb2NfZGFpX3NldF9wbGwoY29kZWNfZGFpLCBSVDU2ODJfUExMMSwNCisJCQkJICBS VDU2ODJfUExMMV9TX0JDTEsxLA0KKwkJCQkgIHBhcmFtc19yYXRlKHBhcmFtcykgKiA2NCwNCisJ CQkJICBwYXJhbXNfcmF0ZShwYXJhbXMpICogNTEyKTsNCisJaWYgKHJldCkgew0KKwkJZGV2X2Vy cihjYXJkLT5kZXYsICJmYWlsZWQgdG8gc2V0IHBsbFxuIik7DQorCQlyZXR1cm4gcmV0Ow0KKwl9 DQorDQorCXJldCA9IHNuZF9zb2NfZGFpX3NldF9zeXNjbGsoY29kZWNfZGFpLA0KKwkJCQkgICAg IFJUNTY4Ml9TQ0xLX1NfUExMMSwNCisJCQkJICAgICBwYXJhbXNfcmF0ZShwYXJhbXMpICogNTEy LA0KKwkJCQkgICAgIFNORF9TT0NfQ0xPQ0tfSU4pOw0KKwlpZiAocmV0KSB7DQorCQlkZXZfZXJy KGNhcmQtPmRldiwgImZhaWxlZCB0byBzZXQgc3lzY2xrXG4iKTsNCisJCXJldHVybiByZXQ7DQor CX0NCisNCisJcmV0dXJuIHNuZF9zb2NfZGFpX3NldF9zeXNjbGsoY3B1X2RhaSwgMCwgbWNsa19m cywgU05EX1NPQ19DTE9DS19PVVQpOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9z b2Nfb3BzIG10ODE5Ml9ydDEwMTVfaTJzX29wcyA9IHsNCisJLmh3X3BhcmFtcyA9IG10ODE5Ml9y dDEwMTVfaTJzX2h3X3BhcmFtcywNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3Nv Y19vcHMgbXQ4MTkyX3J0NTY4Ml9pMnNfb3BzID0gew0KKwkuaHdfcGFyYW1zID0gbXQ4MTkyX3J0 NTY4Ml9pMnNfaHdfcGFyYW1zLA0KK307DQorDQorc3RhdGljIGludCBtdDgxOTJfbXQ2MzU5X210 a2FpZl9jYWxpYnJhdGlvbihzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkKQ0KK3sNCisJ c3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudF9hZmUgPQ0KKwkJc25kX3NvY19ydGRjb21f bG9va3VwKHJ0ZCwgQUZFX1BDTV9OQU1FKTsNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpj bXBudF9jb2RlYyA9DQorCQlhc29jX3J0ZF90b19jb2RlYyhydGQsIDApLT5jb21wb25lbnQ7DQor CXN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRh KGNtcG50X2FmZSk7DQorCXN0cnVjdCBtdDgxOTJfYWZlX3ByaXZhdGUgKmFmZV9wcml2ID0gYWZl LT5wbGF0Zm9ybV9wcml2Ow0KKwlpbnQgcGhhc2U7DQorCXVuc2lnbmVkIGludCBtb25pdG9yOw0K KwlpbnQgdGVzdF9kb25lXzEsIHRlc3RfZG9uZV8yLCB0ZXN0X2RvbmVfMzsNCisJaW50IGN5Y2xl XzEsIGN5Y2xlXzIsIGN5Y2xlXzM7DQorCWludCBwcmV2X2N5Y2xlXzEsIHByZXZfY3ljbGVfMiwg cHJldl9jeWNsZV8zOw0KKwlpbnQgY2hvc2VuX3BoYXNlXzEsIGNob3Nlbl9waGFzZV8yLCBjaG9z ZW5fcGhhc2VfMzsNCisJaW50IGNvdW50ZXI7DQorCWludCBtdGthaWZfY2FsaWJfb2s7DQorDQor CWRldl9pbmZvKGFmZS0+ZGV2LCAiJXMoKSwgc3RhcnRcbiIsIF9fZnVuY19fKTsNCisNCisJcG1f cnVudGltZV9nZXRfc3luYyhhZmUtPmRldik7DQorCW10ODE5Ml9hZmVfZ3Bpb19yZXF1ZXN0KGFm ZS0+ZGV2LCB0cnVlLCBNVDgxOTJfREFJX0FEREEsIDEpOw0KKwltdDgxOTJfYWZlX2dwaW9fcmVx dWVzdChhZmUtPmRldiwgdHJ1ZSwgTVQ4MTkyX0RBSV9BRERBLCAwKTsNCisJbXQ4MTkyX2FmZV9n cGlvX3JlcXVlc3QoYWZlLT5kZXYsIHRydWUsIE1UODE5Ml9EQUlfQUREQV9DSDM0LCAxKTsNCisJ bXQ4MTkyX2FmZV9ncGlvX3JlcXVlc3QoYWZlLT5kZXYsIHRydWUsIE1UODE5Ml9EQUlfQUREQV9D SDM0LCAwKTsNCisNCisJbXQ2MzU5X210a2FpZl9jYWxpYnJhdGlvbl9lbmFibGUoY21wbnRfY29k ZWMpOw0KKw0KKwkvKiBzZXQgY2xvY2sgcHJvdG9jb2wgMiAqLw0KKwlyZWdtYXBfdXBkYXRlX2Jp dHMoYWZlLT5yZWdtYXAsIEFGRV9BVURfUEFEX1RPUCwgMHhmZiwgMHgzOCk7DQorCXJlZ21hcF91 cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwgQUZFX0FVRF9QQURfVE9QLCAweGZmLCAweDM5KTsNCisN CisJLyogc2V0IHRlc3QgdHlwZSB0byBzeW5jaHJvbml6ZXIgcHVsc2UgKi8NCisJcmVnbWFwX3Vw ZGF0ZV9iaXRzKGFmZV9wcml2LT50b3Bja2dlbiwNCisJCQkgICBDS1NZU19BVURfVE9QX0NGRywg MHhmZmZmLCAweDQpOw0KKw0KKwltdGthaWZfY2FsaWJfb2sgPSB0cnVlOw0KKwlhZmVfcHJpdi0+ bXRrYWlmX2NhbGlicmF0aW9uX251bV9waGFzZSA9IDQyOwkvKiBtdDYzNTk6IDAgfiA0MiAqLw0K KwlhZmVfcHJpdi0+bXRrYWlmX2Nob3Nlbl9waGFzZVswXSA9IC0xOw0KKwlhZmVfcHJpdi0+bXRr YWlmX2Nob3Nlbl9waGFzZVsxXSA9IC0xOw0KKwlhZmVfcHJpdi0+bXRrYWlmX2Nob3Nlbl9waGFz ZVsyXSA9IC0xOw0KKw0KKwlmb3IgKHBoYXNlID0gMDsNCisJICAgICBwaGFzZSA8PSBhZmVfcHJp di0+bXRrYWlmX2NhbGlicmF0aW9uX251bV9waGFzZSAmJg0KKwkgICAgIG10a2FpZl9jYWxpYl9v azsNCisJICAgICBwaGFzZSsrKSB7DQorCQltdDYzNTlfc2V0X210a2FpZl9jYWxpYnJhdGlvbl9w aGFzZShjbXBudF9jb2RlYywNCisJCQkJCQkgICAgcGhhc2UsIHBoYXNlLCBwaGFzZSk7DQorDQor CQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlX3ByaXYtPnRvcGNrZ2VuLA0KKwkJCQkgICBDS1NZU19B VURfVE9QX0NGRywgMHgxLCAweDEpOw0KKw0KKwkJdGVzdF9kb25lXzEgPSAwOw0KKwkJdGVzdF9k b25lXzIgPSAwOw0KKwkJdGVzdF9kb25lXzMgPSAwOw0KKwkJY3ljbGVfMSA9IC0xOw0KKwkJY3lj bGVfMiA9IC0xOw0KKwkJY3ljbGVfMyA9IC0xOw0KKwkJY291bnRlciA9IDA7DQorCQl3aGlsZSAo dGVzdF9kb25lXzEgPT0gMCB8fA0KKwkJICAgICAgIHRlc3RfZG9uZV8yID09IDAgfHwNCisJCSAg ICAgICB0ZXN0X2RvbmVfMyA9PSAwKSB7DQorCQkJcmVnbWFwX3JlYWQoYWZlX3ByaXYtPnRvcGNr Z2VuLA0KKwkJCQkgICAgQ0tTWVNfQVVEX1RPUF9NT04sICZtb25pdG9yKTsNCisNCisJCQl0ZXN0 X2RvbmVfMSA9IChtb25pdG9yID4+IDI4KSAmIDB4MTsNCisJCQl0ZXN0X2RvbmVfMiA9IChtb25p dG9yID4+IDI5KSAmIDB4MTsNCisJCQl0ZXN0X2RvbmVfMyA9IChtb25pdG9yID4+IDMwKSAmIDB4 MTsNCisJCQlpZiAodGVzdF9kb25lXzEgPT0gMSkNCisJCQkJY3ljbGVfMSA9IG1vbml0b3IgJiAw eGY7DQorDQorCQkJaWYgKHRlc3RfZG9uZV8yID09IDEpDQorCQkJCWN5Y2xlXzIgPSAobW9uaXRv ciA+PiA0KSAmIDB4ZjsNCisNCisJCQlpZiAodGVzdF9kb25lXzMgPT0gMSkNCisJCQkJY3ljbGVf MyA9IChtb25pdG9yID4+IDgpICYgMHhmOw0KKw0KKwkJCS8qIGhhbmRsZSBpZiBuZXZlciB0ZXN0 IGRvbmUgKi8NCisJCQlpZiAoKytjb3VudGVyID4gMTAwMDApIHsNCisJCQkJZGV2X2VycihhZmUt PmRldiwgIiVzKCksIHRlc3QgZmFpbCwgY3ljbGVfMSAlZCwgY3ljbGVfMiAlZCwgY3ljbGVfMyAl ZCwgbW9uaXRvciAweCV4XG4iLA0KKwkJCQkJX19mdW5jX18sDQorCQkJCQljeWNsZV8xLCBjeWNs ZV8yLCBjeWNsZV8zLCBtb25pdG9yKTsNCisJCQkJbXRrYWlmX2NhbGliX29rID0gZmFsc2U7DQor CQkJCWJyZWFrOw0KKwkJCX0NCisJCX0NCisNCisJCWlmIChwaGFzZSA9PSAwKSB7DQorCQkJcHJl dl9jeWNsZV8xID0gY3ljbGVfMTsNCisJCQlwcmV2X2N5Y2xlXzIgPSBjeWNsZV8yOw0KKwkJCXBy ZXZfY3ljbGVfMyA9IGN5Y2xlXzM7DQorCQl9DQorDQorCQlpZiAoY3ljbGVfMSAhPSBwcmV2X2N5 Y2xlXzEgJiYNCisJCSAgICBhZmVfcHJpdi0+bXRrYWlmX2Nob3Nlbl9waGFzZVswXSA8IDApIHsN CisJCQlhZmVfcHJpdi0+bXRrYWlmX2Nob3Nlbl9waGFzZVswXSA9IHBoYXNlIC0gMTsNCisJCQlh ZmVfcHJpdi0+bXRrYWlmX3BoYXNlX2N5Y2xlWzBdID0gcHJldl9jeWNsZV8xOw0KKwkJfQ0KKw0K KwkJaWYgKGN5Y2xlXzIgIT0gcHJldl9jeWNsZV8yICYmDQorCQkgICAgYWZlX3ByaXYtPm10a2Fp Zl9jaG9zZW5fcGhhc2VbMV0gPCAwKSB7DQorCQkJYWZlX3ByaXYtPm10a2FpZl9jaG9zZW5fcGhh c2VbMV0gPSBwaGFzZSAtIDE7DQorCQkJYWZlX3ByaXYtPm10a2FpZl9waGFzZV9jeWNsZVsxXSA9 IHByZXZfY3ljbGVfMjsNCisJCX0NCisNCisJCWlmIChjeWNsZV8zICE9IHByZXZfY3ljbGVfMyAm Jg0KKwkJICAgIGFmZV9wcml2LT5tdGthaWZfY2hvc2VuX3BoYXNlWzJdIDwgMCkgew0KKwkJCWFm ZV9wcml2LT5tdGthaWZfY2hvc2VuX3BoYXNlWzJdID0gcGhhc2UgLSAxOw0KKwkJCWFmZV9wcml2 LT5tdGthaWZfcGhhc2VfY3ljbGVbMl0gPSBwcmV2X2N5Y2xlXzM7DQorCQl9DQorDQorCQlyZWdt YXBfdXBkYXRlX2JpdHMoYWZlX3ByaXYtPnRvcGNrZ2VuLA0KKwkJCQkgICBDS1NZU19BVURfVE9Q X0NGRywgMHgxLCAweDApOw0KKw0KKwkJaWYgKGFmZV9wcml2LT5tdGthaWZfY2hvc2VuX3BoYXNl WzBdID49IDAgJiYNCisJCSAgICBhZmVfcHJpdi0+bXRrYWlmX2Nob3Nlbl9waGFzZVsxXSA+PSAw ICYmDQorCQkgICAgYWZlX3ByaXYtPm10a2FpZl9jaG9zZW5fcGhhc2VbMl0gPj0gMCkNCisJCQli cmVhazsNCisJfQ0KKw0KKwlpZiAoYWZlX3ByaXYtPm10a2FpZl9jaG9zZW5fcGhhc2VbMF0gPCAw KQ0KKwkJY2hvc2VuX3BoYXNlXzEgPSAwOw0KKwllbHNlDQorCQljaG9zZW5fcGhhc2VfMSA9IGFm ZV9wcml2LT5tdGthaWZfY2hvc2VuX3BoYXNlWzBdOw0KKw0KKwlpZiAoYWZlX3ByaXYtPm10a2Fp Zl9jaG9zZW5fcGhhc2VbMV0gPCAwKQ0KKwkJY2hvc2VuX3BoYXNlXzIgPSAwOw0KKwllbHNlDQor CQljaG9zZW5fcGhhc2VfMiA9IGFmZV9wcml2LT5tdGthaWZfY2hvc2VuX3BoYXNlWzFdOw0KKw0K KwlpZiAoYWZlX3ByaXYtPm10a2FpZl9jaG9zZW5fcGhhc2VbMl0gPCAwKQ0KKwkJY2hvc2VuX3Bo YXNlXzMgPSAwOw0KKwllbHNlDQorCQljaG9zZW5fcGhhc2VfMyA9IGFmZV9wcml2LT5tdGthaWZf Y2hvc2VuX3BoYXNlWzJdOw0KKw0KKwltdDYzNTlfc2V0X210a2FpZl9jYWxpYnJhdGlvbl9waGFz ZShjbXBudF9jb2RlYywNCisJCQkJCSAgICBjaG9zZW5fcGhhc2VfMSwNCisJCQkJCSAgICBjaG9z ZW5fcGhhc2VfMiwNCisJCQkJCSAgICBjaG9zZW5fcGhhc2VfMyk7DQorDQorCS8qIGRpc2FibGUg cnggZmlmbyAqLw0KKwlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsIEFGRV9BVURfUEFE X1RPUCwgMHhmZiwgMHgzOCk7DQorDQorCW10NjM1OV9tdGthaWZfY2FsaWJyYXRpb25fZGlzYWJs ZShjbXBudF9jb2RlYyk7DQorDQorCW10ODE5Ml9hZmVfZ3Bpb19yZXF1ZXN0KGFmZS0+ZGV2LCBm YWxzZSwgTVQ4MTkyX0RBSV9BRERBLCAxKTsNCisJbXQ4MTkyX2FmZV9ncGlvX3JlcXVlc3QoYWZl LT5kZXYsIGZhbHNlLCBNVDgxOTJfREFJX0FEREEsIDApOw0KKwltdDgxOTJfYWZlX2dwaW9fcmVx dWVzdChhZmUtPmRldiwgZmFsc2UsIE1UODE5Ml9EQUlfQUREQV9DSDM0LCAxKTsNCisJbXQ4MTky X2FmZV9ncGlvX3JlcXVlc3QoYWZlLT5kZXYsIGZhbHNlLCBNVDgxOTJfREFJX0FEREFfQ0gzNCwg MCk7DQorCXBtX3J1bnRpbWVfcHV0KGFmZS0+ZGV2KTsNCisNCisJZGV2X2luZm8oYWZlLT5kZXYs ICIlcygpLCBtdGthaWZfY2hvc2VuX3BoYXNlWzAvMS8yXTolZC8lZC8lZFxuIiwNCisJCSBfX2Z1 bmNfXywNCisJCSBhZmVfcHJpdi0+bXRrYWlmX2Nob3Nlbl9waGFzZVswXSwNCisJCSBhZmVfcHJp di0+bXRrYWlmX2Nob3Nlbl9waGFzZVsxXSwNCisJCSBhZmVfcHJpdi0+bXRrYWlmX2Nob3Nlbl9w aGFzZVsyXSk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10ODE5Ml9tdDYz NTlfaW5pdChzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkKQ0KK3sNCisJc3RydWN0IHNu ZF9zb2NfY29tcG9uZW50ICpjbXBudF9hZmUgPQ0KKwkJc25kX3NvY19ydGRjb21fbG9va3VwKHJ0 ZCwgQUZFX1BDTV9OQU1FKTsNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudF9jb2Rl YyA9DQorCQlhc29jX3J0ZF90b19jb2RlYyhydGQsIDApLT5jb21wb25lbnQ7DQorCXN0cnVjdCBt dGtfYmFzZV9hZmUgKmFmZSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50X2Fm ZSk7DQorCXN0cnVjdCBtdDgxOTJfYWZlX3ByaXZhdGUgKmFmZV9wcml2ID0gYWZlLT5wbGF0Zm9y bV9wcml2Ow0KKw0KKwkvKiBzZXQgbXRrYWlmIHByb3RvY29sICovDQorCW10NjM1OV9zZXRfbXRr YWlmX3Byb3RvY29sKGNtcG50X2NvZGVjLA0KKwkJCQkgICBNVDYzNTlfTVRLQUlGX1BST1RPQ09M XzJfQ0xLX1AyKTsNCisJYWZlX3ByaXYtPm10a2FpZl9wcm90b2NvbCA9IE1US0FJRl9QUk9UT0NP TF8yX0NMS19QMjsNCisNCisJLyogbXRrYWlmIGNhbGlicmF0aW9uICovDQorCW10ODE5Ml9tdDYz NTlfbXRrYWlmX2NhbGlicmF0aW9uKHJ0ZCk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0 aWMgaW50IG10ODE5Ml9ydDU2ODJfaW5pdChzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRk KQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudF9jb2RlYyA9DQorCQlhc29j X3J0ZF90b19jb2RlYyhydGQsIDApLT5jb21wb25lbnQ7DQorCXN0cnVjdCBzbmRfc29jX2phY2sg KmphY2sgPSAmaGVhZHNldF9qYWNrOw0KKwlpbnQgcmV0Ow0KKw0KKwlyZXQgPSBzbmRfc29jX2Nh cmRfamFja19uZXcocnRkLT5jYXJkLCAiSGVhZHNldCBKYWNrIiwNCisJCQkJICAgIFNORF9KQUNL X0hFQURTRVQgfCBTTkRfSkFDS19CVE5fMCB8DQorCQkJCSAgICBTTkRfSkFDS19CVE5fMSB8IFNO RF9KQUNLX0JUTl8yIHwNCisJCQkJICAgIFNORF9KQUNLX0JUTl8zLA0KKwkJCQkgICAgamFjaywg TlVMTCwgMCk7DQorCWlmIChyZXQpIHsNCisJCWRldl9lcnIocnRkLT5kZXYsICJIZWFkc2V0IEph Y2sgY3JlYXRpb24gZmFpbGVkOiAlZFxuIiwgcmV0KTsNCisJCXJldHVybiByZXQ7DQorCX0NCisN CisJc25kX2phY2tfc2V0X2tleShqYWNrLT5qYWNrLCBTTkRfSkFDS19CVE5fMCwgS0VZX1BMQVlQ QVVTRSk7DQorCXNuZF9qYWNrX3NldF9rZXkoamFjay0+amFjaywgU05EX0pBQ0tfQlROXzEsIEtF WV9WT0lDRUNPTU1BTkQpOw0KKwlzbmRfamFja19zZXRfa2V5KGphY2stPmphY2ssIFNORF9KQUNL X0JUTl8yLCBLRVlfVk9MVU1FVVApOw0KKwlzbmRfamFja19zZXRfa2V5KGphY2stPmphY2ssIFNO RF9KQUNLX0JUTl8zLCBLRVlfVk9MVU1FRE9XTik7DQorDQorCXJldCA9IHNuZF9zb2NfY29tcG9u ZW50X3NldF9qYWNrKGNtcG50X2NvZGVjLCBqYWNrLCBOVUxMKTsNCisJaWYgKHJldCkgew0KKwkJ ZGV2X2VycihydGQtPmRldiwgIkhlYWRzZXQgSmFjayBzZXQgZmFpbGVkOiAlZFxuIiwgcmV0KTsN CisJCXJldHVybiByZXQ7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfTsNCisNCitzdGF0aWMgaW50 IG10ODE5Ml9pMnNfaHdfcGFyYW1zX2ZpeHVwKHN0cnVjdCBzbmRfc29jX3BjbV9ydW50aW1lICpy dGQsDQorCQkJCSAgICAgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zKQ0KK3sNCisJ LyogZml4IEJFIGkycyBmb3JtYXQgdG8gMzJiaXQsIGNsZWFuIHBhcmFtIG1hc2sgZmlyc3QgKi8N CisJc25kX21hc2tfcmVzZXRfcmFuZ2UoaHdfcGFyYW1fbWFzayhwYXJhbXMsIFNORFJWX1BDTV9I V19QQVJBTV9GT1JNQVQpLA0KKwkJCSAgICAgMCwgU05EUlZfUENNX0ZPUk1BVF9MQVNUKTsNCisN CisJcGFyYW1zX3NldF9mb3JtYXQocGFyYW1zLCBTTkRSVl9QQ01fRk9STUFUX1MyNF9MRSk7DQor DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50DQorbXQ4MTkyX210NjM1OV9ydDEwMTVf cnQ1NjgyX2NhcHR1cmUxX3N0YXJ0dXAoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJl YW0pDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkID0gc3Vic3RyZWFtLT5w cml2YXRlX2RhdGE7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0NCisJ CXNuZF9zb2NfcnRkY29tX2xvb2t1cChydGQsIEFGRV9QQ01fTkFNRSk7DQorCXN0cnVjdCBtdGtf YmFzZV9hZmUgKmFmZSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7 DQorCWludCByZXQ7DQorDQorCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgY2hhbm5lbHNbXSA9 IHsNCisJCTEsIDIsIDQNCisJfTsNCisJc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfcGNtX2h3X2Nv bnN0cmFpbnRfbGlzdCBjb25zdHJhaW50c19jaGFubmVscyA9IHsNCisJCS5jb3VudCA9IEFSUkFZ X1NJWkUoY2hhbm5lbHMpLA0KKwkJLmxpc3QgPSBjaGFubmVscywNCisJCS5tYXNrID0gMCwNCisJ fTsNCisJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByYXRlc1tdID0gew0KKwkJODAwMCwgMTYw MDAsIDMyMDAwLCA0ODAwMCwgOTYwMDAsIDE5MjAwMA0KKwl9Ow0KKwlzdGF0aWMgY29uc3Qgc3Ry dWN0IHNuZF9wY21faHdfY29uc3RyYWludF9saXN0IGNvbnN0cmFpbnRzX3JhdGVzID0gew0KKwkJ LmNvdW50ID0gQVJSQVlfU0laRShyYXRlcyksDQorCQkubGlzdCAgPSByYXRlcywNCisJCS5tYXNr ID0gMCwNCisJfTsNCisNCisJc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSA9IHN1YnN0 cmVhbS0+cnVudGltZTsNCisNCisJcmV0ID0gc25kX3BjbV9od19jb25zdHJhaW50X2xpc3QocnVu dGltZSwgMCwNCisJCQkJCSBTTkRSVl9QQ01fSFdfUEFSQU1fQ0hBTk5FTFMsDQorCQkJCQkgJmNv bnN0cmFpbnRzX2NoYW5uZWxzKTsNCisJaWYgKHJldCA8IDApIHsNCisJCWRldl9lcnIoYWZlLT5k ZXYsICJod19jb25zdHJhaW50X2xpc3QgY2hhbm5lbHMgZmFpbGVkXG4iKTsNCisJCXJldHVybiBy ZXQ7DQorCX0NCisNCisJcmV0ID0gc25kX3BjbV9od19jb25zdHJhaW50X2xpc3QocnVudGltZSwg MCwNCisJCQkJCSBTTkRSVl9QQ01fSFdfUEFSQU1fUkFURSwNCisJCQkJCSAmY29uc3RyYWludHNf cmF0ZXMpOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJZGV2X2VycihhZmUtPmRldiwgImh3X2NvbnN0 cmFpbnRfbGlzdCByYXRlIGZhaWxlZFxuIik7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCXJl dHVybiAwOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2Nfb3BzIG10ODE5Ml9t dDYzNTlfcnQxMDE1X3J0NTY4Ml9jYXB0dXJlMV9vcHMgPSB7DQorCS5zdGFydHVwID0gbXQ4MTky X210NjM1OV9ydDEwMTVfcnQ1NjgyX2NhcHR1cmUxX3N0YXJ0dXAsDQorfTsNCisNCisvKiBGRSAq Lw0KK1NORF9TT0NfREFJTElOS19ERUZTKHBsYXliYWNrMSwNCisJCSAgICAgREFJTElOS19DT01Q X0FSUkFZKENPTVBfQ1BVKCJETDEiKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01Q X0RVTU1ZKCkpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9FTVBUWSgpKSk7DQor DQorU05EX1NPQ19EQUlMSU5LX0RFRlMocGxheWJhY2sxMiwNCisJCSAgICAgREFJTElOS19DT01Q X0FSUkFZKENPTVBfQ1BVKCJETDEyIikpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09N UF9EVU1NWSgpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRU1QVFkoKSkpOw0K Kw0KK1NORF9TT0NfREFJTElOS19ERUZTKHBsYXliYWNrMiwNCisJCSAgICAgREFJTElOS19DT01Q X0FSUkFZKENPTVBfQ1BVKCJETDIiKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01Q X0RVTU1ZKCkpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9FTVBUWSgpKSk7DQor DQorU05EX1NPQ19EQUlMSU5LX0RFRlMocGxheWJhY2szLA0KKwkJICAgICBEQUlMSU5LX0NPTVBf QVJSQVkoQ09NUF9DUFUoIkRMMyIpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBf RFVNTVkoKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0VNUFRZKCkpKTsNCisN CitTTkRfU09DX0RBSUxJTktfREVGUyhwbGF5YmFjazQsDQorCQkgICAgIERBSUxJTktfQ09NUF9B UlJBWShDT01QX0NQVSgiREw0IikpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9E VU1NWSgpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRU1QVFkoKSkpOw0KKw0K K1NORF9TT0NfREFJTElOS19ERUZTKHBsYXliYWNrNSwNCisJCSAgICAgREFJTElOS19DT01QX0FS UkFZKENPTVBfQ1BVKCJETDUiKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0RV TU1ZKCkpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9FTVBUWSgpKSk7DQorDQor U05EX1NPQ19EQUlMSU5LX0RFRlMocGxheWJhY2s2LA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJS QVkoQ09NUF9DUFUoIkRMNiIpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRFVN TVkoKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0VNUFRZKCkpKTsNCisNCitT TkRfU09DX0RBSUxJTktfREVGUyhwbGF5YmFjazcsDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJB WShDT01QX0NQVSgiREw3IikpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9EVU1N WSgpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRU1QVFkoKSkpOw0KKw0KK1NO RF9TT0NfREFJTElOS19ERUZTKHBsYXliYWNrOCwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZ KENPTVBfQ1BVKCJETDgiKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0RVTU1Z KCkpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9FTVBUWSgpKSk7DQorDQorU05E X1NPQ19EQUlMSU5LX0RFRlMocGxheWJhY2s5LA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVko Q09NUF9DUFUoIkRMOSIpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRFVNTVko KSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0VNUFRZKCkpKTsNCisNCitTTkRf U09DX0RBSUxJTktfREVGUyhjYXB0dXJlMSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENP TVBfQ1BVKCJVTDEiKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0RVTU1ZKCkp LA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9FTVBUWSgpKSk7DQorDQorU05EX1NP Q19EQUlMSU5LX0RFRlMoY2FwdHVyZTIsDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01Q X0NQVSgiVUwyIikpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9EVU1NWSgpKSwN CisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRU1QVFkoKSkpOw0KKw0KK1NORF9TT0Nf REFJTElOS19ERUZTKGNhcHR1cmUzLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9D UFUoIlVMMyIpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRFVNTVkoKSksDQor CQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0VNUFRZKCkpKTsNCisNCitTTkRfU09DX0RB SUxJTktfREVGUyhjYXB0dXJlNCwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfQ1BV KCJVTDQiKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0RVTU1ZKCkpLA0KKwkJ ICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9FTVBUWSgpKSk7DQorDQorU05EX1NPQ19EQUlM SU5LX0RFRlMoY2FwdHVyZTUsDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0NQVSgi VUw1IikpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9EVU1NWSgpKSwNCisJCSAg ICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRU1QVFkoKSkpOw0KKw0KK1NORF9TT0NfREFJTElO S19ERUZTKGNhcHR1cmU2LA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9DUFUoIlVM NiIpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRFVNTVkoKSksDQorCQkgICAg IERBSUxJTktfQ09NUF9BUlJBWShDT01QX0VNUFRZKCkpKTsNCisNCitTTkRfU09DX0RBSUxJTktf REVGUyhjYXB0dXJlNywNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfQ1BVKCJVTDci KSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0RVTU1ZKCkpLA0KKwkJICAgICBE QUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9FTVBUWSgpKSk7DQorDQorU05EX1NPQ19EQUlMSU5LX0RF RlMoY2FwdHVyZTgsDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0NQVSgiVUw4Iikp LA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9EVU1NWSgpKSwNCisJCSAgICAgREFJ TElOS19DT01QX0FSUkFZKENPTVBfRU1QVFkoKSkpOw0KKw0KK1NORF9TT0NfREFJTElOS19ERUZT KGNhcHR1cmVfbW9ubzEsDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0NQVSgiVUxf TU9OT18xIikpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9EVU1NWSgpKSwNCisJ CSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRU1QVFkoKSkpOw0KKw0KK1NORF9TT0NfREFJ TElOS19ERUZTKGNhcHR1cmVfbW9ubzIsDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01Q X0NQVSgiVUxfTU9OT18yIikpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9EVU1N WSgpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRU1QVFkoKSkpOw0KKw0KK1NO RF9TT0NfREFJTElOS19ERUZTKGNhcHR1cmVfbW9ubzMsDQorCQkgICAgIERBSUxJTktfQ09NUF9B UlJBWShDT01QX0NQVSgiVUxfTU9OT18zIikpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVko Q09NUF9EVU1NWSgpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRU1QVFkoKSkp Ow0KKw0KK1NORF9TT0NfREFJTElOS19ERUZTKHBsYXliYWNrX2hkbWksDQorCQkgICAgIERBSUxJ TktfQ09NUF9BUlJBWShDT01QX0NQVSgiSERNSSIpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FS UkFZKENPTVBfRFVNTVkoKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0VNUFRZ KCkpKTsNCisNCisvKiBCRSAqLw0KK1NORF9TT0NfREFJTElOS19ERUZTKHByaW1hcnlfY29kZWMs DQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0NQVSgiQUREQSIpKSwNCisJCSAgICAg REFJTElOS19DT01QX0FSUkFZKENPTVBfQ09ERUMoIm10NjM1OS1zb3VuZCIsDQorCQkJCQkJICAg Im10NjM1OS1zbmQtY29kZWMtYWlmMSIpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENP TVBfRU1QVFkoKSkpOw0KKw0KK1NORF9TT0NfREFJTElOS19ERUZTKHByaW1hcnlfY29kZWNfY2gz NCwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfQ1BVKCJBRERBX0NIMzQiKSksDQor CQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0NPREVDKCJtdDYzNTktc291bmQiLA0KKwkJ CQkJCSAgICJtdDYzNTktc25kLWNvZGVjLWFpZjIiKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9B UlJBWShDT01QX0VNUFRZKCkpKTsNCisNCitTTkRfU09DX0RBSUxJTktfREVGUyhhcF9kbWljLA0K KwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9DUFUoIkFQX0RNSUMiKSksDQorCQkgICAg IERBSUxJTktfQ09NUF9BUlJBWShDT01QX0RVTU1ZKCkpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBf QVJSQVkoQ09NUF9FTVBUWSgpKSk7DQorDQorU05EX1NPQ19EQUlMSU5LX0RFRlMoYXBfZG1pY19j aDM0LA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9DUFUoIkFQX0RNSUNfQ0gzNCIp KSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRFVNTVkoKSksDQorCQkgICAgIERB SUxJTktfQ09NUF9BUlJBWShDT01QX0VNUFRZKCkpKTsNCisNCitTTkRfU09DX0RBSUxJTktfREVG UyhpMnMwLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9DUFUoIkkyUzAiKSksDQor CQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0RVTU1ZKCkpLA0KKwkJICAgICBEQUlMSU5L X0NPTVBfQVJSQVkoQ09NUF9FTVBUWSgpKSk7DQorDQorU05EX1NPQ19EQUlMSU5LX0RFRlMoaTJz MSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfQ1BVKCJJMlMxIikpLA0KKwkJICAg ICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9EVU1NWSgpKSwNCisJCSAgICAgREFJTElOS19DT01Q X0FSUkFZKENPTVBfRU1QVFkoKSkpOw0KKw0KK1NORF9TT0NfREFJTElOS19ERUZTKGkyczIsDQor CQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0NQVSgiSTJTMiIpKSwNCisJCSAgICAgREFJ TElOS19DT01QX0FSUkFZKENPTVBfRFVNTVkoKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJB WShDT01QX0VNUFRZKCkpKTsNCisNCitTTkRfU09DX0RBSUxJTktfREVGUyhpMnMzLA0KKwkJICAg ICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9DUFUoIkkyUzMiKSksDQorCQkgICAgIERBSUxJTktf Q09NUF9BUlJBWShDT01QX0NPREVDKFJUMTAxNV9ERVYwX05BTUUsDQorCQkJCQkJICAgUlQxMDE1 X0NPREVDX0RBSSksDQorCQkJCQlDT01QX0NPREVDKFJUMTAxNV9ERVYxX05BTUUsDQorCQkJCQkJ ICAgUlQxMDE1X0NPREVDX0RBSSkpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9F TVBUWSgpKSk7DQorDQorU05EX1NPQ19EQUlMSU5LX0RFRlMoaTJzNSwNCisJCSAgICAgREFJTElO S19DT01QX0FSUkFZKENPTVBfQ1BVKCJJMlM1IikpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJS QVkoQ09NUF9EVU1NWSgpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRU1QVFko KSkpOw0KKw0KK1NORF9TT0NfREFJTElOS19ERUZTKGkyczYsDQorCQkgICAgIERBSUxJTktfQ09N UF9BUlJBWShDT01QX0NQVSgiSTJTNiIpKSwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENP TVBfRFVNTVkoKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0VNUFRZKCkpKTsN CisNCitTTkRfU09DX0RBSUxJTktfREVGUyhpMnM3LA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJS QVkoQ09NUF9DUFUoIkkyUzciKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0RV TU1ZKCkpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9FTVBUWSgpKSk7DQorDQor U05EX1NPQ19EQUlMSU5LX0RFRlMoaTJzOCwNCisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENP TVBfQ1BVKCJJMlM4IikpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9DT0RFQyhS VDU2ODJfREVWMF9OQU1FLA0KKwkJCQkJCSAgIFJUNTY4Ml9DT0RFQ19EQUkpKSwNCisJCSAgICAg REFJTElOS19DT01QX0FSUkFZKENPTVBfRU1QVFkoKSkpOw0KKw0KK1NORF9TT0NfREFJTElOS19E RUZTKGkyczksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0NQVSgiSTJTOSIpKSwN CisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfQ09ERUMoUlQ1NjgyX0RFVjBfTkFNRSwN CisJCQkJCQkgICBSVDU2ODJfQ09ERUNfREFJKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJB WShDT01QX0VNUFRZKCkpKTsNCisNCitTTkRfU09DX0RBSUxJTktfREVGUyhjb25uc3lzX2kycywN CisJCSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfQ1BVKCJDT05OU1lTX0kyUyIpKSwNCisJ CSAgICAgREFJTElOS19DT01QX0FSUkFZKENPTVBfRFVNTVkoKSksDQorCQkgICAgIERBSUxJTktf Q09NUF9BUlJBWShDT01QX0VNUFRZKCkpKTsNCisNCitTTkRfU09DX0RBSUxJTktfREVGUyhwY20x LA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9DUFUoIlBDTSAxIikpLA0KKwkJICAg ICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9EVU1NWSgpKSwNCisJCSAgICAgREFJTElOS19DT01Q X0FSUkFZKENPTVBfRU1QVFkoKSkpOw0KKw0KK1NORF9TT0NfREFJTElOS19ERUZTKHBjbTIsDQor CQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01QX0NQVSgiUENNIDIiKSksDQorCQkgICAgIERB SUxJTktfQ09NUF9BUlJBWShDT01QX0RVTU1ZKCkpLA0KKwkJICAgICBEQUlMSU5LX0NPTVBfQVJS QVkoQ09NUF9FTVBUWSgpKSk7DQorDQorU05EX1NPQ19EQUlMSU5LX0RFRlModGRtLA0KKwkJICAg ICBEQUlMSU5LX0NPTVBfQVJSQVkoQ09NUF9DUFUoIlRETSIpKSwNCisJCSAgICAgREFJTElOS19D T01QX0FSUkFZKENPTVBfRFVNTVkoKSksDQorCQkgICAgIERBSUxJTktfQ09NUF9BUlJBWShDT01Q X0VNUFRZKCkpKTsNCisNCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX2xpbmsgbXQ4MTkyX210 NjM1OV9ydDEwMTVfcnQ1NjgyX2RhaV9saW5rc1tdID0gew0KKwkvKiBGcm9udCBFbmQgREFJIGxp bmtzICovDQorCXsNCisJCS5uYW1lID0gIlBsYXliYWNrXzEiLA0KKwkJLnN0cmVhbV9uYW1lID0g IlBsYXliYWNrXzEiLA0KKwkJLnRyaWdnZXIgPSB7U05EX1NPQ19EUENNX1RSSUdHRVJfUFJFLA0K KwkJCSAgICBTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkV9LA0KKwkJLmR5bmFtaWMgPSAxLA0KKwkJ LmRwY21fcGxheWJhY2sgPSAxLA0KKwkJU05EX1NPQ19EQUlMSU5LX1JFRyhwbGF5YmFjazEpLA0K Kwl9LA0KKwl7DQorCQkubmFtZSA9ICJQbGF5YmFja18xMiIsDQorCQkuc3RyZWFtX25hbWUgPSAi UGxheWJhY2tfMTIiLA0KKwkJLnRyaWdnZXIgPSB7U05EX1NPQ19EUENNX1RSSUdHRVJfUFJFLA0K KwkJCSAgICBTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkV9LA0KKwkJLmR5bmFtaWMgPSAxLA0KKwkJ LmRwY21fcGxheWJhY2sgPSAxLA0KKwkJU05EX1NPQ19EQUlMSU5LX1JFRyhwbGF5YmFjazEyKSwN CisJfSwNCisJew0KKwkJLm5hbWUgPSAiUGxheWJhY2tfMiIsDQorCQkuc3RyZWFtX25hbWUgPSAi UGxheWJhY2tfMiIsDQorCQkudHJpZ2dlciA9IHtTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkUsDQor CQkJICAgIFNORF9TT0NfRFBDTV9UUklHR0VSX1BSRX0sDQorCQkuZHluYW1pYyA9IDEsDQorCQku ZHBjbV9wbGF5YmFjayA9IDEsDQorCQlTTkRfU09DX0RBSUxJTktfUkVHKHBsYXliYWNrMiksDQor CX0sDQorCXsNCisJCS5uYW1lID0gIlBsYXliYWNrXzMiLA0KKwkJLnN0cmVhbV9uYW1lID0gIlBs YXliYWNrXzMiLA0KKwkJLnRyaWdnZXIgPSB7U05EX1NPQ19EUENNX1RSSUdHRVJfUFJFLA0KKwkJ CSAgICBTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkV9LA0KKwkJLmR5bmFtaWMgPSAxLA0KKwkJLmRw Y21fcGxheWJhY2sgPSAxLA0KKwkJU05EX1NPQ19EQUlMSU5LX1JFRyhwbGF5YmFjazMpLA0KKwl9 LA0KKwl7DQorCQkubmFtZSA9ICJQbGF5YmFja180IiwNCisJCS5zdHJlYW1fbmFtZSA9ICJQbGF5 YmFja180IiwNCisJCS50cmlnZ2VyID0ge1NORF9TT0NfRFBDTV9UUklHR0VSX1BSRSwNCisJCQkg ICAgU05EX1NPQ19EUENNX1RSSUdHRVJfUFJFfSwNCisJCS5keW5hbWljID0gMSwNCisJCS5kcGNt X3BsYXliYWNrID0gMSwNCisJCVNORF9TT0NfREFJTElOS19SRUcocGxheWJhY2s0KSwNCisJfSwN CisJew0KKwkJLm5hbWUgPSAiUGxheWJhY2tfNSIsDQorCQkuc3RyZWFtX25hbWUgPSAiUGxheWJh Y2tfNSIsDQorCQkudHJpZ2dlciA9IHtTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkUsDQorCQkJICAg IFNORF9TT0NfRFBDTV9UUklHR0VSX1BSRX0sDQorCQkuZHluYW1pYyA9IDEsDQorCQkuZHBjbV9w bGF5YmFjayA9IDEsDQorCQlTTkRfU09DX0RBSUxJTktfUkVHKHBsYXliYWNrNSksDQorCX0sDQor CXsNCisJCS5uYW1lID0gIlBsYXliYWNrXzYiLA0KKwkJLnN0cmVhbV9uYW1lID0gIlBsYXliYWNr XzYiLA0KKwkJLnRyaWdnZXIgPSB7U05EX1NPQ19EUENNX1RSSUdHRVJfUFJFLA0KKwkJCSAgICBT TkRfU09DX0RQQ01fVFJJR0dFUl9QUkV9LA0KKwkJLmR5bmFtaWMgPSAxLA0KKwkJLmRwY21fcGxh eWJhY2sgPSAxLA0KKwkJU05EX1NPQ19EQUlMSU5LX1JFRyhwbGF5YmFjazYpLA0KKwl9LA0KKwl7 DQorCQkubmFtZSA9ICJQbGF5YmFja183IiwNCisJCS5zdHJlYW1fbmFtZSA9ICJQbGF5YmFja183 IiwNCisJCS50cmlnZ2VyID0ge1NORF9TT0NfRFBDTV9UUklHR0VSX1BSRSwNCisJCQkgICAgU05E X1NPQ19EUENNX1RSSUdHRVJfUFJFfSwNCisJCS5keW5hbWljID0gMSwNCisJCS5kcGNtX3BsYXli YWNrID0gMSwNCisJCVNORF9TT0NfREFJTElOS19SRUcocGxheWJhY2s3KSwNCisJfSwNCisJew0K KwkJLm5hbWUgPSAiUGxheWJhY2tfOCIsDQorCQkuc3RyZWFtX25hbWUgPSAiUGxheWJhY2tfOCIs DQorCQkudHJpZ2dlciA9IHtTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkUsDQorCQkJICAgIFNORF9T T0NfRFBDTV9UUklHR0VSX1BSRX0sDQorCQkuZHluYW1pYyA9IDEsDQorCQkuZHBjbV9wbGF5YmFj ayA9IDEsDQorCQlTTkRfU09DX0RBSUxJTktfUkVHKHBsYXliYWNrOCksDQorCX0sDQorCXsNCisJ CS5uYW1lID0gIlBsYXliYWNrXzkiLA0KKwkJLnN0cmVhbV9uYW1lID0gIlBsYXliYWNrXzkiLA0K KwkJLnRyaWdnZXIgPSB7U05EX1NPQ19EUENNX1RSSUdHRVJfUFJFLA0KKwkJCSAgICBTTkRfU09D X0RQQ01fVFJJR0dFUl9QUkV9LA0KKwkJLmR5bmFtaWMgPSAxLA0KKwkJLmRwY21fcGxheWJhY2sg PSAxLA0KKwkJU05EX1NPQ19EQUlMSU5LX1JFRyhwbGF5YmFjazkpLA0KKwl9LA0KKwl7DQorCQku bmFtZSA9ICJDYXB0dXJlXzEiLA0KKwkJLnN0cmVhbV9uYW1lID0gIkNhcHR1cmVfMSIsDQorCQku dHJpZ2dlciA9IHtTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkUsDQorCQkJICAgIFNORF9TT0NfRFBD TV9UUklHR0VSX1BSRX0sDQorCQkuZHluYW1pYyA9IDEsDQorCQkuZHBjbV9jYXB0dXJlID0gMSwN CisJCS5vcHMgPSAmbXQ4MTkyX210NjM1OV9ydDEwMTVfcnQ1NjgyX2NhcHR1cmUxX29wcywNCisJ CVNORF9TT0NfREFJTElOS19SRUcoY2FwdHVyZTEpLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJD YXB0dXJlXzIiLA0KKwkJLnN0cmVhbV9uYW1lID0gIkNhcHR1cmVfMiIsDQorCQkudHJpZ2dlciA9 IHtTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkUsDQorCQkJICAgIFNORF9TT0NfRFBDTV9UUklHR0VS X1BSRX0sDQorCQkuZHluYW1pYyA9IDEsDQorCQkuZHBjbV9jYXB0dXJlID0gMSwNCisJCVNORF9T T0NfREFJTElOS19SRUcoY2FwdHVyZTIpLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJDYXB0dXJl XzMiLA0KKwkJLnN0cmVhbV9uYW1lID0gIkNhcHR1cmVfMyIsDQorCQkudHJpZ2dlciA9IHtTTkRf U09DX0RQQ01fVFJJR0dFUl9QUkUsDQorCQkJICAgIFNORF9TT0NfRFBDTV9UUklHR0VSX1BSRX0s DQorCQkuZHluYW1pYyA9IDEsDQorCQkuZHBjbV9jYXB0dXJlID0gMSwNCisJCVNORF9TT0NfREFJ TElOS19SRUcoY2FwdHVyZTMpLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJDYXB0dXJlXzQiLA0K KwkJLnN0cmVhbV9uYW1lID0gIkNhcHR1cmVfNCIsDQorCQkudHJpZ2dlciA9IHtTTkRfU09DX0RQ Q01fVFJJR0dFUl9QUkUsDQorCQkJICAgIFNORF9TT0NfRFBDTV9UUklHR0VSX1BSRX0sDQorCQku ZHluYW1pYyA9IDEsDQorCQkuZHBjbV9jYXB0dXJlID0gMSwNCisJCVNORF9TT0NfREFJTElOS19S RUcoY2FwdHVyZTQpLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJDYXB0dXJlXzUiLA0KKwkJLnN0 cmVhbV9uYW1lID0gIkNhcHR1cmVfNSIsDQorCQkudHJpZ2dlciA9IHtTTkRfU09DX0RQQ01fVFJJ R0dFUl9QUkUsDQorCQkJICAgIFNORF9TT0NfRFBDTV9UUklHR0VSX1BSRX0sDQorCQkuZHluYW1p YyA9IDEsDQorCQkuZHBjbV9jYXB0dXJlID0gMSwNCisJCVNORF9TT0NfREFJTElOS19SRUcoY2Fw dHVyZTUpLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJDYXB0dXJlXzYiLA0KKwkJLnN0cmVhbV9u YW1lID0gIkNhcHR1cmVfNiIsDQorCQkudHJpZ2dlciA9IHtTTkRfU09DX0RQQ01fVFJJR0dFUl9Q UkUsDQorCQkJICAgIFNORF9TT0NfRFBDTV9UUklHR0VSX1BSRX0sDQorCQkuZHluYW1pYyA9IDEs DQorCQkuZHBjbV9jYXB0dXJlID0gMSwNCisJCVNORF9TT0NfREFJTElOS19SRUcoY2FwdHVyZTYp LA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJDYXB0dXJlXzciLA0KKwkJLnN0cmVhbV9uYW1lID0g IkNhcHR1cmVfNyIsDQorCQkudHJpZ2dlciA9IHtTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkUsDQor CQkJICAgIFNORF9TT0NfRFBDTV9UUklHR0VSX1BSRX0sDQorCQkuZHluYW1pYyA9IDEsDQorCQku ZHBjbV9jYXB0dXJlID0gMSwNCisJCVNORF9TT0NfREFJTElOS19SRUcoY2FwdHVyZTcpLA0KKwl9 LA0KKwl7DQorCQkubmFtZSA9ICJDYXB0dXJlXzgiLA0KKwkJLnN0cmVhbV9uYW1lID0gIkNhcHR1 cmVfOCIsDQorCQkudHJpZ2dlciA9IHtTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkUsDQorCQkJICAg IFNORF9TT0NfRFBDTV9UUklHR0VSX1BSRX0sDQorCQkuZHluYW1pYyA9IDEsDQorCQkuZHBjbV9j YXB0dXJlID0gMSwNCisJCVNORF9TT0NfREFJTElOS19SRUcoY2FwdHVyZTgpLA0KKwl9LA0KKwl7 DQorCQkubmFtZSA9ICJDYXB0dXJlX01vbm9fMSIsDQorCQkuc3RyZWFtX25hbWUgPSAiQ2FwdHVy ZV9Nb25vXzEiLA0KKwkJLnRyaWdnZXIgPSB7U05EX1NPQ19EUENNX1RSSUdHRVJfUFJFLA0KKwkJ CSAgICBTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkV9LA0KKwkJLmR5bmFtaWMgPSAxLA0KKwkJLmRw Y21fY2FwdHVyZSA9IDEsDQorCQlTTkRfU09DX0RBSUxJTktfUkVHKGNhcHR1cmVfbW9ubzEpLA0K Kwl9LA0KKwl7DQorCQkubmFtZSA9ICJDYXB0dXJlX01vbm9fMiIsDQorCQkuc3RyZWFtX25hbWUg PSAiQ2FwdHVyZV9Nb25vXzIiLA0KKwkJLnRyaWdnZXIgPSB7U05EX1NPQ19EUENNX1RSSUdHRVJf UFJFLA0KKwkJCSAgICBTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkV9LA0KKwkJLmR5bmFtaWMgPSAx LA0KKwkJLmRwY21fY2FwdHVyZSA9IDEsDQorCQlTTkRfU09DX0RBSUxJTktfUkVHKGNhcHR1cmVf bW9ubzIpLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJDYXB0dXJlX01vbm9fMyIsDQorCQkuc3Ry ZWFtX25hbWUgPSAiQ2FwdHVyZV9Nb25vXzMiLA0KKwkJLnRyaWdnZXIgPSB7U05EX1NPQ19EUENN X1RSSUdHRVJfUFJFLA0KKwkJCSAgICBTTkRfU09DX0RQQ01fVFJJR0dFUl9QUkV9LA0KKwkJLmR5 bmFtaWMgPSAxLA0KKwkJLmRwY21fY2FwdHVyZSA9IDEsDQorCQlTTkRfU09DX0RBSUxJTktfUkVH KGNhcHR1cmVfbW9ubzMpLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJwbGF5YmFja19oZG1pIiwN CisJCS5zdHJlYW1fbmFtZSA9ICJQbGF5YmFja19IRE1JIiwNCisJCS50cmlnZ2VyID0ge1NORF9T T0NfRFBDTV9UUklHR0VSX1BSRSwNCisJCQkgICAgU05EX1NPQ19EUENNX1RSSUdHRVJfUFJFfSwN CisJCS5keW5hbWljID0gMSwNCisJCS5kcGNtX3BsYXliYWNrID0gMSwNCisJCVNORF9TT0NfREFJ TElOS19SRUcocGxheWJhY2tfaGRtaSksDQorCX0sDQorCS8qIEJhY2sgRW5kIERBSSBsaW5rcyAq Lw0KKwl7DQorCQkubmFtZSA9ICJQcmltYXJ5IENvZGVjIiwNCisJCS5ub19wY20gPSAxLA0KKwkJ LmRwY21fcGxheWJhY2sgPSAxLA0KKwkJLmRwY21fY2FwdHVyZSA9IDEsDQorCQkuaWdub3JlX3N1 c3BlbmQgPSAxLA0KKwkJLmluaXQgPSBtdDgxOTJfbXQ2MzU5X2luaXQsDQorCQlTTkRfU09DX0RB SUxJTktfUkVHKHByaW1hcnlfY29kZWMpLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJQcmltYXJ5 IENvZGVjIENIMzQiLA0KKwkJLm5vX3BjbSA9IDEsDQorCQkuZHBjbV9wbGF5YmFjayA9IDEsDQor CQkuZHBjbV9jYXB0dXJlID0gMSwNCisJCS5pZ25vcmVfc3VzcGVuZCA9IDEsDQorCQlTTkRfU09D X0RBSUxJTktfUkVHKHByaW1hcnlfY29kZWNfY2gzNCksDQorCX0sDQorCXsNCisJCS5uYW1lID0g IkFQX0RNSUMiLA0KKwkJLm5vX3BjbSA9IDEsDQorCQkuZHBjbV9jYXB0dXJlID0gMSwNCisJCS5p Z25vcmVfc3VzcGVuZCA9IDEsDQorCQlTTkRfU09DX0RBSUxJTktfUkVHKGFwX2RtaWMpLA0KKwl9 LA0KKwl7DQorCQkubmFtZSA9ICJBUF9ETUlDX0NIMzQiLA0KKwkJLm5vX3BjbSA9IDEsDQorCQku ZHBjbV9jYXB0dXJlID0gMSwNCisJCS5pZ25vcmVfc3VzcGVuZCA9IDEsDQorCQlTTkRfU09DX0RB SUxJTktfUkVHKGFwX2RtaWNfY2gzNCksDQorCX0sDQorCXsNCisJCS5uYW1lID0gIkkyUzAiLA0K KwkJLm5vX3BjbSA9IDEsDQorCQkuZHBjbV9jYXB0dXJlID0gMSwNCisJCS5pZ25vcmVfc3VzcGVu ZCA9IDEsDQorCQkuYmVfaHdfcGFyYW1zX2ZpeHVwID0gbXQ4MTkyX2kyc19od19wYXJhbXNfZml4 dXAsDQorCQlTTkRfU09DX0RBSUxJTktfUkVHKGkyczApLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9 ICJJMlMxIiwNCisJCS5ub19wY20gPSAxLA0KKwkJLmRwY21fcGxheWJhY2sgPSAxLA0KKwkJLmln bm9yZV9zdXNwZW5kID0gMSwNCisJCS5iZV9od19wYXJhbXNfZml4dXAgPSBtdDgxOTJfaTJzX2h3 X3BhcmFtc19maXh1cCwNCisJCVNORF9TT0NfREFJTElOS19SRUcoaTJzMSksDQorCX0sDQorCXsN CisJCS5uYW1lID0gIkkyUzIiLA0KKwkJLm5vX3BjbSA9IDEsDQorCQkuZHBjbV9jYXB0dXJlID0g MSwNCisJCS5pZ25vcmVfc3VzcGVuZCA9IDEsDQorCQkuYmVfaHdfcGFyYW1zX2ZpeHVwID0gbXQ4 MTkyX2kyc19od19wYXJhbXNfZml4dXAsDQorCQlTTkRfU09DX0RBSUxJTktfUkVHKGkyczIpLA0K Kwl9LA0KKwl7DQorCQkubmFtZSA9ICJJMlMzIiwNCisJCS5ub19wY20gPSAxLA0KKwkJLmRwY21f cGxheWJhY2sgPSAxLA0KKwkJLmlnbm9yZV9zdXNwZW5kID0gMSwNCisJCS5iZV9od19wYXJhbXNf Zml4dXAgPSBtdDgxOTJfaTJzX2h3X3BhcmFtc19maXh1cCwNCisJCVNORF9TT0NfREFJTElOS19S RUcoaTJzMyksDQorCQkub3BzID0gJm10ODE5Ml9ydDEwMTVfaTJzX29wcywNCisJfSwNCisJew0K KwkJLm5hbWUgPSAiSTJTNSIsDQorCQkubm9fcGNtID0gMSwNCisJCS5kcGNtX3BsYXliYWNrID0g MSwNCisJCS5pZ25vcmVfc3VzcGVuZCA9IDEsDQorCQkuYmVfaHdfcGFyYW1zX2ZpeHVwID0gbXQ4 MTkyX2kyc19od19wYXJhbXNfZml4dXAsDQorCQlTTkRfU09DX0RBSUxJTktfUkVHKGkyczUpLA0K Kwl9LA0KKwl7DQorCQkubmFtZSA9ICJJMlM2IiwNCisJCS5ub19wY20gPSAxLA0KKwkJLmRwY21f Y2FwdHVyZSA9IDEsDQorCQkuaWdub3JlX3N1c3BlbmQgPSAxLA0KKwkJLmJlX2h3X3BhcmFtc19m aXh1cCA9IG10ODE5Ml9pMnNfaHdfcGFyYW1zX2ZpeHVwLA0KKwkJU05EX1NPQ19EQUlMSU5LX1JF RyhpMnM2KSwNCisJfSwNCisJew0KKwkJLm5hbWUgPSAiSTJTNyIsDQorCQkubm9fcGNtID0gMSwN CisJCS5kcGNtX3BsYXliYWNrID0gMSwNCisJCS5pZ25vcmVfc3VzcGVuZCA9IDEsDQorCQkuYmVf aHdfcGFyYW1zX2ZpeHVwID0gbXQ4MTkyX2kyc19od19wYXJhbXNfZml4dXAsDQorCQlTTkRfU09D X0RBSUxJTktfUkVHKGkyczcpLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJJMlM4IiwNCisJCS5u b19wY20gPSAxLA0KKwkJLmRwY21fY2FwdHVyZSA9IDEsDQorCQkuaWdub3JlX3N1c3BlbmQgPSAx LA0KKwkJLmluaXQgPSBtdDgxOTJfcnQ1NjgyX2luaXQsDQorCQkuYmVfaHdfcGFyYW1zX2ZpeHVw ID0gbXQ4MTkyX2kyc19od19wYXJhbXNfZml4dXAsDQorCQlTTkRfU09DX0RBSUxJTktfUkVHKGky czgpLA0KKwkJLm9wcyA9ICZtdDgxOTJfcnQ1NjgyX2kyc19vcHMsDQorCX0sDQorCXsNCisJCS5u YW1lID0gIkkyUzkiLA0KKwkJLm5vX3BjbSA9IDEsDQorCQkuZHBjbV9wbGF5YmFjayA9IDEsDQor CQkuaWdub3JlX3N1c3BlbmQgPSAxLA0KKwkJLmJlX2h3X3BhcmFtc19maXh1cCA9IG10ODE5Ml9p MnNfaHdfcGFyYW1zX2ZpeHVwLA0KKwkJU05EX1NPQ19EQUlMSU5LX1JFRyhpMnM5KSwNCisJCS5v cHMgPSAmbXQ4MTkyX3J0NTY4Ml9pMnNfb3BzLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJDT05O U1lTX0kyUyIsDQorCQkubm9fcGNtID0gMSwNCisJCS5kcGNtX2NhcHR1cmUgPSAxLA0KKwkJLmln bm9yZV9zdXNwZW5kID0gMSwNCisJCVNORF9TT0NfREFJTElOS19SRUcoY29ubnN5c19pMnMpLA0K Kwl9LA0KKwl7DQorCQkubmFtZSA9ICJQQ00gMSIsDQorCQkubm9fcGNtID0gMSwNCisJCS5kcGNt X3BsYXliYWNrID0gMSwNCisJCS5kcGNtX2NhcHR1cmUgPSAxLA0KKwkJLmlnbm9yZV9zdXNwZW5k ID0gMSwNCisJCVNORF9TT0NfREFJTElOS19SRUcocGNtMSksDQorCX0sDQorCXsNCisJCS5uYW1l ID0gIlBDTSAyIiwNCisJCS5ub19wY20gPSAxLA0KKwkJLmRwY21fcGxheWJhY2sgPSAxLA0KKwkJ LmRwY21fY2FwdHVyZSA9IDEsDQorCQkuaWdub3JlX3N1c3BlbmQgPSAxLA0KKwkJU05EX1NPQ19E QUlMSU5LX1JFRyhwY20yKSwNCisJfSwNCisJew0KKwkJLm5hbWUgPSAiVERNIiwNCisJCS5ub19w Y20gPSAxLA0KKwkJLmRwY21fcGxheWJhY2sgPSAxLA0KKwkJLmlnbm9yZV9zdXNwZW5kID0gMSwN CisJCVNORF9TT0NfREFJTElOS19SRUcodGRtKSwNCisJfSwNCit9Ow0KKw0KK3N0YXRpYyBzdHJ1 Y3Qgc25kX3NvY19jb2RlY19jb25mIHJ0MTAxNV9hbXBfY29uZltdID0gew0KKwl7DQorCQkuZGxj ID0gQ09NUF9DT0RFQ19DT05GKFJUMTAxNV9ERVYwX05BTUUpLA0KKwkJLm5hbWVfcHJlZml4ID0g IkxlZnQiLA0KKwl9LA0KKwl7DQorCQkuZGxjID0gQ09NUF9DT0RFQ19DT05GKFJUMTAxNV9ERVYx X05BTUUpLA0KKwkJLm5hbWVfcHJlZml4ID0gIlJpZ2h0IiwNCisJfSwNCit9Ow0KKw0KK3N0YXRp YyBzdHJ1Y3Qgc25kX3NvY19jYXJkIG10ODE5Ml9tdDYzNTlfcnQxMDE1X3J0NTY4Ml9zb2NfY2Fy ZCA9IHsNCisJLm5hbWUgPSAibXQ4MTkyX210NjM1OV9ydDEwMTVfcnQ1NjgyIiwNCisJLm93bmVy ID0gVEhJU19NT0RVTEUsDQorCS5kYWlfbGluayA9IG10ODE5Ml9tdDYzNTlfcnQxMDE1X3J0NTY4 Ml9kYWlfbGlua3MsDQorCS5udW1fbGlua3MgPSBBUlJBWV9TSVpFKG10ODE5Ml9tdDYzNTlfcnQx MDE1X3J0NTY4Ml9kYWlfbGlua3MpLA0KKwkuY29udHJvbHMgPSBtdDgxOTJfbXQ2MzU5X3J0MTAx NV9ydDU2ODJfY29udHJvbHMsDQorCS5udW1fY29udHJvbHMgPSBBUlJBWV9TSVpFKG10ODE5Ml9t dDYzNTlfcnQxMDE1X3J0NTY4Ml9jb250cm9scyksDQorCS5kYXBtX3dpZGdldHMgPSBtdDgxOTJf bXQ2MzU5X3J0MTAxNV9ydDU2ODJfd2lkZ2V0cywNCisJLm51bV9kYXBtX3dpZGdldHMgPSBBUlJB WV9TSVpFKG10ODE5Ml9tdDYzNTlfcnQxMDE1X3J0NTY4Ml93aWRnZXRzKSwNCisJLmRhcG1fcm91 dGVzID0gbXQ4MTkyX210NjM1OV9ydDEwMTVfcnQ1NjgyX3JvdXRlcywNCisJLm51bV9kYXBtX3Jv dXRlcyA9IEFSUkFZX1NJWkUobXQ4MTkyX210NjM1OV9ydDEwMTVfcnQ1NjgyX3JvdXRlcyksDQor CS5jb2RlY19jb25mID0gcnQxMDE1X2FtcF9jb25mLA0KKwkubnVtX2NvbmZpZ3MgPSBBUlJBWV9T SVpFKHJ0MTAxNV9hbXBfY29uZiksDQorfTsNCisNCitzdGF0aWMgaW50IG10ODE5Ml9tdDYzNTlf cnQxMDE1X3J0NTY4Ml9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCit7 DQorCXN0cnVjdCBzbmRfc29jX2NhcmQgKmNhcmQgPSAmbXQ4MTkyX210NjM1OV9ydDEwMTVfcnQ1 NjgyX3NvY19jYXJkOw0KKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBsYXRmb3JtX25vZGU7DQorCWlu dCByZXQsIGk7DQorCXN0cnVjdCBzbmRfc29jX2RhaV9saW5rICpkYWlfbGluazsNCisNCisJY2Fy ZC0+ZGV2ID0gJnBkZXYtPmRldjsNCisNCisJcGxhdGZvcm1fbm9kZSA9IG9mX3BhcnNlX3BoYW5k bGUocGRldi0+ZGV2Lm9mX25vZGUsDQorCQkJCQkgIm1lZGlhdGVrLHBsYXRmb3JtIiwgMCk7DQor CWlmICghcGxhdGZvcm1fbm9kZSkgew0KKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiUHJvcGVydHkg J3BsYXRmb3JtJyBtaXNzaW5nIG9yIGludmFsaWRcbiIpOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQor CX0NCisNCisJZm9yX2VhY2hfY2FyZF9wcmVsaW5rcyhjYXJkLCBpLCBkYWlfbGluaykgew0KKwkJ aWYgKCFkYWlfbGluay0+cGxhdGZvcm1zLT5uYW1lKQ0KKwkJCWRhaV9saW5rLT5wbGF0Zm9ybXMt Pm9mX25vZGUgPSBwbGF0Zm9ybV9ub2RlOw0KKwl9DQorDQorCXJldCA9IG10ODE5Ml9hZmVfZ3Bp b19pbml0KCZwZGV2LT5kZXYpOw0KKwlpZiAocmV0KSB7DQorCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJpbml0IGdwaW8gZXJyb3IgJWRcbiIsIHJldCk7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQor CXJldHVybiBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY2FyZCgmcGRldi0+ZGV2LCBjYXJkKTsNCit9 DQorDQorI2lmZGVmIENPTkZJR19PRg0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IG10ODE5Ml9tdDYzNTlfcnQxMDE1X3J0NTY4Ml9kdF9tYXRjaFtdID0gew0KKwl7LmNvbXBhdGli bGUgPSAibWVkaWF0ZWssbXQ4MTkyX210NjM1OV9ydDEwMTVfcnQ1NjgyIix9LA0KKwl7fQ0KK307 DQorI2VuZGlmDQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG10ODE5Ml9tdDYz NTlfcnQxMDE1X3J0NTY4Ml9wbV9vcHMgPSB7DQorCS5wb3dlcm9mZiA9IHNuZF9zb2NfcG93ZXJv ZmYsDQorCS5yZXN0b3JlID0gc25kX3NvY19yZXN1bWUsDQorfTsNCisNCitzdGF0aWMgc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBtdDgxOTJfbXQ2MzU5X3J0MTAxNV9ydDU2ODJfZHJpdmVyID0gew0K KwkuZHJpdmVyID0gew0KKwkJLm5hbWUgPSAibXQ4MTkyX210NjM1OV9ydDEwMTVfcnQ1NjgyIiwN CisjaWZkZWYgQ09ORklHX09GDQorCQkub2ZfbWF0Y2hfdGFibGUgPSBtdDgxOTJfbXQ2MzU5X3J0 MTAxNV9ydDU2ODJfZHRfbWF0Y2gsDQorI2VuZGlmDQorCQkucG0gPSAmbXQ4MTkyX210NjM1OV9y dDEwMTVfcnQ1NjgyX3BtX29wcywNCisJfSwNCisJLnByb2JlID0gbXQ4MTkyX210NjM1OV9ydDEw MTVfcnQ1NjgyX2Rldl9wcm9iZSwNCit9Ow0KKw0KK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXQ4 MTkyX210NjM1OV9ydDEwMTVfcnQ1NjgyX2RyaXZlcik7DQorDQorLyogTW9kdWxlIGluZm9ybWF0 aW9uICovDQorTU9EVUxFX0RFU0NSSVBUSU9OKCJNVDgxOTItTVQ2MzU5LVJUMTAxNS1SVDU2ODIg QUxTQSBTb0MgbWFjaGluZSBkcml2ZXIiKTsNCitNT0RVTEVfQVVUSE9SKCJKaWF4aW4gWXUgPGpp YXhpbi55dUBtZWRpYXRlay5jb20+Iik7DQorTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOw0KK01P RFVMRV9BTElBUygibXQ4MTkyX210NjM1OV9ydDEwMTVfcnQ1NjgyIHNvYyBjYXJkIik7DQotLSAN CjIuMTguMA0K