Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp869276pxf; Wed, 7 Apr 2021 13:45:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw7h/qDsskg71JXOk90eJPN1pOuBbPYRDKXfjDpfLjLGvo9DLuXiLCmGPpR0uWM7KMXwINL X-Received: by 2002:a50:fe8c:: with SMTP id d12mr4638366edt.336.1617828305072; Wed, 07 Apr 2021 13:45:05 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1617828305; cv=pass; d=google.com; s=arc-20160816; b=dlgeoP0Bb22v9jiyjp3l1azpZsGWpaZiSvRvBTvCL2xdiKWwHDwLIJIkdWYCgMSsIr AvvjcZ0S6ZZ0VsRwTII6dKJnj9aQ9/7vfMmXj2XRJ/DY8oINvEF5tL8edjzzJ61SMbQQ K1GKCobk3movDT5ADkfspoQ5KqukoWnNDOrp6GsNdrRzb9da1fwAvpb8kOqNPdh3bgsr kA5g7Kk3HHrmaOyVJFOBeCwSzuwbgXBFSV/E7NzmuFSJ1XIJnudRQEHVCZ8HGBWD5pcT Agd9b1oGjuyLMNXCE+9tknBYkbukdpfw99jhYmB3IrckfNJIZVJahZNNt/E6xppjZ5T2 e5dA== 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-id:user-agent:content-language:accept-language:reply-to :in-reply-to:references:message-id:date:thread-index:thread-topic :subject:cc:to:from:dkim-signature; bh=dguz76hFmLmXlIgL92UOIx3/29PY66E+nCacjGzW5YI=; b=rzN7FG8aS0ZBAtgQsDs8sOcqqyY/cAyy10hzMlRCdNacEJ842v3j9EybEI2RRBxW8x hI+QrButnxTmVmzCoEE7XxulQfHaEPItY1eA/a+LmfhMxYXyznsK1WD8KwZRVFIhYY94 3iuiGqUe8v4Ua480T+t67DFkjnVUazqpIGD30ijyPklq8h9kIoNxRHHaT9g8irPysyo4 OuEhhvHoNh8NbWXRw2qaL42ot5iUSmr3UlqY15P52pO+z2rVTCDG2/yfgFlUmq8eQ3qX fgkYciToYUbHhzW6cP7C29jZBQ57xGptSrF/eW5nK2cOHn2DwYCn7am5xUe7YkJNx2MZ vFKg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@rohmsemiconductoreurope.onmicrosoft.com header.s=selector1-rohmsemiconductoreurope-onmicrosoft-com header.b=dz3y8xmQ; arc=pass (i=1 spf=pass spfdomain=fi.rohmeurope.com dkim=pass dkdomain=fi.rohmeurope.com dmarc=pass fromdomain=fi.rohmeurope.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 gb25si21430094ejc.472.2021.04.07.13.44.41; Wed, 07 Apr 2021 13:45:05 -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=@rohmsemiconductoreurope.onmicrosoft.com header.s=selector1-rohmsemiconductoreurope-onmicrosoft-com header.b=dz3y8xmQ; arc=pass (i=1 spf=pass spfdomain=fi.rohmeurope.com dkim=pass dkdomain=fi.rohmeurope.com dmarc=pass fromdomain=fi.rohmeurope.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 S236912AbhDGJuJ (ORCPT + 99 others); Wed, 7 Apr 2021 05:50:09 -0400 Received: from mail-eopbgr60064.outbound.protection.outlook.com ([40.107.6.64]:2278 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S234025AbhDGJuH (ORCPT ); Wed, 7 Apr 2021 05:50:07 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l+FVny34nk7sVOHlI+UpUH3tHitCwfzdvCxfvIHD6Ol4VnH28VsFDAqkJnZseTyYmShpqG5R+ozPfR2nR+k72MuQ+2Qer3KedakIuRupprp/ns08TX2nwoCO/vPBON8uLlBfExzMR5n0ECsCRICMbf87nUtBvxBx1cqjD2KfT4qqWUwlvz3uB1X15G4Z4Bj0Xs6nPDksHO213FOOwZQqJByLygi320571BhzUvXQ6XX0BPpgL4ap5s/3LLgs3XoSqRQTQdClJxsbHPRNYQcthzFTG2OUxjKPU09G+HMeQr5Qzpala/ypBuTIVl8o/06Xtz7GXOZVm0eD7ouM2fwf0Q== 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=dguz76hFmLmXlIgL92UOIx3/29PY66E+nCacjGzW5YI=; b=dL9N10AHt1/CoPRsUiBi2ulvaXMvRXCQnTfTWeqHvdeDMuJ0MqekEv9GzjS0IjtNspzZxspu0v/MRon1sTgRfwlUcJRh7J2S5AP6Yq6o1mCc3W+tlx+wpfmS/Cm05tinsMRA7Y1BahKsBmpq420rHFgbKII+v4qUeLbU3h1+ci83dUH0jB1XIguVt57vX4fiLM9a/pHZCl3eX5rRbDGa3yfKjer/GGi92Z9UoSGx4uR+lq3hcnscFG5oTpqBV64hikOy91eDFw7jBLVC446g9fmxfI/0fb3ngZmhIuzbgrszREjzFVwLKsIvqZN0V9pe0AyTqUnBBDh9hcYaRlCWAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fi.rohmeurope.com; dmarc=pass action=none header.from=fi.rohmeurope.com; dkim=pass header.d=fi.rohmeurope.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rohmsemiconductoreurope.onmicrosoft.com; s=selector1-rohmsemiconductoreurope-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dguz76hFmLmXlIgL92UOIx3/29PY66E+nCacjGzW5YI=; b=dz3y8xmQbFUTl1DRoNZysAOeZvIulxHWy582k+x9/Wr49JhXiiP7tuHbvcbJgGIIpBHGi+vZMruh4YJ4VoqClBHZ1AiG8dbPpYbA6ODEkqihtpqHVrEuC7z76POpcQjGkqyqGYHX26y3TBUHz7sCiHnqEveMw1sJyAL42XllfAY= Received: from HE1PR03MB3162.eurprd03.prod.outlook.com (2603:10a6:7:55::20) by HE1PR03MB2891.eurprd03.prod.outlook.com (2603:10a6:7:62::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.32; Wed, 7 Apr 2021 09:49:45 +0000 Received: from HE1PR03MB3162.eurprd03.prod.outlook.com ([fe80::f4d0:ee66:d5fb:9cdd]) by HE1PR03MB3162.eurprd03.prod.outlook.com ([fe80::f4d0:ee66:d5fb:9cdd%3]) with mapi id 15.20.3999.033; Wed, 7 Apr 2021 09:49:45 +0000 From: "Vaittinen, Matti" To: "andy.shevchenko@gmail.com" CC: "agross@kernel.org" , "broonie@kernel.org" , "devicetree@vger.kernel.org" , linux-power , "linux-kernel@vger.kernel.org" , "linux-renesas-soc@vger.kernel.org" , "linux-arm-msm@vger.kernel.org" , "bjorn.andersson@linaro.org" , "lgirdwood@gmail.com" , "robh+dt@kernel.org" Subject: Re: [PATCH v4 3/7] regulator: IRQ based event/error notification helpers Thread-Topic: [PATCH v4 3/7] regulator: IRQ based event/error notification helpers Thread-Index: AQHXKrRUz5e/K6qNQUGVKWIQIRdIZKqoF3GAgACvA7WAAArQAA== Date: Wed, 7 Apr 2021 09:49:45 +0000 Message-ID: <42210c909c55f7672e4a4a9bfd34553a6f4c8146.camel@fi.rohmeurope.com> References: <2b87b4637fde2225006cc122bc855efca0dcd7f1.1617692184.git.matti.vaittinen@fi.rohmeurope.com> <55397166b1c4107efc2a013635f63af142d9b187.camel@fi.rohmeurope.com> In-Reply-To: Reply-To: "Vaittinen, Matti" Accept-Language: fi-FI, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.34.4 (3.34.4-1.fc31) authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=fi.rohmeurope.com; x-originating-ip: [2001:14ba:16e2:8300::6] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: dd58409b-3899-47ab-5ae6-08d8f9aa79c5 x-ms-traffictypediagnostic: HE1PR03MB2891: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gljkpRvzAj7TPeXFIXBEFjJqgwdObitHQVXPsYTm6Kkrlo4FGV4fMBEEUeSjtsCZzAA34S800Bl/C1X/mObwWa37SRtDoHZjSeRN2Oi4qYzkEN6eUQXZSXGDjhHswZK0VtVwvWl+lcLX4isX+bv2lJ7CLE6siJZV+ltMJy3OQg3qTcX9rVhRjFOnrGYXAy3CRMyDAB9pDACp2QZszPOMx8qEBZtFSbCudvPbj2Etv2vHTrpbPR7oRWuUFpW2W6QtqTdtpEAkmAblsOqHwwf5JD/TfC337zk6ajbQavJzxrQTDkSQEf954MYIjSZ1AHDxlMXt+uBYJtNenrj98cyzqM4QOX6WUXXyomFcLxsrs/JxT9J7fB9n+JZqwqpdNb/uaaF0c9GY5+pJmTNQB+8/+NfBZnql0ClVA4lP5/CL2JaJcA1XYZtbl/Vp+lIbhW2N4YO8NZIuj1wPIRAMGB6yYRaHmMKdu5CDLrFiZ86+RP1rAdZHccEaSuaI32GHu0oGHSozbRaM7p13LYjPSJed5UJQ/o9FHncfBSnPbS7at1MyiR8Bq42Rpze1WqTtAzLVcg/xIpKLAt5yH1+Pn9NB3Ju4q1byBaJi2TYEEmNIUlwn2D9qYFXZ70iMjI1SfJOO+8GA4V04Q4QZ7p3QdXt3FRWV5aXmKimyI+KV6NbEoN/ZY4+tRFl1z9rST+J8OzYq x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR03MB3162.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(346002)(366004)(396003)(39850400004)(376002)(66946007)(86362001)(64756008)(76116006)(4326008)(6506007)(53546011)(66476007)(66556008)(83380400001)(6486002)(2906002)(66446008)(5660300002)(7416002)(8676002)(54906003)(71200400001)(6916009)(2616005)(186003)(8936002)(478600001)(15650500001)(3450700001)(316002)(6512007)(38100700001)(341764005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?am5Db2dLdE5kRGlaUHdRcFp3WElLS0tHWG5TMHBQOEozUElHVm5yeEJNaFBw?= =?utf-8?B?blpjWDlwNkUzM3NjTktGa1Ewa1hDczNINDlBU0RRWDBpajFQZ0p6RVh1VTJx?= =?utf-8?B?bUpVZG9wbG1OTmNucmwwOGVMZkhjWGQ1aWp1VHl2anlBeGtiUm0xRE5veWRO?= =?utf-8?B?R2RsVXU3Si9IZHNHOTEwRWxVd3JZTmdxYUduOE9RK0NxNWtuVWFMOTRZMzdQ?= =?utf-8?B?aVE1Um4xSkd0ZDc4dC9JeEM4MS9wZjIybXNMemhHQU5QVS9ZRTlIZHVLb1Uy?= =?utf-8?B?b2J0bS9QWHdaSXdsZGZrUlRrK0xVQ3U3U0hIa3p3RDAvRk40dzJTa2FpQmJO?= =?utf-8?B?a1Ayd1grcXJaeDZyT3A3cmpTYWFxMlJqSXZwM29Wa29HZ0RmV2xCYStNZU5D?= =?utf-8?B?UHRUL2dkYUpXTWxwSHBJYTF2b1h2b3hZaiszcjIvSW1mck5oUmFhQUtiRUVR?= =?utf-8?B?K3pkODFBdDNoYWZhaW5sOXg5WFZPYmxRWlU0T2g1M3R3dC9EL01UYTcwUkhD?= =?utf-8?B?ZUNjZHY4djlVQnZJcmJLdlFuNWhGREpWQWI4cnNaclpsVjk0UGNTTWlmZm5h?= =?utf-8?B?YThpZXRLQXo5eXB5U1ZLMDY1cnpBR0EzWUJPMWdXVmdjWEpnQnd6dXhKem0y?= =?utf-8?B?MjI4SVVPWUhtcXVkRjA2R1RoK3RGSFAxNmtKSTFiZHVFQ2gzak5QV3Q2OEw0?= =?utf-8?B?M1dqRGJsOVMzeFJsVlo0cjQvL0ZRWEUwM3pqOU1PNUxjUkErV0pCN2IzK0I5?= =?utf-8?B?SitZeS9mMEc2b3BoZWh3azRaMVB2SDZTTTNCbklQOW42WEc4QlI4RkJMelY3?= =?utf-8?B?NlJ5M3IwbTZDOVVzQ0d2bGFiLzJ0eW5ENmRxRzN6OC9pR0pRMVQ3amF3T1dD?= =?utf-8?B?Zkl4Mkc1Yk5CVmhoT25XV1QyUnYvRXEyd05rNzhKOU8zUDhQUVdobUhzWXZx?= =?utf-8?B?ZVZvYU1kMFNiazc4NEEwRFBaYXpzNlJyUUZPOW9EK0k4OFdTYnVpL2JacWRS?= =?utf-8?B?OHkydFpjTWFRN0xra1J4cnVjUFdlV3I3WnZzUmY2ajU0Yzdkd3duOUN6aHQx?= =?utf-8?B?R29jVElIdURqVnBNdWFGV2RPZ1dIbUhGdXN3dW5VbVRkai9wZUp1WVZ3SFQ0?= =?utf-8?B?U00wNmYvdHkzOGV6TElWNjI0N3RURVBubzRKbDJLaWNVTUNyakd1VmQzYnpq?= =?utf-8?B?WEMzZTEyV0NFdEQ2ajA5VzFrd1F0dExmL1NkRklpUSs1UHYzc3VmN29kR2U3?= =?utf-8?B?OTBSYm1udzJlSDFGMXNBUDJhV3NxaUd3akJTRDBQMzd3NjNJUTFvaXVCMm1t?= =?utf-8?B?Q3pZSVpXQ0F4RTl2WHlUbW9LZ1B3a2tBdVJENVg4elovYjhqSTE5dSs3TlZ5?= =?utf-8?B?MDMzSjdGNi9sMUFwODlWL2Y5bU5JeGVmUUdKZW9NbTlyeE1QT0plcmVZVE5R?= =?utf-8?B?T3pNejJIaElMUGJ6bVpxdmprNVhFRW8zRVhIR0FrRFpXLzNZZStURmZ3RDU1?= =?utf-8?B?dWhvZk1WZnFDejlRVnlSZ3kzeUZ3MVhySUl5aFZCQUNpcUdiMlNYYzlYaTB6?= =?utf-8?B?NUkvcXVDdUdLN3FPamxqL2YvcW5iTFdWMVhTVkN0MmNteGNVNDR6S3YzWnhW?= =?utf-8?B?bWhyY3l6SU5VZWlmVWJpelJ0WWx6VnlmVU90MEptVnE0NXZWbUFmdHhoUUxI?= =?utf-8?B?Wk9hd2l3UTUzTGJ3MVN5U0QrTEtaRUhLNHJ3U1UrcXRGak5HazdHSkYwQW1j?= =?utf-8?B?cmNER0luTzNYK2lkSFpZU1BpNEhXTHYyc2NrSWFsL3NTMWFLUDBnVWtrSlc3?= =?utf-8?Q?vyn5I0sZLCj/ef9Ndn+660LYphmqD1IKqYUgE=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: fi.rohmeurope.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: HE1PR03MB3162.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dd58409b-3899-47ab-5ae6-08d8f9aa79c5 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Apr 2021 09:49:45.3549 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 94f2c475-a538-4112-b5dd-63f17273d67a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fsauN3OL1pH2kFsKw7CPNcqRCAFqjF2MvAqNrNbx/Z6YLMmSf0RB09BgLcIIyXwO1+7JxRsggK+orRaXgEFljnvddrNDQHtXRY0G753NoSZJDn4b7jBs/Q/M5gw2GEAA X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR03MB2891 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGVsbG8gQW5keSwNCg0KT24gV2VkLCAyMDIxLTA0LTA3IGF0IDEyOjEwICswMzAwLCBBbmR5IFNo ZXZjaGVua28gd3JvdGU6DQo+IE9uIFdlZCwgQXByIDcsIDIwMjEgYXQgODowMiBBTSBNYXR0aSBW YWl0dGluZW4NCj4gPG1hdHRpLnZhaXR0aW5lbkBmaS5yb2htZXVyb3BlLmNvbT4gd3JvdGU6DQo+ ID4gT24gV2VkLCAyMDIxLTA0LTA3IGF0IDAxOjQ0ICswMzAwLCBBbmR5IFNoZXZjaGVua28gd3Jv dGU6DQo+ID4gPiBPbiBUdWVzZGF5LCBBcHJpbCA2LCAyMDIxLCBNYXR0aSBWYWl0dGluZW4gPA0K PiA+ID4gbWF0dGkudmFpdHRpbmVuQGZpLnJvaG1ldXJvcGUuY29tPiB3cm90ZToNCj4gDQo+IC4u Lg0KPiANCj4gPiA+ID4gKyAgICAgICBwcl9lbWVyZyhtc2cpOw0KPiA+ID4gDQo+ID4gPiBPaCBs w6AgbMOgLCBiZXNpZGVzIGJ1aWxkIGJvdCBjb21wbGFpbnRzLCB0aGlzIGhhcyBzZXJpb3VzIHNl Y3VyaXR5DQo+ID4gPiBpbXBsaWNhdGlvbnMuIE5ldmVyIGRvIGxpa2UgdGhpcy4NCj4gPiANCj4g PiBJJ20gbm90IGV2ZW4gdHJ5aW5nIHRvIGNsYWltIHRoYXQgd2FzIGNvcnJlY3QuIEFuZCBJIGRp ZCBzZW5kIGENCj4gPiBmaXh1cCAtDQo+ID4gc29ycnkgZm9yIHRoaXMuIEkgZG9uJ3QgaW50ZW5k IHRvIGRvIHRoaXMgYWdhaW4uDQo+ID4gDQo+ID4gTm93LCB3aGVuIHRoaXMgaXMgc2FpZCAtIElm IHlvdSBoYXZlIGEgbWludXRlLCBwbGVhc2UgZWR1Y2F0ZSBtZS4NCj4gPiBBc3N1bWluZyB3ZSBr bm93IGFsbCB0aGUgY2FsbGVycyBhbmQgdGhhdCBhbGwgdGhlIGNhbGxlcnMgdXNlIHRoaXMNCj4g PiBhcw0KPiA+IA0KPiA+IGRpZV9sb3VkbHkoImZvb2JhcmZvb1xuIik7DQo+ID4gLSB3aGF0IGlz IHRoZSBleHBsb2l0IG1lY2hhbmlzbT8NCj4gDQo+IE5vdCBhIHNlY3VyaXR5IGd1eSwgYnV0IG15 IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIGNvZGUgbWF5IGJlDQo+IHVzZWQNCj4gYXMgYSBn YWRnZXQgaW4gUk9QIHRlY2huaXF1ZSBvZiBhdHRhY2tzLg0KDQpUaGFua3MgQW5keS4gSXQnZCBi ZSBpbnRlcmVzdGluZyB0byBsZWFybiBtb3JlIGRldGFpbHMgYXMgSSBhbSBub3QgYQ0Kc2VjdXJp dHkgZXhwZXJ0IGVpdGhlciA6KQ0KDQo+IEluIHRoYXQgY2FzZSBtc2cgY2FuIGJlIGFueXRoaW5n LiBPbiB0b3Agb2YgdGhhdCwgc29tZWJvZHkgbWF5DQo+IG1pc3Rha2VubHkgKGluYWR2ZXJ0ZW50 bHkpIHB1dCB0aGUgY29kZSB0aGF0IGFsbG93cyB1c2VyIGNvbnRyb2xsZXINCj4gaW5wdXQgdG8g Z28gdG8gdGhpcyBwYXRoLg0KDQpZZXMuIFRoaXMgaXMgYSBnb29kIHJlYXNvbiB0byBub3QgdG8g ZG8gdGhpcyAtIGJ1dCBJIHdhcyBpbnRlcmVzdGVkIGluDQprbm93aW5nIGlmIHRoZXJlIGlzIGEg cG90ZW50aWFsIHJpc2sgZXZlbiBpZjoNCg0KPiA+IGFsbCB0aGUgY2FsbGVycyB1c2UgdGhpcw0K PiA+IGFzDQo+ID4gDQo+ID4gZGllX2xvdWRseSgiZm9vYmFyZm9vXG4iKTsNCg0KDQo+IEFuZCBs YXN0IGJ1dCBub3QgbGVhc3QsIHRoYXQgc29tZSBuZXdiaWVzIG1pZ2h0IGNvcHknbidwYXN0ZSBi YWQNCj4gZXhhbXBsZXMgd2hlcmUgdGhleSB3aWxsIGV4cG9zZSBzZWN1cml0eSBicmVhY2guDQoN ClllcyB5ZXMuIEFzIEkgc2FpZCwgSSBhbSBub3QgdHJ5aW5nIHRvIHNheSBpdCBpcyBPay4gSSB3 YXMganVzdA0Kd29uZGVyaW5nIHdoYXQgYXJlIHRoZSByaXNrcyBpZiB1c2VycyBvZiB0aGUgcHJp bnQgZnVuY3Rpb24gd2VyZSBrbm93bi4NCg0KPiBXaXRoIHRoZSBtb2Rlcm4gd29ybGQgb2YgU3Bl Y3RyZSwgcm93aGFtbWVyLCBhbmQgb3RoZXIgc2lkZSBjaGFubmVsDQo+IGF0dGFja3MgSSBtYXkg YmVsaWV2ZSB0aGF0IG9uZSBtYXkgZXhoYXVzdCB0aGUgcmVndWxhdG9yIGZvciBnZXR0aW5nDQo+ IGFkdmFudGFnZSBvbiBhbiBhdHRhY2sgdmVjdG9yLg0KPiANCj4gQnV0IGFnYWluLCBub3QgYSBz ZWN1cml0eSBndXkgaGVyZS4NCg0KVGhhbmtzIGFueXdheXMgOikNCg0KPiANCj4gPiA+ID4gKyAg ICAgICBCVUcoKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiANCj4gLi4uDQo+IA0KPiA+ID4g PiBlcnJvcnMgd2lsbCBiZQ0KPiA+ID4gPiArICogICAgICAgICAgICAgICAgICAgICBvcidlZCB3 aXRoIGNvbW1vbiBlcnJvcy4gSWYgdGhpcyBpcw0KPiA+ID4gPiBnaXZlbg0KPiANCj4gZXJyb3Jz ID8NCg0KVGhhbmtzLiBJIGRpZG4ndCBmaXJzdCBzcG90IHRoZSB0eXBvIGV2ZW4gdGhvdWdoIHlv dSBwb2ludGVkIGl0IHRvIG1lLg0KTHVja2lseSBteSBldm9sdXRpb24gaGFzIG9jY2FzaW9uYWwg cHJvYmxlbXMgd2hlbiBjb21tdW5pY2F0aW5nIHdpdGgNCnRoZSBtYWlsIHNlcnZlci4gSSBoYWQg ZW5vdWdoIHRpbWUgdG8gaGl0IHRoZSBjYW5jZWwgYmVmb3JlIHNlbmRpbmcgb3V0DQphIG1lc3Nh Z2Ugd2hlcmUgSSB3b25kZXJlZCBob3cgSSBzaG91bGQgY2xhcmlmeSB0aGlzIDpdDQoNCj4gLi4u DQo+IA0KPiA+ID4gPiArICAgICAgIGlmIChpcnEgPD0gMCkgew0KPiA+ID4gPiArICAgICAgICAg ICAgICAgZGV2X2VycihkZXYsICJObyBJUlFcbiIpOw0KPiA+ID4gPiArICAgICAgICAgICAgICAg cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7DQo+ID4gPiANCj4gPiA+IFdoeSBzaGFkb3dpbmcgZXJy b3IgY29kZT8gTmVnYXRpdmUgSVJRIGlzIGFueXRoaW5nIGJ1dCDigJxubyBJUlHigJ0uDQo+ID4g DQo+ID4gVGhpcyB3YXMgYSBnb29kIHBvaW50LiBUaGUgaXJxIGlzIHBhc3NlZCBoZXJlIGFzIHBh cmFtZXRlci4gRnJvbQ0KPiA+IHRoaXMNCj4gPiBmdW5jdGlvbidzIHBlcnNwZWN0aXZlIHRoZSBu ZWdhdGl2ZSBpcnEgaXMgaW52YWxpZCBwYXJhbWV0ZXIgLSB3ZQ0KPiA+IGRvbid0DQo+ID4ga25v dyBob3cgdGhlIGNhbGxlciBoYXMgb2J0YWluZWQgaXQuIFByaW50IGNvdWxkIHNob3cgdGhlIHZh bHVlDQo+ID4gY29udGFpbmVkIGluIGlycSB0aG91Z2guDQo+ID4gTm93IHRoYXQgeW91IHBvaW50 ZWQgdGhpcyBvdXQgSSBhbSB1bnN1cmUgaWYgdGhpcyBjaGVjayBpcyBuZWVkZWQNCj4gPiBoZXJl Lg0KPiA+IElmIHdlIGNoZWNrIGl0LCB0aGVuIEkgc3RpbGwgdGhpbmsgd2Ugc2hvdWxkIHJlcG9y dCAtRUlOVkFMIGZvcg0KPiA+IGludmFsaWQNCj4gPiBwYXJhbWV0ZXIuIE90aGVyIG9wdGlvbiBp cyB0byBqdXN0IGNhbGwgdGhlIHJlcXVlc3RfdGhyZWFkZWRfaXJxKCkNCj4gPiAtDQo+ID4gbG9n IHRoZSBJUlEgcmVxdWVzdCBmYWlsdXJlIGFuZCByZXR1cm4gd2hhdCByZXF1ZXN0X3RocmVhZGVk X2lycSgpDQo+ID4gcmV0dXJucy4gRG8geW91IHRoaW5rIHRoYXQgd291bGQgbWFrZSBzZW5zZT8N Cj4gDQo+IFdoeSBpcyB0aGUgcGFyYW1ldGVyIHNpZ25lZCB0eXBlIHRoZW4/DQo+IFNob3VsZG4n dCB0aGUgY2FsbGVyIHRha2UgY2FyZSBvZiBpdD8NCj4gDQo+IE90aGVyd2lzZSwgd2hhdCBpcyB0 aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBhc3NpbmcgbmVnYXRpdmUgSVJRIHRvDQo+IHJlcXVlc3Rf aXJxKCkgY2FsbD8NCj4gQXMgeW91IHNhaWQsIHlvdSBzaG91bGRuJ3QgbWFrZSBhc3N1bXB0aW9u cyBhYm91dCB3aGF0IGNhbGxlciBtZWFudA0KPiBieSB0aGlzLg0KPiANCj4gU28sIEkgd291bGQg c2ltcGx5IGRyb3AgdGhlIGNoZWNrIChmcm9tIGVhc2luZXNzIG9mIHRoZSBjb2RlDQo+IHBlcnNw ZWN0aXZlKS4NCg0KWWVwLiBJIHdhcyBnb2luZyB0byBkcm9wIHRoZSBjaGVjay4gR29vZCBwb2lu dC4gVGhhbmtzLg0KSSdsbCBzZW5kIHY2IHNob3J0bHkgdG8gYWRkcmVzcyB0aGUgaXNzdWVzIHlv dSBzcG90dGVkIEFuZHkuIFRoYW5rcy4NCg0KPiANCj4gLi4uDQo+IA0KPiA+ID4gPiArdm9pZCBy ZWd1bGF0b3JfaXJxX2hlbHBlcl9jYW5jZWwodm9pZCAqKmhhbmRsZSkNCj4gPiA+ID4gK3sNCj4g PiA+ID4gKyAgICAgICBpZiAoaGFuZGxlICYmICpoYW5kbGUpIHsNCj4gPiA+IA0KPiA+ID4gQ2Fu IGhhbmRsZSBldmVyIGJlIE5VTEwgaGVyZSA/IChZZXMsIEkgdW5kZXJzdGFuZCB0aGF0IHlvdSBl eHBvcnQNCj4gPiA+IHRoaXMpDQo+ID4gDQo+ID4gVG8gdGVsbCB0aGUgdHJ1dGggLSBJIGFtIG5v dCBzdXJlLiBJICpndWVzcyogdGhhdCBpZiB3ZSBhbGxvdyB0aGlzDQo+ID4gdG8NCj4gPiBiZSBO VUxMLCB0aGVuIG9uZSAqY291bGQqIGltcGxlbWVudCBhIGRyaXZlciBmb3IgSUMgd2hlcmUgSVJR cyBhcmUNCj4gPiBvcHRpb25hbCwgaW4gYSB3YXkgdGhhdCB3aGVuIElSUXMgYXJlIHN1cHBvcnRl ZCB0aGUgcG9pbnRlciB0bw0KPiA+IGhhbmRsZQ0KPiA+IGlzIHZhbGlkLCB3aGVuIElSUXMgYXJl bid0IHN1cHBvcnRlZCB0aGUgcG9pbnRlciBpcyBOVUxMLiAoV2h5KSBkbw0KPiA+IHlvdQ0KPiA+ IHRoaW5rIHdlIHNob3VsZCBza2lwIHRoZSBjaGVjaz8NCj4gDQo+IEp1c3QgbXkgZ3V0cyBmZWVs aW5nLiBJIGRvbid0IHJlbWVtYmVyIHRoYXQgSSBldmVyIHNhdyBjaGVja3MgbGlrZQ0KPiB0aGlz IGZvciBpbmRpcmVjdCBwb2ludGVycy4NCj4gT2YgY291cnNlIGl0IGRvZXNuJ3QgbWVhbiB0aGVy ZSBhcmUgbm8gc3VjaCBjaGVja3MgcHJlc2VudCBvciBtYXkgYmUNCj4gcHJlc2VudC4NCg0KSSB0 aGluayBJJ2xsIGtlZXAgdGhlIGNoZWNrIHVubGVzcyB0aGVyZSBpcyBzb21lIHJlYXNvbiB3aHkg aXQgc2hvdWxkDQpiZSBvbWl0dGVkLg0KDQo+ID4gPiBXaHkgbm90IHRvIHVzZSBkZXZtX2FkZF9h Y3Rpb257X29yX3Jlc2V0fSgpPw0KPiA+IA0KPiA+IEkganVzdCBmb2xsb3dlZCB0aGUgc2FtZSBh cHByb2FjaCB0aGF0IGhhcyBiZWVuIHVzZWQgaW4gb3RoZXINCj4gPiByZWd1bGF0b3INCj4gPiBm dW5jdGlvbnMuIChkcml2ZXJzL3JlZ3VsYXRvci9kZXZyZXMuYykNCj4gPiBPVE9ILCB0aGUgZGV2 bV9hZGRfYWN0aW9uIG1ha2VzIHRoaXMgbGl0dGxlIGJpdCBzaW1wbGVyIHNvIEknbGwNCj4gPiBj b252ZXJ0DQo+ID4gdG8gdXNlIGl0Lg0KPiA+IA0KPiA+IE1hcmssIGRvIHlvdSBoYXZlIGEgcmVh c29uIG9mIG5vdCB1c2luZyBkZXZtX2FkZF9hY3Rpb24oKSBpbg0KPiA+IGRldnJlcy5jPw0KPiA+ IFNob3VsZCBkZXZtX2FkZF9hY3Rpb24oKSBiZSB1c2VkIGluIHNvbWUgb3RoZXIgZnVuY3Rpb25z IHRoZXJlPyBBbmQNCj4gPiBzaG91bGQgdGhpcyBiZSBtb3ZlZCB0byBkZXZyZXMuYz8NCj4gDQo+ IEkgdGhpbmsgdGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBhcyBzaW1wbGUgYXMgYSBoaXN0b3JpY2Fs IG9uZSwgaS5lLg0KPiB0aGVyZSB3YXMgbm8gc3VjaCBBUEkgdGhhdCB0aW1lLg0KDQpSaWdodC4g VGhpcyBpcyBwcm9iYWJseSB0aGUgcmVhc29uIHdoeSB0aGV5IHdlcmUgd3JpdHRlbiBhcyB0aGV5 IGFyZS4gSQ0Kd2FzIGp1c3Qgd29uZGVyaW5nIGlmIE1hcmsgaGFkIGEgcmVhc29uIHRvIGtlZXAg dGhlbSB0aGF0IHdheSAtIG9yIGlmDQpoZSB3b3VsZCBhcHByZWNpYXRlIGl0IGlmIG9uZSBjb252 ZXJ0ZWQgdGhlbSB0byB1c2UgdGhlDQpkZXZtX2FkZF9hY3Rpb24oKSBmYW1pbHkgb2YgZnVuY3Rp b25zLg0KDQpCZXN0IFJlZ2FyZHMNCiAgTWF0dGkuDQoNCg0K