Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp1474079pxb; Fri, 6 Nov 2020 10:29:31 -0800 (PST) X-Google-Smtp-Source: ABdhPJxzt1QwKRRd08B9IPMQ8HYLK2AUvletUsYrQ5MRjC169JmCwBYxBS5f7n0k2rhia6a2AooE X-Received: by 2002:a50:cd51:: with SMTP id d17mr3266342edj.93.1604687370929; Fri, 06 Nov 2020 10:29:30 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1604687370; cv=pass; d=google.com; s=arc-20160816; b=WhgEZhBuCSbZSuaNT7Wj5QqaLN145EaZPt3W2xNPJGB7aEZHp2OYw+8N/JbKo9f01f 4M3b0X/xtspe28G5Fhq3FNKhPSAVbPLXB4qqm/dX/jxLszoFhBT4pzs4NzboX2fFVFvT GiBYvLXym0mk+och06iFyxCbmAz1lq49ZFtS/Ow1GegcWSQXMxyOlbY9oILYk8PHFyD5 iQ4Pm9FVVGfkCa5+XPur0wXjwb2altGaPxjMIqNrO1Ju36Zh4lcAW7J7XsuZ8gT2QZOF d4DnOlQ2sk4udoZJAyH46SV87/mnXpCT2jo1x5J50l/rOGuh6o0ouojVIeNwSSF32cnu hMvw== ARC-Message-Signature: i=2; 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:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from; bh=8CF0Jnnr/YzKHpDvuu4/QQeBielKKYp3F7R2qsMtcJg=; b=shachRk7puC+ZzMIwGBAlUF+0HlGgbxlK4tHRtl3pkdTKEg/x6vQ8hJscOr2MDKKwr 48GP869JAz/cQZGYth0B/s4BC68pZ3Lkou1SKI/TaoBvS3i6KScN5xYcTTweUqAJu21r j0JsvDjmA64TxtUbcAOiE4s254qNLY/clAu7C36B87O6YedFfr5m8qbGzYqElX9/KGzs W3ehJkTYvYUIDttZXuwNWHFKjOtVHA/dpucz0EagE4Qy+o1WJJfmMOzdTxqK/f6oNv9f zHT1pz5aNH4e+RNAeSRIhQ5d4XWRF+sPsqQusXEh7IH99SjP75HGtZznGY1ECMmPgjeb TP/Q== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=aspeedtech.com dkim=pass dkdomain=aspeedtech.com dmarc=pass fromdomain=aspeedtech.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y21si1464487ejq.338.2020.11.06.10.29.07; Fri, 06 Nov 2020 10:29:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=aspeedtech.com dkim=pass dkdomain=aspeedtech.com dmarc=pass fromdomain=aspeedtech.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727805AbgKFS1m (ORCPT + 99 others); Fri, 6 Nov 2020 13:27:42 -0500 Received: from mail-eopbgr1310112.outbound.protection.outlook.com ([40.107.131.112]:23139 "EHLO APC01-SG2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727852AbgKFS1k (ORCPT ); Fri, 6 Nov 2020 13:27:40 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PRrd5Jc6l57w2XqMf7nmP8yF6Gqf0S4ndxHLRHvVtaLVFpODmAhqYWlW0HkruozbIEUMReDAxpNVIsQlvIrKPNDoCPjeNkL30agFIyVkYFT3m3Lc2Cf2D3B+I12ZZ3zM5IqzoY5Y6dSy7ZhVn+kr+ZcH+bXPFpf7n5upB25ljb9UbUYkePxcfpHg30+SoqzFtEiU87LZz6c7ix9MbJ8QKEvYg4EHRkbKiCWoqPkeglbDpv7N5CrKieLqItqzPDYk/7D6Xy5uaZQR+fJRhIwzy2Y0IbS1eEpa6HxuxQ1CSCNcQ2fzTW7G3DyX1v8lKB+mIhE9YEmgecyZzTYuDRRJDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8CF0Jnnr/YzKHpDvuu4/QQeBielKKYp3F7R2qsMtcJg=; b=FXNFcVuUJitF+NHxYHgi/XOL6yzvH+i0zhYBxWejMDgrpK5qVJTK2pOSjH1Vg8M7Y9srNwjP+k1KeZJrjHKSTAVx4PYV+T9r/Xu3LRqQlr5BO30bJRblT4A2TQIJOwLp6+ulKRpF7xNl92M+K3TyGaEj9ZNxjj96/S57wUKhQAcH5jNL+hVv/L/9QUST6QM7Qsr9rTLfoLtxFhD2djGb+pmpu5sR7XyRMh7NkZLl5DZapJ+KCboxuiMDwAHqO+WjUqqmmMqb49PWOCcx00euo18PRXAFwTL5Kp4Uio8bqBQqFySo9CrTTyktCxzDt3DXVaxZyP5AFjE02ovUDAAHVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=aspeedtech.com; dmarc=pass action=none header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none Received: from HK0PR06MB2786.apcprd06.prod.outlook.com (2603:1096:203:5b::22) by HK2PR0601MB2034.apcprd06.prod.outlook.com (2603:1096:202:d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3541.21; Fri, 6 Nov 2020 18:27:33 +0000 Received: from HK0PR06MB2786.apcprd06.prod.outlook.com ([fe80::c9cf:b4b1:3371:d532]) by HK0PR06MB2786.apcprd06.prod.outlook.com ([fe80::c9cf:b4b1:3371:d532%7]) with mapi id 15.20.3499.033; Fri, 6 Nov 2020 18:27:33 +0000 From: Chin-Ting Kuo To: Boris Brezillon CC: =?utf-8?B?Q8OpZHJpYyBMZSBHb2F0ZXI=?= , "robh+dt@kernel.org" , "broonie@kernel.org" , "joel@jms.id.au" , "andrew@aj.id.au" , "bbrezillon@kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-aspeed@lists.ozlabs.org" , "linux-spi@vger.kernel.org" , BMC-SW , Vignesh R , Tudor Ambarus Subject: RE: [v3 4/4] spi: aspeed: Add ASPEED FMC/SPI memory controller driver Thread-Topic: [v3 4/4] spi: aspeed: Add ASPEED FMC/SPI memory controller driver Thread-Index: AQHWs2u0IlfHv/sBxE+PVdt+kUjCzqm5k6CAgAARawCAARRtAIAAF66AgAAC9KCAACVzgIAANNaw Date: Fri, 6 Nov 2020 18:27:33 +0000 Message-ID: References: <20201105120331.9853-1-chin-ting_kuo@aspeedtech.com> <20201105120331.9853-5-chin-ting_kuo@aspeedtech.com> <20201105161132.37eb3265@collabora.com> <20201106100539.62fc5249@collabora.com> <20201106123015.3248d478@collabora.com> In-Reply-To: <20201106123015.3248d478@collabora.com> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: collabora.com; dkim=none (message not signed) header.d=none;collabora.com; dmarc=none action=none header.from=aspeedtech.com; x-originating-ip: [211.20.114.70] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6aa3d3b9-e1e5-4481-abdd-08d88281a101 x-ms-traffictypediagnostic: HK2PR0601MB2034: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vuIxP81wSOCDpbtEcgb3MP18pNHOHcIMfntFceRxMbgRKKFREmfdbHuj/uViU2cdSocArR6suYa395HeH3dguIXbA9NAQMz1+zuJTqeG63nwyhppWTYfDRZDQ5/MCpPNHI3/jKu47BQKjPlFoz4r6YY92l8NXbTbe8BAqA7eGKEuzWXKPiHpqE4U7m+rCIL/GpHCJD3ZhATbzCcmJVDH1IjMlSvSzMuoCWBKHtt9Y45TvQHu6QAY/d6c5KKSfB4tNeyQYbqHnSosg26aIjdBFASu+jlxSAuxWsCxaVCxpjQDA8rKjPcSjb9YF3uMHyNBiS097VemkVO/f1+g2id4Qg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HK0PR06MB2786.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(346002)(376002)(39830400003)(136003)(396003)(5660300002)(54906003)(9686003)(7416002)(83380400001)(55016002)(186003)(52536014)(478600001)(6506007)(53546011)(316002)(66574015)(86362001)(55236004)(7696005)(8676002)(8936002)(26005)(33656002)(2906002)(66946007)(76116006)(6916009)(66476007)(66556008)(64756008)(71200400001)(66446008)(4326008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: FZQz8PGSwX0z9AIav02E9rjYHjdC6+pTSgeIdtLaRlDH663GmjMUrT4AkCWYlSK+akoZBjVSS7Hpf57997fTnoM5+jII6omMsmD/6/neZbjzZ0bEg8yHOJG7mmwAF1JNYBc4GOTzE61gf+BI4W/liaeICcZ8R3RJOHS4eUivnJkPvsKg1oWVZdfNzRTlLDP9WypIHS++d/5tKeOIODcIb0dvjQqSmnYxALM2t/bMVYA9KYH2jYUp67Te5y/f8Naf+cNYh9pe22CQN6LWyymG/IZTdPD3UHPBqbAOV/EYHeU7mHn473pxtQTYq9f4qb84zRQPRI8tFPdKTYwB2rNgEt4Hrpg2fHoOBKLsw7pe8q5L2vev56Qhjq5UefBoxfZMW6YcoiWpgeI0A330BepXXwCXi6uiuL1Ca1lZA0eRdoaJH2GTif+0xW6GcE0Ki/k3Wvdsq9jLv33pvJaNBlii44b6kGuq55elrxLuC8wPfTOLzCUFx7Fx6sSz1xIoheI7LARnB4l8VUmPao+vBduCJfbFjYL3J5oXtoyETLyvCUDAKMS8tLDbhVLUl7azpOM3Vg7rdVNOu8vEzGsHozmPxUcmc+A27na7HXQAbkAsDQdZl4oPnlkOnTmtmkUjudGKCsgtzWKggZN4lHZf4+3A4w== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: aspeedtech.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: HK0PR06MB2786.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6aa3d3b9-e1e5-4481-abdd-08d88281a101 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Nov 2020 18:27:33.4329 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: xL8MIHpVIlTizq9Dq1v3SljIeuPcfgbVZYZ/Tr9h85dwjEmJKXeDiqJKQNmcBXUVvEnGzNwtdNqPGeqF8MKE8HMNQfhdICnIrBrU+PYnpqU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK2PR0601MB2034 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgQm9yaXMsDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQm9yaXMg QnJlemlsbG9uIDxib3Jpcy5icmV6aWxsb25AY29sbGFib3JhLmNvbT4NCj4gU2VudDogRnJpZGF5 LCBOb3ZlbWJlciA2LCAyMDIwIDc6MzAgUE0NCj4gVG86IENoaW4tVGluZyBLdW8gPGNoaW4tdGlu Z19rdW9AYXNwZWVkdGVjaC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbdjMgNC80XSBzcGk6IGFzcGVl ZDogQWRkIEFTUEVFRCBGTUMvU1BJIG1lbW9yeSBjb250cm9sbGVyDQo+IGRyaXZlcg0KPiANCj4g K1R1ZG9yIGFuZCBWaWduZXNoDQo+IA0KPiBPbiBGcmksIDYgTm92IDIwMjAgMTA6MjE6MDYgKzAw MDANCj4gQ2hpbi1UaW5nIEt1byA8Y2hpbi10aW5nX2t1b0Bhc3BlZWR0ZWNoLmNvbT4gd3JvdGU6 DQo+IA0KPiA+IEhpIEJvcmlzLA0KPiA+DQo+ID4gVGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzIGFu ZCBzdWdnZXN0aW9ucy4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiA+IEZyb206IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGNvbGxhYm9yYS5jb20+ DQo+ID4gPiBTZW50OiBGcmlkYXksIE5vdmVtYmVyIDYsIDIwMjAgNTowNiBQTQ0KPiA+ID4gVG86 IENoaW4tVGluZyBLdW8gPGNoaW4tdGluZ19rdW9AYXNwZWVkdGVjaC5jb20+DQo+ID4gPiBTdWJq ZWN0OiBSZTogW3YzIDQvNF0gc3BpOiBhc3BlZWQ6IEFkZCBBU1BFRUQgRk1DL1NQSSBtZW1vcnkN Cj4gPiA+IGNvbnRyb2xsZXIgZHJpdmVyDQo+ID4gPg0KPiA+ID4gT24gRnJpLCA2IE5vdiAyMDIw IDA4OjU4OjIzICswMDAwDQo+ID4gPiBDaGluLVRpbmcgS3VvIDxjaGluLXRpbmdfa3VvQGFzcGVl ZHRlY2guY29tPiB3cm90ZToNCj4gPiA+DQo+ID4gPiA+IEhpIEJvcmlzLA0KPiA+ID4gPg0KPiA+ ID4gPiBUaGFua3MgZm9yIHlvdXIgcXVpY2sgcmVwbHkuDQo+ID4gPiA+DQo+ID4gPiA+ID4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiBGcm9tOiBCb3JpcyBCcmV6aWxsb24g PGJvcmlzLmJyZXppbGxvbkBjb2xsYWJvcmEuY29tPg0KPiA+ID4gPiA+IFNlbnQ6IFRodXJzZGF5 LCBOb3ZlbWJlciA1LCAyMDIwIDExOjEyIFBNDQo+ID4gPiA+ID4gVG86IEPDqWRyaWMgTGUgR29h dGVyIDxjbGdAa2FvZC5vcmc+OyByb2JoK2R0QGtlcm5lbC5vcmcNCj4gPiA+ID4gPiBDYzogQ2hp bi1UaW5nIEt1byA8Y2hpbi10aW5nX2t1b0Bhc3BlZWR0ZWNoLmNvbT47DQo+ID4gPiA+ID4gYnJv b25pZUBrZXJuZWwub3JnOyBqb2VsQGptcy5pZC5hdTsgYW5kcmV3QGFqLmlkLmF1Ow0KPiA+ID4g PiA+IGJicmV6aWxsb25Aa2VybmVsLm9yZzsgZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmc7DQo+ ID4gPiA+ID4gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtYXNwZWVkQGxpc3Rz Lm96bGFicy5vcmc7DQo+ID4gPiA+ID4gbGludXgtc3BpQHZnZXIua2VybmVsLm9yZzsgQk1DLVNX IDxCTUMtU1dAYXNwZWVkdGVjaC5jb20+DQo+ID4gPiA+ID4gU3ViamVjdDogUmU6IFt2MyA0LzRd IHNwaTogYXNwZWVkOiBBZGQgQVNQRUVEIEZNQy9TUEkgbWVtb3J5DQo+ID4gPiA+ID4gY29udHJv bGxlciBkcml2ZXINCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEhpLA0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gT24gVGh1LCA1IE5vdiAyMDIwIDE1OjA5OjExICswMTAwIEPDqWRyaWMgTGUgR29hdGVyDQo+ ID4gPiA+ID4gPGNsZ0BrYW9kLm9yZz4gd3JvdGU6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEhl bGxvIENoaW4tVGluZywNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGFua3MgZm9yIHRoaXMg ZHJpdmVyLiBJdCdzIG11Y2ggY2xlYW5lciB0aGFuIHRoZSBwcmV2aW91cw0KPiA+ID4gPiA+ID4g YW5kIHdlIHNob3VsZCB0cnkgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBBU1QyNTAwIFNvQyBhbHNv LiBJDQo+ID4gPiA+ID4gPiBndWVzcyB3ZSBjYW4ga2VlcCB0aGUgb2xkIGRyaXZlciBmb3IgdGhl IEFTVDI0MDAgd2hpY2ggaGFzIGENCj4gZGlmZmVyZW50IHJlZ2lzdGVyIGxheW91dC4NCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiBPbiB0aGUgcGF0Y2hzZXQsIEkgdGhpbmsgd2Ugc2hvdWxkIHNw bGl0IHRoaXMgcGF0Y2ggaW4gdGhyZWUgOg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAtIGJh c2ljIHN1cHBvcnQNCj4gPiA+ID4gPiA+ICAtIEFIQiB3aW5kb3cgY2FsY3VsYXRpb24gZGVwZW5k aW5nIG9uIHRoZSBmbGFzaCBzaXplDQo+ID4gPiA+ID4gPiAgLSByZWFkIHRyYWluaW5nIHN1cHBv cnQNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkgZGlkbid0IGxvb2sgY2xvc2VseSBhdCB0aGUgaW1w bGVtZW50YXRpb24sIGJ1dCBpZiB0aGUgcmVhZA0KPiA+ID4gPiA+IHRyYWluaW5nIHRyaWVzIHRv IHJlYWQgYSBzZWN0aW9uIG9mIHRoZSBOT1IsIEknZCByZWNvbW1lbmQNCj4gPiA+ID4gPiBleHBv c2luZyB0aGF0IGZlYXR1cmUgdGhyb3VnaCBzcGktbWVtIGFuZCBsZXR0aW5nIHRoZSBTUEktTk9S DQo+ID4gPiA+ID4gZnJhbWV3b3JrIHRyaWdnZXIgdGhlIHRyYWluaW5nIGluc3RlYWQgb2YgZG9p bmcgdGhhdCBhdCBkaXJtYXANCj4gPiA+ID4gPiBjcmVhdGlvbiB0aW1lIChyZW1lbWJlciB0aGF0 IHNwaS1tZW0gaXMgYWxzbyB1c2VkIGZvciBTUEkgTkFORHMNCj4gPiA+ID4gPiB3aGljaCB1c2Ug dGhlIGRpcm1hcA0KPiA+ID4gQVBJIHRvbywgYW5kIHRoaXMgdHJhaW5pbmcgaXMgdW5saWtlbHkg dG8gd29yayB0aGVyZSkuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUaGUgU1BJLU5PUiBmcmFtZXdv cmsgY291bGQgcGFzcyBhIHJlYWQgb3AgdGVtcGxhdGUgYW5kIGENCj4gPiA+ID4gPiByZWZlcmVu Y2UgcGF0dGVybiBzdWNoIHRoYXQgYWxsIHRoZSBzcGktbWVtIGRyaXZlciBoYXMgdG8gZG8gaXMN Cj4gPiA+ID4gPiBleGVjdXRlIHRoZSB0ZW1wbGF0ZSBvcCBhbmQgY29tcGFyZSB0aGUgb3V0cHV0 IHRvIHRoZSByZWZlcmVuY2UNCj4gYnVmZmVyLg0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ IEkgYWdyZWUgaXQuIEJlZm9yZSwgSSB3ZXJlIG5vdCBhYmxlIHRvIGZpbmQgYSBzdWl0YWJsZSBs b2NhdGlvbiB0bw0KPiA+ID4gPiBpbXBsZW1lbnQNCj4gPiA+IHJlYWQgdHJhaW5pbmcgZmVhdHVy ZS4NCj4gPiA+ID4gSSB0aGluayB0aGF0IEkgY2FuIGFkZCBhIFNQSSB0aW1pbmcgdHJhaW5pbmcg ZnVuY3Rpb24gaW4NCj4gPiA+ID4gInNwaV9jb250cm9sbGVyX21lbV9vcHMiIHN0cnVjdCBhbmQg Y2FsbCBpdCBieSBhIHdyYXBwZXIgZnVuY3Rpb24NCj4gPiA+ID4gY2FsbGVkIGF0DQo+ID4gPiB0 aGUgYm90dG9tIG9mIHNwaV9ub3JfcHJvYmUoKSBpbiBzcGktbm9yLmMuDQo+ID4gPiA+IE1heWJl LCBTUEktTk9SIGZyYW1ld29yayBkb2VzIG5vdCBuZWVkIHRvIHBhc3MgcmVmZXJlbmNlIGJ1ZmZl cg0KPiA+ID4gPiBzaW5jZSBjYWxpYnJhdGlvbiBtZXRob2QgZGVwZW5kcyBvbiBlYWNoIFNvQyBp dHNlbGYgYW5kIGJ1ZmZlcg0KPiA+ID4gPiBzaXplIG1heSBiZQ0KPiA+ID4gdmFyaWFudC4NCj4g PiA+ID4gVGhlIGRldGFpbCBjYWxpYnJhdGlvbiBtZXRob2QgbWF5IGJlIGltcGxlbWVudGVkIGlu IGVhY2ggU29DIFNQSQ0KPiBkcml2ZXIuDQo+ID4gPg0KPiA+ID4gVGhhdCdzIGEgcmVhbCBwcm9i bGVtIElNTy4gV2hhdCBtYWtlcyB0aGlzIHBhdHRlcm4gU29DIHNwZWNpZmljPyBJDQo+ID4gPiBj YW4gc2VlIHdoeSB0aGUgbG9jYXRpb24gaW4gZmxhc2ggY291bGQgYmUgKmJvYXJkKiBzcGVjaWZp YywgYnV0IHRoZQ0KPiA+ID4gcGF0dGVybiBzaG91bGQgYmUgcHJldHR5IGNvbW1vbiwgcmlnaHQ/ IEFzIGZvciB0aGUgc3BpLW1lbSBvcGVyYXRpb24NCj4gPiA+IHRvIGJlIGV4ZWN1dGVkLCBpdCdz IGRlZmluaXRlbHkgbWVtb3J5IHNwZWNpZmljIChJIGNhbiBpbWFnaW5lIHNvbWUNCj4gPiA+IGZs YXNoIHZlbmRvcnMgcHJvdmlkaW5nIGEgc3BlY2lmaWMgY29tbWFuZCByZXR1cm5pbmcgYSBmaXhl ZCBwYXR0ZXJuDQo+ID4gPiB0aGF0J3Mgbm90IGFjdHVhbGx5IHN0b3JlZCBvbiBhIHZpc2libGUg cG9ydGlvbiBvZiB0aGUgZmxhc2gpLg0KPiA+DQo+ID4gWW91IGFyZSByaWdodCwgdGhlIHBhdHRl cm4gc2hvdWxkIGJlIHByZXR0eSBjb21tb24uIFRoZSB0aGluZyBJIHdhcw0KPiA+IHdvcnJpZWQg YWJvdXQgaXMgdGhlIHNpemUgb2YgdGhhdCBidWZmZXIgc2luY2UsIG1heWJlLCBzb21lDQo+ID4g Y29udHJvbGxlcnMgbmVlZCB0byByZWFkIG1vcmUgZGF0YSB0aGFuIG90aGVycyBpbiBvcmRlciB0 byBnZXQgZ29vZCB0cmFpbmluZw0KPiByZXN1bHQuDQo+IA0KPiBJdCB3b3VsZCBiZSBnb29kIHRv IHNlZSBob3cgb3RoZXIgY29udHJvbGxlcnMgaW1wbGVtZW50IHRoYXQuIEkga25vdyB0aGF0IHRo ZQ0KPiBDYWRlbmNlIGNvbnRyb2xsZXIgaGFkIHNvbWV0aGluZyBzaW1pbGFyLiBWaWduZXNoIG1p Z2h0IGJlIGFibGUgdG8gc2hhcmUgaGlzDQo+IHRob3VnaHRzIG9uIHRoaXMuDQoNCk9oLCBtYXli ZSwgSSBtaXN1bmRlcnN0b29kIHlvdXIgbWVhbmluZyBhbmQgSSBkaWQgbm90IGRlc2NyaWJlIGNs ZWFybHkgZWFybHkuDQpBcyB5b3UgbWVudGlvbmVkIGJlZm9yZSwgZm9yIHNvbWUgU1BJLU5PUiBm bGFzaGVzLCB0aGVyZSBpbmRlZWQgZXhpc3RzIGEgY29tbWFuZCB1c2VkIGZvcg0KcmVhZCB0aW1p bmcgdHJhaW5pbmcgd2l0aCBoaWdoIFNQSSBjbG9jayBmcmVxdWVuY3kuDQpXaGVuIHRoaXMgc3Bl Y2lmaWMgY29tbWFuZCBpcyBzZW50LCBhbiBhbG1vc3QgY29tbW9uIHBhdHRlcm4gd2l0aCBmaXhl ZCBsZW5ndGggd2lsbCBiZSBvdXRwdXR0ZWQgdG8gY29udHJvbGxlci4NCihUaGlzIHBhdHRlcm4g aXMgbm90IHN0b3JlZCBvbiBhIG5vcm1hbCByZWFkL3dyaXRlIGFyZWEuKQ0KDQpCdXQsIHVuZm9y dHVuYXRlbHksIG1hbnkgZmxhc2ggcGFydHMgd2UgdXNlZCBkaWQgbm90IHN1cHBvcnQgdGhpcyBm ZWF0dXJlLiBUaHVzLCBvdXIgcmVhZCB0aW1pbmcgdHJhaW5pbmcgc3RyYXRlZ3kgaXM6DQpTdGVw IDE6IFVzZSB0aGUgbG93ZXN0IFNQSSBjbG9jayBmcmVxdWVuY3kgdG8gcmVhZCBub3JtYWwgZmxh c2ggY29udGVudCB3aXRoIHNwZWNpZmljIGxlbmd0aCBhcyByZWZlcmVuY2UgZGF0YS4NClN0ZXAg MjogV2l0aCBhIGZpeGVkIGhpZ2ggU1BJIGNsb2NrIGZyZXF1ZW5jeSwgYWRqdXN0IGRpZmZlcmVu dCB0aW1pbmcgZGVsYXkgY3ljbGUsIHRoZW4sIHJlYWQgdGhlIHNhbWUgZmxhc2ggcmVnaW9uIGZv ciBlYWNoIHRpbWluZyBkZWxheS4NClN0ZXAgMzogQ29tcGFyZSBlYWNoIGRhdGEgcmVhZCBmcm9t IHN0ZXAgMiB0byB0aGUgcmVmZXJlbmNlIGRhdGEgZ290dGVuIGZyb20gc3RlcCAxLiBUaGVuLCB3 ZSB3aWxsIGdldCBhIHN1aXRhYmxlIHRpbWluZyBkZWxheSB3aW5kb3cuDQoNCj4gDQo+ID4NCj4g PiA+ID4NCj4gPiA+ID4gQmVzaWRlcywgSSBhbSB0aGlua2luZyBhYm91dCB0aGUgcG9zc2liaWxp dHkgZm9yIGFkZGluZyBhDQo+ID4gPiA+ICJzcGlfbWVtX3Bvc3RfaW5pdCIgZnVuY3Rpb24gaW4g c3BpLW1lbSBmcmFtZXdvcmsgc2luZSBmb3Igc29tZQ0KPiA+ID4gPiBTb0NzLCBTUEkgY29udHJv bGxlciBuZWVkcyB0byBhZGp1c3Qgc29tZSBzZXR0aW5ncyBhZnRlciBnZXR0aW5nDQo+ID4gPiA+ IFNQSSBmbGFzaA0KPiA+ID4gaW5mb3JtYXRpb24uDQo+ID4gPg0KPiA+ID4gSSBkb24ndCB0aGlu ayB0aGF0J3MgYSBnb29kIGlkZWEuIFRoZSBzcGktbWVtIGludGVyZmFjZSBzaG91bGQgc3RheQ0K PiA+ID4gbWVtb3J5LXR5cGUgYWdub3N0aWMgYW5kIGRvaW5nIHRoYXQgbWVhbnMgd2Ugc29tZWhv dyBwYXNzIE5PUg0KPiA+ID4gc3BlY2lmaWMgaW5mby4gV2hhdCBpcyBpdCB0aGF0IHlvdSBuZWVk IGV4YWN0bHksIGFuZCB3aHk/DQo+ID4NCj4gPiBZZXMsIGFzIHlvdSBtZW50aW9uLCB0aGUgc3Bp LW1lbSBpbnRlcmZhY2Ugc2hvdWxkIHN0YXkgbWVtb3J5LXR5cGUNCj4gYWdub3N0aWMuIFRodXMs IGN1cnJlbnRseSwgSSBqdXN0IHRoaW5rIGFib3V0IHRoaXMsIG5vdCBpbXBsZW1lbnRhdGlvbi4N Cj4gPg0KPiA+IFdoeSBkaWQgSSBuZWVkIHRoaXMgZXhhY3RseT8NCj4gPiBUYWtlIEFTUEVFRCBT UEkgY29udHJvbGxlciBmb3IgZXhhbXBsZSwgQVNQRUVEIFNQSSBjb250cm9sbGVyIGlzIGRlc2ln bmVkDQo+IGZvciBTUEkgTk9SIGZsYXNoIGVzcGVjaWFsbHkuDQo+ID4gV2hlbiBBU1BFRUQgU29D IHBvd2VycyBvbiBvciByZXNldCwgTUNVIFJPTSB3aWxsIGZldGNoIFNQSSBOT1IgZmxhc2gNCj4g dGhyb3VnaCBTUEkgY29udHJvbGxlci4NCj4gPiBCdXQsIE1DVSBST00gZG9lcyBub3Qga25vdyB0 aGUgY3VycmVudCBhZGRyZXNzIG1vZGUgb2YgU1BJIE5PUiBmbGFzaA0KPiB3aGVuIFNvQyB3YXMg cmVzZXQgKFNQSSBmbGFzaCBpcyBub3QgcmVzZXQpLg0KPiA+IFRoZXJlZm9yZSwgU1BJIGZsYXNo IGRyaXZlciBuZWVkcyB0byBzZXQgcmVsYXRlZCBmbGFnIHRvIG5vdGlmeSBNQ1UgUk9NIHdoZW4N Cj4gZmxhc2ggaXMgc2V0IHRvIDRCIGFkZHJlc3MgbW9kZSBhbmQgNEIgcmVhZCBvcGNvZGUgaXMg dXNlZC4NCj4gDQo+IE9oLCB0aGF0J3MgdWdseSEgVGhlIFNQSSBOT1IgZnJhbWV3b3JrIHRyaWVz IGhhcmQgdG8gbm90IGNoYW5nZSB0aGUNCj4gYWRkcmVzc2luZyBtb2RlIGV4YWN0bHkgZm9yIHRo aXMgcmVhc29uLiBPbiBtb3N0IE5PUnMgdGhlcmUgc2hvdWxkIG5vdyBiZQ0KPiBSRUFEL1dSSVRF IHZhcmlhbnRzIGFsbG93aW5nIHlvdSB0byBhZGRyZXNzIG1vcmUgdGhhbiAyXjI0IGJ5dGVzIHdp dGhvdXQNCj4gY2hhbmdpbmcgdGhlIGFkZHJlc3NpbmcgbW9kZS4gVGhpcyBiZWluZyBzYWlkLCB0 aG9zZSBwcm9ibGVtIGV4aXN0cyBvbiBvdGhlcg0KPiBwbGF0Zm9ybSB3aGljaCBjYW4ndCBldmVu IGxldCB0aGUgYm9vdCBST00ga25vdyB0aGF0IGFkZHJlc3NpbmcgbW9kZQ0KPiBjaGFuZ2VkLiBJ IGRvbid0IGhhdmUgYSBwcm9wZXIgc29sdXRpb24gZm9yIHlvdXIgdXNlIGNhc2UsIGJ1dCBJIGRl ZmluaXRlbHkgZG9uJ3QNCj4gbGlrZSB0aGUgaWRlYSBvZiBleHBvc2luZyBzdWNoIGRldGFpbHMg dG8gc3BpLW1lbSBjb250cm9sbGVycy4uLg0KPiANCg0KQ2VydGFpbmx5LCBtb3N0IG9mIG5ldyBT UEkgTk9SIGZsYXNoZXMgbGFyZ2VyIHRoYW4gMTZNQiBzdXBwb3J0IGRlZGljYXRlZA0KNEIgY29t bWFuZCB3aXRob3V0IGNoYW5nZSBmbGFzaCBhZGRyZXNzIG1vZGUuIE9yaWdpbmFsbHksIEkgd2Fu dCB0byB0YWtlDQphbGwgZmxhc2hlcyBpbnRvIGNvbnNpZGVyYXRpb24uIEJ1dCwgbm93LCB0aGUg bnVtYmVyIG9mIGZsYXNoZXMsIGxhcmdlciB0aGFuIDE2TUIgYW5kDQp3aXRob3V0IDRCIGRlZGlj YXRlZCBjb21tYW5kLCBkZWNyZWFzZXMuIFBlcmhhcHMsIEkgY2FuIGlnbm9yZSB0aGVtIGN1cnJl bnRseS4NCg0KPiBXZSB1c3VhbGx5IHJlY29tbWVuZCB0byBjb25uZWN0IHRoZSBOT1IgcmVzZXQg cGluIHRvIHRoZSBnbG9iYWwgcmVzZXQgdG8NCj4gYWRkcmVzc2luZyBtb2RlIGdldHMgYmFjayB0 byBrbm93biBzdGF0ZSB3aGVuIHlvdSByZWJvb3QgdGhlIGJvYXJkIGFuZA0KPiBuZWVkIHRvIGdv IGJhY2sgdG8gdGhlIGJvb3QgUk9NLg0KDQpJIGFncmVlIHdpdGggdGhpcy4NCg0KPiANCj4gPg0K PiA+IEJlc2lkZXMsIGZvciBvdGhlciBTb0NzIGNvbm5lY3RlZCB0byBBU1BFRUQgU29DLCB0aGV5 IGNhbiByZWFkL3dyaXRlIFNQSQ0KPiBOT1IgZmxhc2ggY29ubmVjdGVkIHRvIEFTUEVFRCBTb0Mg YnkgYSBwdXJlIEhXIGNoYW5uZWwgd2l0aG91dCBhbnkNCj4gaW50ZXJhY3Rpb24gb2YgU1cgZHJp dmVyLg0KPiA+IEJ1dCwgYmVmb3JlIHRyaWdnZXIgdGhpcyBmZWF0dXJlLCBmbGFzaCByZWFkL3dy aXRlL2VyYXNlIG9wY29kZSwgZHVtbXkNCj4gPiBjeWNsZSBhbmQgb3RoZXIgaW5mb3JtYXRpb24g c2hvdWxkIGJlIGZpbGxlZCBpbiB0aGUgcmVsYXRlZCByZWdpc3RlcnMgaW4NCj4gYWR2YW5jZSBi ZWNhdXNlIHRoYXQgSFcgY2hhbm5lbCBkb2VzIG5vdCBrbm93IGFjY3VyYXRlIGluZm9ybWF0aW9u IGFib3V0DQo+IGNvbm5lY3RlZCBTUEkgTk9SIGZsYXNoLg0KPiANCj4gV2hpbGUgSSBjYW4gc2Vl IGEgdmFsaWQgcmVhc29uIHRvIGFsbG93IHRoYXQgZm9yIFJFQURzIChpZiB3ZSBkZWNpZGUgdG8g c3VwcG9ydA0KPiBYSVApLCBJIHJlYWxseSBkb24ndCBsaWtlIHRoZSBpZGVhIG9mIGFsbG93aW5n IGRlc3RydWN0aXZlIG9wZXJhdGlvbnMNCj4gKFdSSVRFL0VSQVNFKSBvbiB0aGUgZmxhc2ggdGhh dCBkb24ndCBnbyB0aHJvdWdoIHRoZSBNVEQgbGF5ZXIuIFRoaXMgc291bmRzDQo+IGxpa2Ugcmlz a3kgYnVzaW5lc3MgdG8gbWUsIHNvIEknZCBqdXN0IGZvcmdldCBhYm91dCB0aGF0IGlmIEkgd2Vy ZSB5b3UuIFJlZ2FyZGluZw0KPiB0aGUgWElQIHVzZSBjYXNlLCB3aHkgbm90LCBidXQgd2UnbGwg bmVlZCB0byBleHRlbmQgdGhlIGRpcm1hcCBBUEkgdG8gc3VwcG9ydCBpdDoNCj4gbWFwcGluZ3Mg bmVlZCB0byBzdGF5IGFyb3VuZCBhbmQgeW91IG5lZWQgdG8gcmV0dXJuIGEgcG9pbnRlciB0byB0 aGUgbWFwcGVkDQo+IG1lbW9yeSByZWdpb24sIHdoaWNoIHdlIGRvbid0IGFsbG93IHJpZ2h0IG5v dyAoYmVjYXVzZSB3ZSB3YW50IHRvIGxldA0KPiBjb250cm9sbGVycyBtb3ZlIHRoZWlyIGRpcm1h cCB3aW5kb3cgaWYgdGhleSBoYXZlIHRvKS4NCg0KWWVzLCBmb3IgU1BJKC1mbGFzaCkgZHJpdmVy LCBJIHRoaW5rIEkganVzdCBuZWVkcyB0byBmb2N1cyBvbiB0aGUgc2NlbmFyaW8gd2hlcmUgYWxs IGZsYXNoIG9wZXJhdGlvbnMgZ28gdGhyb3VnaCBNVEQgbGF5ZXIuDQpPdGhlciBhcHBsaWNhdGlv biBtYXkgYmUgaW1wbGVtZW50ZWQgb24gdGhlIG90aGVyIGRyaXZlciwgbm90IGhlcmUuDQoNCg0K QmVzdCBXaXNoZXMsDQpDaGluLVRpbmcNCg0KDQo=