Received: by 2002:a25:ca44:0:0:0:0:0 with SMTP id a65csp454061ybg; Tue, 28 Jul 2020 10:03:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz6/2amEhi/BiFUXIYEw+2hktFHALCVqnvUXCD2GiFo8BxCDS3TgjXQZ7i92Di0ICpc2pM2 X-Received: by 2002:a17:906:d158:: with SMTP id br24mr20924061ejb.420.1595955799267; Tue, 28 Jul 2020 10:03:19 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1595955799; cv=pass; d=google.com; s=arc-20160816; b=mdD+5y2zCpgxnIvFWFJwgmsUXg11NFExVZA1TAyr7RNDNZsNJgvY4XcIdnGQqoTooe dZPqyswfDABZwAUDc823mMaXZwrQq4Ef4OYyB+389owGg7zrOXa+zTsfiXL7XAXQy5jH ntrR8H6ESAU5aEEeKs9GTyK0CG/17Z2U5Qc1423rJhM+Z9RYfP8H3hFnzZrS4JWurFd+ T7Pfs1VyAzeLERzlJj1Pw9PkHgg8s2PqIo5H2bytSXF40t+f/shJNE1tK+OAGc2IRhlQ +YJWuSK4CgiRVHq0Wrd8nHKhBBHo4J0QYfY/upPdou5srHD4lFjviyasXM+EBvnb3Fxf 2X/w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :dlp-reaction:dlp-product:dlp-version:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature:ironport-sdr :ironport-sdr; bh=yik4VYqm2a4y+pV+4ARfFYLiRLg1vmXKMlBrtEGiXrc=; b=TPQSz8bC31RJHyU8sUwUoxe68lYqaHw+JElMRQdZV7XxKcdPX2nkZiBZm4gNyPlfCS mAGVO9wAfFLKrDzJVK/TKPnvuDYjUMCJtsKkHa8iwo4+Evi78QVbpJaZblSZ9zWD5HgK /z1Xy+zrnIR4/0cQ3i3bar7+52cDSSeElT9l8/8Qsrd3Usl4RLR2HDZxCuJNy7KkZtNb qOZrolRqJD6/1IhpTdhRB2gF8xH0xTKGkwt5zCEs3utRn2xdD4xuo/hkbpsDKx8MGirh L1CA5aXvGHh/arCkWDFkQr1M9FE6XoG8Aug5toyByAYocqU28wr/eP0dMEObShWFbp9v L7ew== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=Sd2ukVlp; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l10si7608759ejh.673.2020.07.28.10.02.53; Tue, 28 Jul 2020 10:03:19 -0700 (PDT) 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; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=Sd2ukVlp; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731617AbgG1RCi (ORCPT + 99 others); Tue, 28 Jul 2020 13:02:38 -0400 Received: from mga09.intel.com ([134.134.136.24]:37677 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731478AbgG1RCh (ORCPT ); Tue, 28 Jul 2020 13:02:37 -0400 IronPort-SDR: PoFmO8iXzRyEwQUqoAR+hfoF1bhS+j1ONOUGCS1N3+/vIWGSorZz8rENeV+fefZHHXWOGQ1XWc IUfEVtiAzJlA== X-IronPort-AV: E=McAfee;i="6000,8403,9696"; a="152510223" X-IronPort-AV: E=Sophos;i="5.75,406,1589266800"; d="scan'208";a="152510223" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jul 2020 10:02:30 -0700 IronPort-SDR: JJP9zFG8KOEEgwi8HnzP4/UBBAsH/GXHbqMt0YaEj1jD7y0Rh2MZ0flQi/b85/DhmfGLpcTTop tm5WXeoR/udg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,406,1589266800"; d="scan'208";a="489967816" Received: from orsmsx110.amr.corp.intel.com ([10.22.240.8]) by fmsmga006.fm.intel.com with ESMTP; 28 Jul 2020 10:02:29 -0700 Received: from orsmsx111.amr.corp.intel.com (10.22.240.12) by ORSMSX110.amr.corp.intel.com (10.22.240.8) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 28 Jul 2020 10:02:29 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by ORSMSX111.amr.corp.intel.com (10.22.240.12) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 28 Jul 2020 10:02:29 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.101) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 28 Jul 2020 10:02:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NryF/5bjO6hSADFXE1HrrD1LYE8LEOKlxxaBjpoRTY2bJSmI6tFcw2Dg0Hz0YIrTUvX/Y/wrfx5AsfdP5GdadxU06S2CsaKPvIS1saPtNewIhOIWsIQ8TL+DHQpGhnuyK9xk3Ku5Ks5A3zDlqvg3rNs4yXjTpEB5mWKZ7cqgC1PjbwYTXjJ/aTmmDdwCwmUv9E3pg2SnHq4MHRgj1+ZflYsuo0QZGendcCS5lDvSKRO7tCQ0lxvSsubM4uoAn9bBfCI0vohRm9ZeqsyFep1DDgc+zWUSxgvjmA72MplA+vO5ozUC06EH+UhKe4+kjhOd7Mtz5JD5ydFPQiR7XgE1hA== 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=yik4VYqm2a4y+pV+4ARfFYLiRLg1vmXKMlBrtEGiXrc=; b=k3yjtgKFXQM17kaXC7UmzrXZPQWVN+ubm3rOmLFXvNM43J2jXD+QgCxMVxEHYni/p2l2qq3a2JdJxhHRCpEcrC+v79I2SBsUzRLP8IakOp6zMR6ubZ5RXXZn80ZRYS7qnUtZTkdGFEJTOalByX8C3r0EoDIeC/9bDkdLKvfgRrb1LQXEC+irN3Lc+3IpPFohh2xx8UCMtaRUBciupVyGOz+QrGdKbXMuovh27zegYqtZrT27M9xvTbsGU0jYRn6MsQR47pvsydBGLqVwiMjGoIS7ZLQL+X/q7AWr1CXngbkU9nBidCNUXIGjizycGg6eTM/48bUGgi+wOrkwIH1pWg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yik4VYqm2a4y+pV+4ARfFYLiRLg1vmXKMlBrtEGiXrc=; b=Sd2ukVlpBSHnpRb8JSN72SrfmHMD1RsuR4AUxxKb+0djHMEfF9eaWaQqJC9u1MAVtMn16DljdC1PlHKAwzlHaaN/2NA3+4f19/eyd4YFEUIeUqZGyrwsHDvqbkfbyg60qmAoYdytM++C6GzP6V7Gxx7GlmMrAUAaziMg/bopck4= Received: from DM6PR11MB3642.namprd11.prod.outlook.com (2603:10b6:5:138::26) by DM6PR11MB3785.namprd11.prod.outlook.com (2603:10b6:5:13f::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.16; Tue, 28 Jul 2020 17:02:23 +0000 Received: from DM6PR11MB3642.namprd11.prod.outlook.com ([fe80::f043:4bdc:ef57:1b41]) by DM6PR11MB3642.namprd11.prod.outlook.com ([fe80::f043:4bdc:ef57:1b41%5]) with mapi id 15.20.3239.016; Tue, 28 Jul 2020 17:02:23 +0000 From: "Lu, Brent" To: Pierre-Louis Bossart , "alsa-devel@alsa-project.org" CC: "Rojewski, Cezary" , "linux-kernel@vger.kernel.org" , Jie Yang , Takashi Iwai , Liam Girdwood , Mark Brown Subject: RE: [PATCH] ASoC: Intel: Atom: use hardware counter to update hw_ptr Thread-Topic: [PATCH] ASoC: Intel: Atom: use hardware counter to update hw_ptr Thread-Index: AQHWY2e1AMm9opfdpkGft589vBQJfqkbeEuAgAC7fpCAALRXgIAASocg Date: Tue, 28 Jul 2020 17:02:23 +0000 Message-ID: References: <1595779727-31404-1-git-send-email-brent.lu@intel.com> <7dec7fcd-0381-d279-4dac-77c27ea5f6fe@linux.intel.com> <14fde5e9-a11a-077d-b533-1e6db4b7a262@linux.intel.com> In-Reply-To: <14fde5e9-a11a-077d-b533-1e6db4b7a262@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: linux.intel.com; dkim=none (message not signed) header.d=none;linux.intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [114.25.81.97] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fba68e34-a48d-4b1e-7664-08d83317ff4e x-ms-traffictypediagnostic: DM6PR11MB3785: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5D+4uaZ5MZPnQJ27yg0yUtEX7hG7+4qL1IGnT+30VY+8bXJ5Xub+thtfDVtLRZwwjNogHmHhg+B09BeQfWB3oZqKPXR+yqVKMHBvLhO2lTpQW790v1OY3z38ZSoJhJAKgetRiznMH01ZO/7USd3q4Pd6ER0Rys7bXOCfDYP0bs8WdWz5JUZHOJkYPXu0PZaViQOuZl2yjI0CF1Lr7XK6KeaRsdTqZv1N2qAk89qTSO4m2jhKUd1OouUSl9/9+MfXUa4CDCNcfqWjpOPQ7Qvf9GOppJj9pWNjFFYY+2GdrFCSClSrwTmbExwgwmQiFxv4uJJT8lIaMhknCEaP5tgyJg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB3642.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(346002)(396003)(136003)(39860400002)(376002)(366004)(64756008)(4326008)(86362001)(2906002)(9686003)(71200400001)(8936002)(55016002)(478600001)(52536014)(66446008)(66556008)(54906003)(316002)(6506007)(76116006)(186003)(15650500001)(8676002)(26005)(5660300002)(83380400001)(110136005)(33656002)(66476007)(66946007)(7696005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: BqaHHsyoiQk6lw11s9mWXTtCcVumKlmw+XoPa/yiF+wirbtsU9PvtVoIHm4jZdIcfqa+N/GS8Y5D+0zAJJlvgyvM3cBpTDqOtH8ZoHEPnOg2/v0HORbqki1fyC0VkWK+bu0t1muHF8mT5zfivJVWhSKNR82pFhwxVpq9qkfcMjlMTEfqmKhtfyQil7Fnh3Q0iwQ01/TIY/0MIsitGv/sqZl9HXhVTBuoFJr/Zc+ZfkCNmRO0Xb9Vz+CoGQB0E8WCwMNZy680oHpqCRRB5ZUIA3pWSHj8/+hAezeDRHk1HMC02QfMHj7b/9XJMIwOLmAvmKfKcIAxBAWs8BNI1IFDSnmiBBxTqN9io14GJJ6TvQeTH+E5TtA5wiA/NLWT2Kc6G+nWjIFkkkLdD08LZ9TeEI35N9DlOxE2u+W61LDvKHXqQVtujCp67bVf9PhiKgEIrQQpT2Wp4o0n81FQ/TgN0so5kjzGvZSILwcnllJj00/p55fmFKt8dKGS3Xcchla5iMQRuXS8rPfEDFle+iv1XIy3zp+dOFzcqbdQxGWQf/8nYnKLMP2AJOBfVWz9Kbrn4Gp0f52h3TGxz96ZqJqJltOnR+P3n2qe15/Qsbj8TqpbQM1cMLy5Gr8hoqJJaYZN0RCfFtyaimpoW3N1Ua2P7A== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB3642.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fba68e34-a48d-4b1e-7664-08d83317ff4e X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jul 2020 17:02:23.2682 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Xhe3gtj+zVx67KSXuxC4k5/IM7JAr3uWutB/FZgy+KsgLjk8K5zkHAI56xzqXpkNx+nWlnCLkksumZmylRL7Yw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3785 X-OriginatorOrg: intel.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiANCj4gU28gaWYgdGhlcmUgYXJlIGFscmVhZHkgcXVpcmtzIGluIGF0b20gbWFjaGluZSBkcml2 ZXJzIHRvIGNoYW5nZSB0aGUgcGVyaW9kDQo+IHNpemUsIHdoeSBpcyB0aGlzIHBhdGNoIG5lY2Vz c2FyeT8NCj4gDQoNClRoZSBzdG9yeSBpczogZ29vZ2xlIGltcGxlbWVudGVkIHRoZSBjb25zdHJh aW50IGJ1dCBkb2Vzbid0IGtub3cgd2h5IGl0IHdvcmtzDQpzbyBhc2tlZCB1cyB0byBleHBsYWlu LiBBZnRlciBjaGVja2luZyB0aGUgdHdvIGNvdW50ZXJzIEkgcmVhbGl6ZWQgdGhlIGluY3JlYXNl IG9mDQpyaW5nIGJ1ZmZlciBwb2ludGVyIGZvbGxvd3MgdGhlIHBlcmlvZCBzaXplIHNldHRpbmcg aW4gaHdfcGFyYW0gKDI1NikgYnV0IHRoZQ0KcGVyaW9kIG9mIGludGVycnVwdCBpcyBhbHdheXMg NW1zIGluc3RlYWQgb2YgNS4zMyBzbyBpdCdzIHJ1bm5pbmcgbGl0dGxlIGJpdCB0b28gZmFzdC4N Ckl0IHNlZW1zIHRoZSBMUEUga2VlcHMgdHJhY2tpbmcgdGhlIGRpZmZlcmVuY2Ugb2YgdHdvIGNv dW50ZXJzLiBXaGVuIHRoZQ0KZGlmZmVyZW5jZSBleGNlZWRzIDIxNjAgc2FtcGxlcywgdGhlIG5l eHQgaW50ZXJydXB0IHdpbGwgYmUgY2FuY2VsZWQgc28gdGhlDQpoYXJkd2FyZSBjb3VudGVyIGNv dWxkIGNhdGNoIHVwIGEgbGl0dGxlLg0KDQpbICAgNDMuMjA4Mjk5XSBpbnRlbF9zc3RfYWNwaSA4 MDg2MjJBODowMDogbXJmbGQgcmluZ19idWZmZXJfY291bnRlciAxMDc1MjAgaGFyZHdhcmVfY291 bnRlciA5ODg4MCBwY20gZGVsYXkgODY0MCAoaW4gYnl0ZXMpDQpbICAgNDMuMjA4MzA2XSBpbnRl bF9zc3RfYWNwaSA4MDg2MjJBODowMDogYnVmZmVyIHB0ciAyNjg4MCBwY21fZGVsYXkgcmVwOiAy MTYwDQpbICAgNDMuMjA4MzIxXSBzb3VuZCBwY21DMUQwcDogW1FdIHBvcyAyNjg4MCBod19wdHIg MjY4ODAgYXBwbF9wdHIgNDAwMDAgYXZhaWwgMTkxNjgwDQo9PiBvbmUgaW50ZXJydXB0IGlzIHNr aXBwZWQuDQpbICAgNDMuMjE4Mjk5XSBpbnRlbF9zc3RfYWNwaSA4MDg2MjJBODowMDogbXJmbGQg cmluZ19idWZmZXJfY291bnRlciAxMDg1NDQgaGFyZHdhcmVfY291bnRlciAxMDA4MDAgcGNtIGRl bGF5IDc3NDQgKGluIGJ5dGVzKQ0KWyAgIDQzLjIxODMwN10gaW50ZWxfc3N0X2FjcGkgODA4NjIy QTg6MDA6IGJ1ZmZlciBwdHIgMjcxMzYgcGNtX2RlbGF5IHJlcDogMTkzNg0KWyAgIDQzLjIxODMz Nl0gc291bmQgcGNtQzFEMHA6IFtRXSBwb3MgMjcxMzYgaHdfcHRyIDI3MTM2IGFwcGxfcHRyIDQw MDAwIGF2YWlsIDE5MTkzNg0KDQpTbyBJIHRoaW5rIHdoeSBub3QgdXNpbmcgdGhlIGhhcmR3YXJl IGNvdW50ZXI/IEl0IGluY3JlYXNlcyAyNDAgc2FtcGxlcyBldmVyeSA1bXMNCnBlcmZlY3RseSBt YXRjaCB0aGUgNDgwMDAgc2FtcGxlIHJhdGUuIFRoZSB0ZXN0IHJlc3VsdCBpcyBnb29kIGJ1dCBJ IGtub3cgdGhlcmUgbXVzdA0KYmUgYSByZWFzb24gZm9yIHRoZSBvcmlnaW5hbCBkZXNpZ25lciB0 byB1c2UgcmluZyBidWZmZXIgY291bnRlciBpbnN0ZWFkIG9mIGhhcmR3YXJlDQpjb3VudGVyLiBJ IHVwbG9hZGVkIHRoaXMgcGF0Y2ggdG8gc2VlIGlmIGFueW9uZSBzdGlsbCByZW1lbWJlciB0aGUg cmVhc29uIGFuZCBzaGFyZQ0Kc29tZSBpbnNpZ2h0IHdpdGggbWUuDQoNCkkgdG90YWxseSBhZ3Jl ZSB0aGF0IHdlIHNob3VsZG4ndCB0b3VjaCB0aGlzIHBhcnQgb2YgZGVzaWduLiBEbyB5b3UgdGhp bmsgaXQgbWFrZSBzZW5zZQ0KdG8gYWRkIGEgY29uc3RyYWludCB0byBlbmZvcmNlIHRoZSBwZXJp b2Qgc2l6ZSBpbiBtYWNoaW5lIGRyaXZlcj8gSWYgeWVzIHRoZW4gSSB3b3VsZA0KdXBsb2FkIHBh dGNoZXMgZm9yIENocm9tZSBhdG9tIG1hY2hpbmVzIGZvciBnb29nbGUuDQoNCg0KUmVnYXJkcywN CkJyZW50DQoNCj4gPiBJJ20gY3VyaW91cyB3aHkgbm90IGp1c3QgdXNpbmcgaGFyZHdhcmUgY291 bnRlciB0byB1cGRhdGUgaHdfcHRyIGFuZA0KPiA+IGdldCByaWQgb2YgdGhlIHBlcmlvZCBzZXR0 aW5nIGluIGh3X3BhcmFtPyBJdCBzZWVtcyB0byBtZSB0aGUgcmluZw0KPiA+IGJ1ZmZlciBjb3Vu dGVyIGRvZXMgbm90IHJlZmxlY3QgdGhlIHJlYWwgc3RhdHVzLg0KPiANCj4gSSBkb24ndCByZWNh bGwgcHJlY2lzZWx5IHdoYXQgdGhpcyBoYXJkd2FyZSBjb3VudGVyIGRvZXMuIEkgdmFndWVseSBy ZWNhbGwgaXQncw0KPiB0aWVkIHRvIHRoZSAxOS4yTUh6IGV4dGVybmFsIHRpbWVyIHdoaWNoIGlz IGFsc28gdXNlZCB0byBzY2hlZHVsZSB0aGUgMW1zDQo+IFNCQSBtaXhlciBhbmQgdGhlIFNTUCBJ T3MuIEFuZCBieSBjb21wYXJpbmcgd2l0aCB0aGUgcmluZyBidWZmZXIgcG9pbnRlcg0KPiB5b3Ug Y2FuIGluZmVyIHRoZSBkZWxheSBpbnNpZGUgdGhlIERTUC4gSSB0aGluayB5b3UgYXJlIGFsc28g bWFraW5nIGFuDQo+IGFzc3VtcHRpb24gdGhhdCBhbGwgc3RyZWFtcyBhcmUgdGllZCB0byB0aGUg b3V0cHV0IHJhdGUsIGJ1dCB0aGF0J3MgbW9zdCBsaWtlbHkNCj4gYSBiYWQgYXNzdW1wdGlvbi4g VGhlIGhhcmQtY29kZWQgdG9wb2xvZ3kgc3VwcG9ydGVkIG1lZGlhLCBzcGVlY2ggYW5kDQo+IGNv bXByZXNzZWQgZGF0YSBhbmQgdGhlIGNvbnN1bXB0aW9uIHJhdGUgb24gdGhlIERNQSBzaWRlIGNv dWxkIGJlIGZhc3Rlcg0KPiB3aXRoIHNvbWUgYnVmZmVyaW5nIGhhcHBlbmluZyBpbiB0aGUgRFNQ Lg0KPiBJdCdzIG5vdCBhIHBhc3N0aHJvdWdoIERNQSBpbiBhbGwgY2FzZXMuDQo+IA0KPiBUaGlz IGlzIHJlYWxseSBsZWdhY3kgY29kZSB0aGF0IG5vIG9uZSByZWFsbHkgZnVsbHkgdW5kZXJzdGFu ZHMgbm9yIHBsYW5zIG9uDQo+IGltcHJvdmluZywgaXQnZCBiZSBhIGJhZCBpZGVhIHRvIGNoYW5n ZSB0aGUgcGNtIHBvaW50ZXIgcmVwb3J0cyBub3csIDYgeWVhcnMNCj4gYWZ0ZXIgdGhlIGluaXRp YWwgY29kZSByZWxlYXNlIGFuZCBhZnRlciBhbGwgaW5pdGlhbCBjb250cmlidXRvcnMgbW92ZWQg b24uIEl0J3MNCj4gd2hhdCBpdCBpcy4NCj4gDQoNCg==