Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp850056pxa; Wed, 19 Aug 2020 17:14:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxMV56DeRWP366UO/ejPMx5R32inhKre/WQgkIEPOwAPcGO2WvpW0teyVPnuJ7S1EKMS4HN X-Received: by 2002:a17:906:33d1:: with SMTP id w17mr895521eja.68.1597882480820; Wed, 19 Aug 2020 17:14:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597882480; cv=none; d=google.com; s=arc-20160816; b=Lxm1m3uh4zVA+KoStRskG/8wZyfKLbdenm8i6ZB2FShkCjZRlOOA+jNP1IHt54xx/1 IkT85pE7n+Mef2Kg76/Me0McvHVqCUuByCtTB46Ja7RFheGDZ2bojJB0gGbBQ0Aawd1F 1msA9LY4NN/GaxFUEwtCz2v61n+NXtMMDmjx0kPsRmUfNU3xUd6n6G6XQ+Exg9FtDw+Y A4JKrOsay/2b7PUI2RAapvhyIf8e25w6oJB62jpZVuBXEMioqw7HTVQTzEuuqk85DLnr w3AeBoX4L2x8eIuxJr2F9JjHgY1ThnFq5D9/aavtCh9ZwQ8Nt0Bj+/uL02v+oGuhxe5l K8zA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=pHuwCrLe1sBhm51cikXT2DxdNdb9NoGJcRejdWLGfL4=; b=quFiF96zM7UKBVsESGq+Nubt7Bfvz+L2Ubl040lYTayENUTcLY7RzuIeFpqn3Srp3a bWkzm1CItiphAmat2MPy3HHSZ/ki5VTv04OLl5K107k7wFOX/5rE/5s1pHGKzdOPcGqm m6ALoJ0qdWZqASwvDZK6q+b8Xj4LpEPsMys2SsDdPI8EX17yIY/eclI/cAiZSS08sVZ5 JapTnx1emqhRxNU6uuPNzoThdWXqTBtAOHmj1CR1faXqk8iATMNO9+LnBwwyjMEDCm1A qvKjc4FLArPxOWRYWvLKk4X+S0XZ+lGXqta6jESXtA6ZFvSG4HptSgar9NMTSpKklLh1 r5QQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tencent.com header.s=s202002 header.b=h0DD8RBq; 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=pass (p=NONE sp=NONE dis=NONE) header.from=tencent.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id do15si186157ejc.571.2020.08.19.17.14.16; Wed, 19 Aug 2020 17:14:40 -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=@tencent.com header.s=s202002 header.b=h0DD8RBq; 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=pass (p=NONE sp=NONE dis=NONE) header.from=tencent.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727820AbgHTANu (ORCPT + 99 others); Wed, 19 Aug 2020 20:13:50 -0400 Received: from mail6.tencent.com ([220.249.245.26]:55002 "EHLO mail6.tencent.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728756AbgHTANq (ORCPT ); Wed, 19 Aug 2020 20:13:46 -0400 Received: from EX-SZ018.tencent.com (unknown [10.28.6.39]) by mail6.tencent.com (Postfix) with ESMTP id F2274CC0E4; Thu, 20 Aug 2020 08:14:57 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tencent.com; s=s202002; t=1597882498; bh=pHuwCrLe1sBhm51cikXT2DxdNdb9NoGJcRejdWLGfL4=; h=From:To:CC:Subject:Date:References:In-Reply-To; b=h0DD8RBq+1TFM3zr20/mzenLOQIBXiPdGN+VvXJVk+/G4GTneql6Da26FzrsM3MaE K7XRcDVgTdQZjAxrlvABS4uNTMfbF5m1VqqkVzuZv9vN9zlNvqfUYJ9eFmDwhQOClv ak0Cp3tLkURMLUxlFPninBMGbd2fsf/tUi6evbo4= Received: from EX-SZ008.tencent.com (10.28.6.32) by EX-SZ018.tencent.com (10.28.6.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1847.3; Thu, 20 Aug 2020 08:13:42 +0800 Received: from EX-SZ012.tencent.com (10.28.6.36) by EX-SZ008.tencent.com (10.28.6.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1847.3; Thu, 20 Aug 2020 08:13:41 +0800 Received: from EX-SZ012.tencent.com ([fe80::f57b:8971:e6d4:fe6b]) by EX-SZ012.tencent.com ([fe80::f57b:8971:e6d4:fe6b%3]) with mapi id 15.01.1847.007; Thu, 20 Aug 2020 08:13:41 +0800 From: =?utf-8?B?YmVuYmppYW5nKOiSi+W9qik=?= To: Vincent Guittot CC: Dietmar Eggemann , Jiang Biao , "mingo@redhat.com" , "peterz@infradead.org" , "juri.lelli@redhat.com" , "rostedt@goodmis.org" , "bsegall@google.com" , "mgorman@suse.de" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH] sched/fair: reduce preemption with IDLE tasks runable(Internet mail) Thread-Topic: [PATCH] sched/fair: reduce preemption with IDLE tasks runable(Internet mail) Thread-Index: AQHWZ6wckGsZD+WUv0OJdOJkfcOxRKklh1uAgAA1DACABNlRgIAAJ90AgAYgFwCAAL04gIAA/wuAgAC/bYCAAQDpAIAB6mEAgAVOvgCAADR0AIADDqgAgAAFTwCAAA4SAIAAKm2AgAAH5ICAAJvdgA== Date: Thu, 20 Aug 2020 00:13:41 +0000 Message-ID: <3A85DD77-2A4B-466F-A1F4-1BF2AF02CF58@tencent.com> References: <20200801023248.90104-1-benbjiang@gmail.com> <5ed0fd46-3a3d-3c1a-5d75-03a74864e640@arm.com> <592F24A7-BF43-457D-AC40-DC5E35279730@tencent.com> <8bef1f94-f9bf-08a5-2ff3-3485d7796a96@arm.com> <8629CB9F-AFC8-43D6-BD14-B60A0B85ADB3@tencent.com> <5f870781-1648-b4ac-6026-557dfc347109@arm.com> <4964e359-afc5-a256-4950-853a9485eeff@arm.com> <70236E62-AA36-48C1-9382-86353649253C@tencent.com> <3a1047fc-a86a-014a-b17a-eae71f669da1@arm.com> <643B0ECE-D758-4D08-8B1B-C70F34DD9943@tencent.com> <55f04582-69d6-aeb4-85be-3e46a3b15beb@arm.com> <755BFAD0-9072-4D73-9CD7-AF4F74A79D21@tencent.com> <729675a2-b083-4211-62c0-f7ed7f483ae2@arm.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [9.19.161.78] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4gT24gQXVnIDE5LCAyMDIwLCBhdCAxMDo1NSBQTSwgVmluY2VudCBHdWl0dG90IDx2aW5j ZW50Lmd1aXR0b3RAbGluYXJvLm9yZz4gd3JvdGU6DQo+IA0KPiBPbiBXZWQsIDE5IEF1ZyAyMDIw IGF0IDE2OjI3LCBiZW5iamlhbmco6JKL5b2qKSA8YmVuYmppYW5nQHRlbmNlbnQuY29tPiB3cm90 ZToNCj4+IA0KPj4gDQo+PiANCj4+PiBPbiBBdWcgMTksIDIwMjAsIGF0IDc6NTUgUE0sIERpZXRt YXIgRWdnZW1hbm4gPGRpZXRtYXIuZWdnZW1hbm5AYXJtLmNvbT4gd3JvdGU6DQo+Pj4gDQo+Pj4g T24gMTkvMDgvMjAyMCAxMzowNSwgVmluY2VudCBHdWl0dG90IHdyb3RlOg0KPj4+PiBPbiBXZWQs IDE5IEF1ZyAyMDIwIGF0IDEyOjQ2LCBEaWV0bWFyIEVnZ2VtYW5uIDxkaWV0bWFyLmVnZ2VtYW5u QGFybS5jb20+IHdyb3RlOg0KPj4+Pj4gDQo+Pj4+PiBPbiAxNy8wOC8yMDIwIDE0OjA1LCBiZW5i amlhbmco6JKL5b2qKSB3cm90ZToNCj4+Pj4+PiANCj4+Pj4+PiANCj4+Pj4+Pj4gT24gQXVnIDE3 LCAyMDIwLCBhdCA0OjU3IFBNLCBEaWV0bWFyIEVnZ2VtYW5uIDxkaWV0bWFyLmVnZ2VtYW5uQGFy bS5jb20+IHdyb3RlOg0KPj4+Pj4+PiANCj4+Pj4+Pj4gT24gMTQvMDgvMjAyMCAwMTo1NSwgYmVu YmppYW5nKOiSi+W9qikgd3JvdGU6DQo+Pj4+Pj4+PiBIaSwNCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+ IE9uIEF1ZyAxMywgMjAyMCwgYXQgMjozOSBBTSwgRGlldG1hciBFZ2dlbWFubiA8ZGlldG1hci5l Z2dlbWFubkBhcm0uY29tPiB3cm90ZToNCj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiBPbiAxMi8wOC8y MDIwIDA1OjE5LCBiZW5iamlhbmco6JKL5b2qKSB3cm90ZToNCj4+Pj4+Pj4+Pj4gSGksDQo+Pj4+ Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gT24gQXVnIDExLCAyMDIwLCBhdCAxMTo1NCBQTSwgRGlldG1h ciBFZ2dlbWFubiA8ZGlldG1hci5lZ2dlbWFubkBhcm0uY29tPiB3cm90ZToNCj4+Pj4+Pj4+Pj4+ IA0KPj4+Pj4+Pj4+Pj4gT24gMTEvMDgvMjAyMCAwMjo0MSwgYmVuYmppYW5nKOiSi+W9qikgd3Jv dGU6DQo+Pj4+Pj4+Pj4+Pj4gSGksDQo+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+IE9uIEF1 ZyAxMCwgMjAyMCwgYXQgOToyNCBQTSwgRGlldG1hciBFZ2dlbWFubiA8ZGlldG1hci5lZ2dlbWFu bkBhcm0uY29tPiB3cm90ZToNCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+IE9uIDA2LzA4 LzIwMjAgMTc6NTIsIGJlbmJqaWFuZyjokovlvaopIHdyb3RlOg0KPj4+Pj4+Pj4+Pj4+Pj4gSGks DQo+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+PiBPbiBBdWcgNiwgMjAyMCwgYXQgOToy OSBQTSwgRGlldG1hciBFZ2dlbWFubiA8ZGlldG1hci5lZ2dlbWFubkBhcm0uY29tPiB3cm90ZToN Cj4+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+PiBPbiAwMy8wOC8yMDIwIDEzOjI2LCBi ZW5iamlhbmco6JKL5b2qKSB3cm90ZToNCj4+Pj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+ Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gT24gQXVnIDMsIDIwMjAsIGF0IDQ6MTYgUE0sIERpZXRt YXIgRWdnZW1hbm4gPGRpZXRtYXIuZWdnZW1hbm5AYXJtLmNvbT4gd3JvdGU6DQo+Pj4+Pj4+Pj4+ Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IE9uIDAxLzA4LzIwMjAgMDQ6MzIsIEppYW5nIEJp YW8gd3JvdGU6DQo+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gRnJvbTogSmlhbmcgQmlhbyA8YmVuYmppYW5n QHRlbmNlbnQuY29tPg0KPj4+Pj4gDQo+Pj4+PiBbLi4uXQ0KPj4+Pj4gDQo+Pj4+Pj4+IEFyZSB5 b3Ugc3VyZSBhYm91dCB0aGlzPw0KPj4+Pj4+IFllcy4gOikNCj4+Pj4+Pj4gDQo+Pj4+Pj4+IFRo ZSBtYXRoIGlzIHRlbGxpbmcgbWUgZm9yIHRoZToNCj4+Pj4+Pj4gDQo+Pj4+Pj4+IGlkbGUgdGFz azogICAgICAoMyAvICgxMDI0ICsgMTAyNCArIDMpKV4oLTEpICogNG1zID0gMjczNW1zDQo+Pj4+ Pj4+IA0KPj4+Pj4+PiBub3JtYWwgdGFzazogKDEwMjQgLyAoMTAyNCArIDEwMjQgKyAzKSleKC0x KSAqIDRtcyA9ICAgIDhtcw0KPj4+Pj4+PiANCj4+Pj4+Pj4gKDRtcyAtIDI1MCBIeikNCj4+Pj4+ PiBNeSB0aWNrIGlzIDFtcyAtIDEwMDBIWiwgd2hpY2ggc2VlbXMgcmVhc29uYWJsZSBmb3IgNjAw bXM/IDopDQo+Pj4+PiANCj4+Pj4+IE9LLCBJIHNlZS4NCj4+Pj4+IA0KPj4+Pj4gQnV0IGhlcmUg dGhlIGRpZmZlcmVudCBzY2hlZCBzbGljZXMgKGNoZWNrX3ByZWVtcHRfdGljaygpLT4NCj4+Pj4+ IHNjaGVkX3NsaWNlKCkpIGJldHdlZW4gbm9ybWFsIHRhc2tzIGFuZCB0aGUgaWRsZSB0YXNrIHBs YXkgYSByb2xlIHRvLg0KPj4+Pj4gDQo+Pj4+PiBOb3JtYWwgdGFza3MgZ2V0IH4zbXMgd2hlcmVh cyB0aGUgaWRsZSB0YXNrIGdldHMgPDAuMDFtcy4NCj4+Pj4gDQo+Pj4+IEluIGZhY3QgdGhhdCBk ZXBlbmRzIG9uIHRoZSBudW1iZXIgb2YgQ1BVcyBvbiB0aGUgc3lzdGVtDQo+Pj4+IDpzeXNjdGxf c2NoZWRfbGF0ZW5jeSA9IDZtcyAqICgxICsgaWxvZyhuY3B1cykpIC4gT24gYSA4IGNvcmVzIHN5 c3RlbSwNCj4+Pj4gbm9ybWFsIHRhc2sgd2lsbCBydW4gYXJvdW5kIDEybXMgaW4gb25lIHNob290 IGFuZCB0aGUgaWRsZSB0YXNrIHN0aWxsDQo+Pj4+IG9uZSB0aWNrIHBlcmlvZA0KPj4+IA0KPj4+ IFRydWUuIFRoaXMgaXMgb24gYSBzaW5nbGUgQ1BVLg0KPj4gQWdyZWUuIDopDQo+PiANCj4+PiAN Cj4+Pj4gQWxzbywgeW91IGNhbiBpbmNyZWFzZSBldmVuIG1vcmUgdGhlIHBlcmlvZCBiZXR3ZWVu IDIgcnVucyBvZiBpZGxlDQo+Pj4+IHRhc2sgYnkgdXNpbmcgY2dyb3VwcyBhbmQgbWluIHNoYXJl cyB2YWx1ZSA6IDINCj4+PiANCj4+PiBBaCB5ZXMsIG1heWJlIHRoaXMgaXMgd2hhdCBKaWFuZyB3 YW50cyB0byBkbyB0aGVuPyBJZiBoaXMgcnVudGltZSBkb2VzDQo+Pj4gbm90IGhhdmUgb3RoZXIg cmVxdWlyZW1lbnRzIHByZXZlbnRpbmcgdGhpcy4NCj4+IFRoYXQgY291bGQgd29yayBmb3IgaW5j cmVhc2luZyB0aGUgcGVyaW9kIGJldHdlZW4gMiBydW5zLiBCdXQgY291bGQgbm90DQo+PiByZWR1 Y2UgdGhlIHNpbmdsZSBydW50aW1lIG9mIGlkbGUgdGFzayBJIGd1ZXNzLCB3aGljaCBtZWFucyBu b3JtYWwgdGFzaw0KPj4gY291bGQgaGF2ZSAxLXRpY2sgc2NoZWR1bGUgbGF0ZW5jeSBiZWNhdXNl IG9mIGlkbGUgdGFzay4NCj4gDQo+IFllcy4gIEFuIGlkbGUgdGFzayB3aWxsIHByZWVtcHQgYW4g YWx3YXlzIHJ1bm5pbmcgdGFzayBkdXJpbmcgMSB0aWNrDQo+IGV2ZXJ5IDY4MG1zLiBCdXQgYWxz byB5b3Ugc2hvdWxkIGtlZXAgaW4gbWluZCB0aGF0IGEgd2FraW5nIG5vcm1hbA0KPiB0YXNrIHdp bGwgcHJlZW1wdCB0aGUgaWRsZSB0YXNrIGltbWVkaWF0ZWx5IHdoaWNoIG1lYW5zIHRoYXQgaXQg d2lsbA0KPiBub3QgYWRkIHNjaGVkdWxpbmcgbGF0ZW5jeSB0byBhIG5vcm1hbCB0YXNrIGJ1dCAi c3RlYWwiIDAuMTQlIG9mDQo+IG5vcm1hbCB0YXNrIHRocm91Z2hwdXQgKDEvNjgwKSBhdCBtb3N0 DQpUaGF04oCZcyB0cnVlLiBCdXQgaW4gdGhlIFZNIGNhc2UsIHdoZW4gVk0gYXJlIGJ1c3koTVdB SVQgcGFzc3Rocm91Z2gNCm9yIHJ1bm5pbmcgY3B1IGVhdGluZyB3b3JrcyksIHRoZSAxLXRpY2sg c2NoZWR1bGluZyBsYXRlbmN5IGNvdWxkIGJlDQpkZXRlY3RlZCBieSBjeWNsaWN0ZXN0IHJ1bm5p bmcgaW4gdGhlIFZNLg0KDQpPVE9ILCB3ZSBjb21wZW5zYXRlIHZydW50aW1lIGluIHBsYWNlX2Vu dGl0eSgpIHRvIGJvb3Qgd2FraW5nDQp3aXRob3V0IGRpc3Rpbmd1aXNoIFNDSEVEX0lETEUgdGFz aywgZG8geW91IHRoaW5rIGl04oCZcyBuZWNlc3NhcnkgdG8NCmRvIHRoYXQ/IGxpa2UNCg0KLS0t IGEva2VybmVsL3NjaGVkL2ZhaXIuYw0KKysrIGIva2VybmVsL3NjaGVkL2ZhaXIuYw0KQEAgLTQx MTUsNyArNDExNSw3IEBAIHBsYWNlX2VudGl0eShzdHJ1Y3QgY2ZzX3JxICpjZnNfcnEsIHN0cnVj dCBzY2hlZF9lbnRpdHkgKnNlLCBpbnQgaW5pdGlhbCkNCiAgICAgICAgICAgICAgICB2cnVudGlt ZSArPSBzY2hlZF92c2xpY2UoY2ZzX3JxLCBzZSk7DQoNCiAgICAgICAgLyogc2xlZXBzIHVwIHRv IGEgc2luZ2xlIGxhdGVuY3kgZG9uJ3QgY291bnQuICovDQotICAgICAgIGlmICghaW5pdGlhbCkg ew0KKyAgICAgICBpZiAoIWluaXRpYWwgJiYgbGlrZWx5KCF0YXNrX2hhc19pZGxlX3BvbGljeSh0 YXNrX29mKHNlKSkpKSB7DQogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB0aHJlc2ggPSBz eXNjdGxfc2NoZWRfbGF0ZW5jeTsNCg0KPiANCj4+IE9UT0gsIGNncm91cHMoc2hhcmVzKSBjb3Vs ZCBpbnRyb2R1Y2UgZXh0cmEgY29tcGxleGl0eS4gOikNCj4+IA0KPj4gSSB3b25kZXIgaWYgdGhl cmXigJlzIGFueSBwb3NzaWJpbGl0eSB0byBtYWtlIFNDSEVEX0lETEVz4oCZIHByaW9yaXRpZXMg YWJzb2x1dGVseQ0KPj4gbG93ZXIgdGhhbiBTQ0hFRF9OT1JNQUwoT1RIRVIpLCB3aGljaCBtZWFu cyBubyB3ZWlnaHRzL3NoYXJlcw0KPj4gZm9yIHRoZW0sIGFuZCB0aGV5IHJ1biBvbmx5IHdoZW4g bm8gb3RoZXIgdGFza+KAmXMgcnVubmFibGUuDQo+PiBJIGd1ZXNzIHRoZXJlIG1heSBiZSBwcmlv cml0eSBpbnZlcnNpb24gaXNzdWUgaWYgd2UgZG8gdGhhdC4gQnV0IG1heWJlIHdlDQo+IA0KPiBF eGFjdGx5LCB0aGF0J3Mgd2h5IHdlIG11c3QgZW5zdXJlIGEgbWluaW11bSBydW5uaW5nIHRpbWUg Zm9yIHNjaGVkX2lkbGUgdGFzaw0KDQpTdGlsbCBmb3IgVk0gY2FzZSwgZGlmZmVyZW50IFZNcyBo YXZlIGJlZW4gbXVjaCBpc29sYXRlZCBmcm9tIGVhY2ggb3RoZXIsDQpwcmlvcml0eSBpbnZlcnNp b24gaXNzdWUgY291bGQgYmUgdmVyeSByYXJlLCB3ZeKAmXJlIHRyeWluZyB0byBtYWtlIG9mZmxp bmUgdGFza3MNCmFic291bHRseSBoYXJtbGVzcyB0byBvbmxpbmUgdGFza3MuIDopDQoNClRoYW5r cyBhIGxvdCBmb3IgeW91ciB0aW1lLg0KUmVnYXJkcywNCkppYW5nDQoNCj4gDQo+PiBjb3VsZCBh dm9pZCBpdCBieSBsb2FkLWJhbGFuY2UgbW9yZSBhZ2dyZXNzaXZlbHksIG9yIGl0KHByaW9yaXR5 IGludmVyc2lvbikNCj4+IGNvdWxkIGJlIGlnbm9yZWQgaW4gc29tZSBzcGVjaWFsIGNhc2UuDQo+ PiANCj4+PiANCg0K