Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp614354rwd; Sat, 20 May 2023 03:49:43 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7cGinOaOJOELsSKNgU3hV4iZo5NjoCsS5doCY02pKf2buDpO4GbtMWW2ZtSo0tyIWRqx9b X-Received: by 2002:a05:6a00:2291:b0:647:4dee:62b7 with SMTP id f17-20020a056a00229100b006474dee62b7mr7508803pfe.29.1684579782762; Sat, 20 May 2023 03:49:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684579782; cv=none; d=google.com; s=arc-20160816; b=IO9VuoCYZJywYx1ZK+LTbGlkxc+gDbV8KLEMFKLWmq9kxQ+DIaD2gGpozNYp7wrnLK Ag312qT5pHpajnYPmv/a/B2v9EExoUyy+8NyOXzO6W444vzva6BYaBpVkbvJ4SfzzhL6 zc6W8MQg2H5pAzo0rI6rQIjc+Br247jT18Gf3lrrTS8GqH78vWxtTGem09JmAu5HZVKq mX+R4lLVDMn1Ikp6QkjPQ/BvpDgaXKj89zwCNZ5f3jJdDpPRArJlbbWnKilpa+L39pev FfknAaf9szDBdMptU/5jp3QqEl+cdBsKt8UbY2iqzOfRfmUn9NH8ljQlaYw9lN9NkFOe Zi8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:message-id :date:thread-index:thread-topic:subject:cc:to:from; bh=MJ0KP7myZcSx6spkaAC6X0PUN2FydWHOVm5E8whV/qc=; b=lgL6WWfgjqeUWRyannn/5s6jtyrmzFgMs/8Urfd56J2MWmumdcrAVgJd86O47sfTLi 7/K6MhU+aaX5hnyhQz9tW9/G0nhZ6NaSZGD6+vZtfN3iHo2DBnD6LDSMPZMJ8nMu7Lrb EcahwYFbBlMWZzu818ME2ZHm2PBqtyf52h4x1gwQb4cG47a0/xD37F0bzYyY9rO8kBgG jl7xjjx6UMMwC/r43NGzoghFy4K/3ZfEfQtPVJZ8IkiX5LlY5ACmmI+JwxWmLgnsoPWz tVOAWpiSHPNxNIAVogO4voiPDfBQFZxFeaB8hG4dw3UtR+7f7BKKfWUFnA8hvvwjZdTs jSIA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s17-20020aa78bd1000000b00635ebd8854esi1323804pfd.173.2023.05.20.03.49.29; Sat, 20 May 2023 03:49:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231365AbjETJwt (ORCPT + 99 others); Sat, 20 May 2023 05:52:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48356 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229568AbjETJws (ORCPT ); Sat, 20 May 2023 05:52:48 -0400 Received: from mx6.didiglobal.com (mx6.didiglobal.com [111.202.70.123]) by lindbergh.monkeyblade.net (Postfix) with SMTP id 849F0E47; Sat, 20 May 2023 02:52:45 -0700 (PDT) Received: from mail.didiglobal.com (unknown [10.79.65.18]) by mx6.didiglobal.com (Maildata Gateway V2.8) with ESMTPS id C7BCF11008B42F; Sat, 20 May 2023 17:52:42 +0800 (CST) Received: from ZJY03-ACTMBX-05.didichuxing.com (10.79.71.35) by ZJY02-ACTMBX-06.didichuxing.com (10.79.65.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Sat, 20 May 2023 17:52:42 +0800 Received: from ZJY03-ACTMBX-05.didichuxing.com ([fe80::7d7d:d727:7a02:e909]) by ZJY03-ACTMBX-05.didichuxing.com ([fe80::7d7d:d727:7a02:e909%7]) with mapi id 15.01.2507.021; Sat, 20 May 2023 17:52:42 +0800 X-MD-Sfrom: chengkaitao@didiglobal.com X-MD-SrcIP: 10.79.65.18 From: =?utf-8?B?56iL5Z6y5rabIENoZW5na2FpdGFvIENoZW5n?= To: Yosry Ahmed CC: "tj@kernel.org" , "lizefan.x@bytedance.com" , "hannes@cmpxchg.org" , "corbet@lwn.net" , "mhocko@kernel.org" , "roman.gushchin@linux.dev" , "shakeelb@google.com" , "akpm@linux-foundation.org" , "brauner@kernel.org" , "muchun.song@linux.dev" , "viro@zeniv.linux.org.uk" , "zhengqi.arch@bytedance.com" , "ebiederm@xmission.com" , "Liam.Howlett@oracle.com" , "chengzhihao1@huawei.com" , "pilgrimtao@gmail.com" , "haolee.swjtu@gmail.com" , "yuzhao@google.com" , "willy@infradead.org" , "vasily.averin@linux.dev" , "vbabka@suse.cz" , "surenb@google.com" , "sfr@canb.auug.org.au" , "mcgrof@kernel.org" , "feng.tang@intel.com" , "cgroups@vger.kernel.org" , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , "linux-mm@kvack.org" , David Rientjes Subject: Re: [PATCH v4 0/2] memcontrol: support cgroup level OOM protection Thread-Topic: [PATCH v4 0/2] memcontrol: support cgroup level OOM protection Thread-Index: AQHZiG6QYuA8nkfOmkSWHm0JCEvXOa9dgyoAgACXf4D//3xFAIAApWQAgAAs0QCAARSZgIACJwoAgAFL/4A= Date: Sat, 20 May 2023 09:52:42 +0000 Message-ID: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.79.71.102] Content-Type: text/plain; charset="utf-8" Content-ID: <75E22E2AA0FC6644AABFE5FC321CE0D8@didichuxing.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QXQgMjAyMy0wNS0yMCAwNjowNDoyNiwgIllvc3J5IEFobWVkIiA8eW9zcnlhaG1lZEBnb29nbGUu Y29tPiB3cm90ZToNCj5PbiBXZWQsIE1heSAxNywgMjAyMyBhdCAxMDoxMuKAr1BNIOeoi+Wesua2 myBDaGVuZ2thaXRhbyBDaGVuZw0KPjxjaGVuZ2thaXRhb0BkaWRpZ2xvYmFsLmNvbT4gd3JvdGU6 DQo+Pg0KPj4gQXQgMjAyMy0wNS0xOCAwNDo0MjoxMiwgIllvc3J5IEFobWVkIiA8eW9zcnlhaG1l ZEBnb29nbGUuY29tPiB3cm90ZToNCj4+ID5PbiBXZWQsIE1heSAxNywgMjAyMyBhdCAzOjAx4oCv QU0g56iL5Z6y5rabIENoZW5na2FpdGFvIENoZW5nDQo+PiA+PGNoZW5na2FpdGFvQGRpZGlnbG9i YWwuY29tPiB3cm90ZToNCj4+ID4+DQo+PiA+PiBBdCAyMDIzLTA1LTE3IDE2OjA5OjUwLCAiWW9z cnkgQWhtZWQiIDx5b3NyeWFobWVkQGdvb2dsZS5jb20+IHdyb3RlOg0KPj4gPj4gPk9uIFdlZCwg TWF5IDE3LCAyMDIzIGF0IDE6MDHigK9BTSDnqIvlnrLmtpsgQ2hlbmdrYWl0YW8gQ2hlbmcNCj4+ ID4+ID48Y2hlbmdrYWl0YW9AZGlkaWdsb2JhbC5jb20+IHdyb3RlOg0KPj4gPj4gPj4NCj4+ID4+ DQo+PiA+PiBLaWxsaW5nIHByb2Nlc3NlcyBpbiBvcmRlciBvZiBtZW1vcnkgdXNhZ2UgY2Fubm90 IGVmZmVjdGl2ZWx5IHByb3RlY3QNCj4+ID4+IGltcG9ydGFudCBwcm9jZXNzZXMuIEtpbGxpbmcg cHJvY2Vzc2VzIGluIGEgdXNlci1kZWZpbmVkIHByaW9yaXR5IG9yZGVyDQo+PiA+PiB3aWxsIHJl c3VsdCBpbiBhIGxhcmdlIG51bWJlciBvZiBPT00gZXZlbnRzIGFuZCBzdGlsbCBub3QgYmVpbmcg YWJsZSB0bw0KPj4gPj4gcmVsZWFzZSBlbm91Z2ggbWVtb3J5LiBJIGhhdmUgYmVlbiBzZWFyY2hp bmcgZm9yIGEgYmFsYW5jZSBiZXR3ZWVuDQo+PiA+PiB0aGUgdHdvIG1ldGhvZHMsIHNvIHRoYXQg dGhlaXIgc2hvcnRjb21pbmdzIGFyZSBub3QgdG9vIG9idmlvdXMuDQo+PiA+PiBUaGUgYmlnZ2Vz dCBhZHZhbnRhZ2Ugb2YgbWVtY2cgaXMgaXRzIHRyZWUgdG9wb2xvZ3ksIGFuZCBJIGFsc28gaG9w ZQ0KPj4gPj4gdG8gbWFrZSBnb29kIHVzZSBvZiBpdC4NCj4+ID4NCj4+ID5Gb3IgdXMsIGtpbGxp bmcgcHJvY2Vzc2VzIGluIGEgdXNlci1kZWZpbmVkIHByaW9yaXR5IG9yZGVyIHdvcmtzIHdlbGwu DQo+PiA+DQo+PiA+SXQgc2VlbXMgbGlrZSB0byB0dW5lIG1lbW9yeS5vb20ucHJvdGVjdCB5b3Ug dXNlIG9vbV9raWxsX2luaGVyaXQgdG8NCj4+ID5vYnNlcnZlIGhvdyBtYW55IHRpbWVzIHRoaXMg bWVtY2cgaGFzIGJlZW4ga2lsbGVkIGR1ZSB0byBhIGxpbWl0IGluIGFuDQo+PiA+YW5jZXN0b3Iu IFdvdWxkbid0IGl0IGJlIG1vcmUgc3RyYWlnaHRmb3J3YXJkIHRvIHNwZWNpZnkgdGhlIHByaW9y aXR5DQo+PiA+b2YgcHJvdGVjdGlvbnMgYW1vbmcgbWVtY2dzPw0KPj4gPg0KPj4gPkZvciBleGFt cGxlLCBpZiB5b3Ugb2JzZXJ2ZSBtdWx0aXBsZSBtZW1jZ3MgYmVpbmcgT09NIGtpbGxlZCBkdWUg dG8NCj4+ID5oaXR0aW5nIGFuIGFuY2VzdG9yIGxpbWl0LCB5b3Ugd2lsbCBuZWVkIHRvIGRlY2lk ZSB3aGljaCBvZiB0aGVtIHRvDQo+PiA+aW5jcmVhc2UgbWVtb3J5Lm9vbS5wcm90ZWN0IGZvciBt b3JlLCBiYXNlZCBvbiB0aGVpciBpbXBvcnRhbmNlLg0KPj4gPk90aGVyd2lzZSwgaWYgeW91IGlu Y3JlYXNlIGFsbCBvZiB0aGVtLCB0aGVuIHRoZXJlIGlzIG5vIHBvaW50IGlmIGFsbA0KPj4gPnRo ZSBtZW1vcnkgaXMgcHJvdGVjdGVkLCByaWdodD8NCj4+DQo+PiBJZiBhbGwgbWVtb3J5IGluIG1l bWNnIGlzIHByb3RlY3RlZCwgaXRzIG1lYW5pbmcgaXMgc2ltaWxhciB0byB0aGF0IG9mIHRoZQ0K Pj4gaGlnaGVzdCBwcmlvcml0eSBtZW1jZyBpbiB5b3VyIGFwcHJvYWNoLCB3aGljaCBpcyB1bHRp bWF0ZWx5IGtpbGxlZCBvcg0KPj4gbmV2ZXIga2lsbGVkLg0KPg0KPk1ha2VzIHNlbnNlLiBJIGJl bGlldmUgaXQgZ2V0cyBhIGJpdCB0cmlja2llciB3aGVuIHlvdSB3YW50IHRvDQo+ZGVzY3JpYmUg cmVsYXRpdmUgb3JkZXJpbmcgYmV0d2VlbiBtZW1jZ3MgdXNpbmcgbWVtb3J5Lm9vbS5wcm90ZWN0 Lg0KDQpBY3R1YWxseSwgbXkgb3JpZ2luYWwgaW50ZW50aW9uIHdhcyBub3QgdG8gdXNlIG1lbW9y eS5vb20ucHJvdGVjdCB0bw0KYWNoaWV2ZSByZWxhdGl2ZSBvcmRlcmluZyBiZXR3ZWVuIG1lbWNn cywgaXQgd2FzIGp1c3QgYSBmZWF0dXJlIHRoYXQNCmhhcHBlbmVkIHRvIGJlIGFjaGlldmFibGUu IE15IGluaXRpYWwgaWRlYSB3YXMgdG8gcHJvdGVjdCBhIGNlcnRhaW4gDQpwcm9wb3J0aW9uIG9m IG1lbW9yeSBpbiBtZW1jZyBmcm9tIGJlaW5nIGtpbGxlZCwgYW5kIHRocm91Z2ggdGhlIA0KbWV0 aG9kLCBwaHlzaWNhbCBtZW1vcnkgY2FuIGJlIHJlYXNvbmFibHkgcGxhbm5lZC4gQm90aCB0aGUg cGh5c2ljYWwgDQptYWNoaW5lIG1hbmFnZXIgYW5kIGNvbnRhaW5lciBtYW5hZ2VyIGNhbiBhZGQg c29tZSB1bmltcG9ydGFudCANCmxvYWRzIGJleW9uZCB0aGUgb29tLnByb3RlY3QgbGltaXQsIGdy ZWF0bHkgaW1wcm92aW5nIHRoZSBvdmVyc29sZCANCnJhdGUgb2YgbWVtb3J5LiBJbiB0aGUgd29y c3QgY2FzZSBzY2VuYXJpbywgdGhlIHBoeXNpY2FsIG1hY2hpbmUgY2FuIA0KYWx3YXlzIHByb3Zp ZGUgYWxsIHRoZSBtZW1vcnkgbGltaXRlZCBieSBtZW1vcnkub29tLnByb3RlY3QgZm9yIG1lbWNn Lg0KDQpPbiB0aGUgb3RoZXIgaGFuZCwgSSBhbHNvIHdhbnQgdG8gYWNoaWV2ZSByZWxhdGl2ZSBv cmRlcmluZyBvZiBpbnRlcm5hbCANCnByb2Nlc3NlcyBpbiBtZW1jZywgbm90IGp1c3QgYSB1bmlm aWVkIG9yZGVyaW5nIG9mIGFsbCBtZW1jZ3Mgb24gDQpwaHlzaWNhbCBtYWNoaW5lcy4NCg0KPj4g PkluIHRoaXMgY2FzZSwgd291bGRuJ3QgaXQgYmUgZWFzaWVyIHRvIGp1c3QgdGVsbCB0aGUgT09N IGtpbGxlciB0aGUNCj4+ID5yZWxhdGl2ZSBwcmlvcml0eSBhbW9uZyB0aGUgbWVtY2dzPw0KPj4g Pg0KPj4gPj4NCj4+ID4+ID5JZiB0aGlzIGFwcHJvYWNoIHdvcmtzIGZvciB5b3UgKG9yIGFueSBv dGhlciBhdWRpZW5jZSksIHRoYXQncyBncmVhdCwNCj4+ID4+ID5JIGNhbiBzaGFyZSBtb3JlIGRl dGFpbHMgYW5kIHBlcmhhcHMgd2UgY2FuIHJlYWNoIHNvbWV0aGluZyB0aGF0IHdlDQo+PiA+PiA+ Y2FuIGJvdGggdXNlIDopDQo+PiA+Pg0KPj4gPj4gSWYgeW91IGhhdmUgYSBnb29kIGlkZWEsIHBs ZWFzZSBzaGFyZSBtb3JlIGRldGFpbHMgb3Igc2hvdyBzb21lIGNvZGUuDQo+PiA+PiBJIHdvdWxk IGdyZWF0bHkgYXBwcmVjaWF0ZSBpdA0KPj4gPg0KPj4gPlRoZSBjb2RlIHdlIGhhdmUgbmVlZHMg dG8gYmUgcmViYXNlZCBvbnRvIGEgZGlmZmVyZW50IHZlcnNpb24gYW5kDQo+PiA+Y2xlYW5lZCB1 cCBiZWZvcmUgaXQgY2FuIGJlIHNoYXJlZCwgYnV0IGVzc2VudGlhbGx5IGl0IGlzIGFzDQo+PiA+ ZGVzY3JpYmVkLg0KPj4gPg0KPj4gPihhKSBBbGwgcHJvY2Vzc2VzIGFuZCBtZW1jZ3Mgc3RhcnQg d2l0aCBhIGRlZmF1bHQgc2NvcmUuDQo+PiA+KGIpIFVzZXJzcGFjZSBjYW4gc3BlY2lmeSBzY29y ZXMgZm9yIG1lbWNncyBhbmQgcHJvY2Vzc2VzLiBBIGhpZ2hlcg0KPj4gPnNjb3JlIG1lYW5zIGhp Z2hlciBwcmlvcml0eSAoYWthIGxlc3Mgc2NvcmUgZ2V0cyBraWxsZWQgZmlyc3QpLg0KPj4gPihj KSBUaGUgT09NIGtpbGxlciBlc3NlbnRpYWxseSBsb29rcyBmb3IgdGhlIG1lbWNnIHdpdGggdGhl IGxvd2VzdA0KPj4gPnNjb3JlcyB0byBraWxsLCB0aGVuIGFtb25nIHRoaXMgbWVtY2csIGl0IGxv b2tzIGZvciB0aGUgcHJvY2VzcyB3aXRoDQo+PiA+dGhlIGxvd2VzdCBzY29yZS4gVGllcyBhcmUg YnJva2VuIGJhc2VkIG9uIHVzYWdlLCBzbyBlc3NlbnRpYWxseSBpZg0KPj4gPmFsbCBwcm9jZXNz ZXMvbWVtY2dzIGhhdmUgdGhlIGRlZmF1bHQgc2NvcmUsIHdlIGZhbGxiYWNrIHRvIHRoZQ0KPj4g PmN1cnJlbnQgT09NIGJlaGF2aW9yLg0KPj4NCj4+IElmIG1lbW9yeSBvdmVyc29sZCBpcyBzZXZl cmUsIGFsbCBwcm9jZXNzZXMgb2YgdGhlIGxvd2VzdCBwcmlvcml0eQ0KPj4gbWVtY2cgbWF5IGJl IGtpbGxlZCBiZWZvcmUgc2VsZWN0aW5nIG90aGVyIG1lbWNnIHByb2Nlc3Nlcy4NCj4+IElmIHRo ZXJlIGFyZSAxMDAwIHByb2Nlc3NlcyB3aXRoIGFsbW9zdCB6ZXJvIG1lbW9yeSB1c2FnZSBpbg0K Pj4gdGhlIGxvd2VzdCBwcmlvcml0eSBtZW1jZywgMTAwMCBpbnZhbGlkIGtpbGwgZXZlbnRzIG1h eSBvY2N1ci4NCj4+IFRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCBldmVuIGZvciB0aGUgbG93ZXN0 IHByaW9yaXR5IG1lbWNnLA0KPj4gSSB3aWxsIGxlYXZlIGhpbSBhIHZlcnkgc21hbGwgb29tLnBy b3RlY3QgcXVvdGEuDQo+DQo+SSBjaGVja2VkIGludGVybmFsbHksIGFuZCB0aGlzIGlzIGluZGVl ZCBzb21ldGhpbmcgdGhhdCB3ZSBzZWUgZnJvbQ0KPnRpbWUgdG8gdGltZS4gV2UgdHJ5IHRvIGF2 b2lkIHRoYXQgd2l0aCB1c2Vyc3BhY2UgT09NIGtpbGxpbmcsIGJ1dA0KPml0J3Mgbm90IDEwMCUg ZWZmZWN0aXZlLg0KPg0KPj4NCj4+IElmIGZhY2VkIHdpdGggdHdvIG1lbWNncyB3aXRoIHRoZSBz YW1lIHRvdGFsIG1lbW9yeSB1c2FnZSBhbmQNCj4+IHByaW9yaXR5LCBtZW1jZyBBIGhhcyBtb3Jl IHByb2Nlc3NlcyBidXQgbGVzcyBtZW1vcnkgdXNhZ2UgcGVyDQo+PiBzaW5nbGUgcHJvY2Vzcywg YW5kIG1lbWNnIEIgaGFzIGZld2VyIHByb2Nlc3NlcyBidXQgbW9yZQ0KPj4gbWVtb3J5IHVzYWdl IHBlciBzaW5nbGUgcHJvY2VzcywgdGhlbiB3aGVuIE9PTSBvY2N1cnMsIHRoZQ0KPj4gcHJvY2Vz c2VzIGluIG1lbWNnIEIgbWF5IGNvbnRpbnVlIHRvIGJlIGtpbGxlZCB1bnRpbCBhbGwgcHJvY2Vz c2VzDQo+PiBpbiBtZW1jZyBCIGFyZSBraWxsZWQsIHdoaWNoIGlzIHVuZmFpciB0byBtZW1jZyBC IGJlY2F1c2UgbWVtY2cgQQ0KPj4gYWxzbyBvY2N1cGllcyBhIGxhcmdlIGFtb3VudCBvZiBtZW1v cnkuDQo+DQo+SSBiZWxpZXZlIGluIHRoaXMgY2FzZSB3ZSB3aWxsIGtpbGwgb25lIHByb2Nlc3Mg aW4gbWVtY2cgQiwgdGhlbiB0aGUNCj51c2FnZSBvZiBtZW1jZyBBIHdpbGwgYmVjb21lIGhpZ2hl ciwgc28gd2Ugd2lsbCBwaWNrIGEgcHJvY2VzcyBmcm9tDQo+bWVtY2cgQSBuZXh0Lg0KDQpJZiB0 aGVyZSBpcyBvbmx5IG9uZSBwcm9jZXNzIGluIG1lbWNnIEEgYW5kIGl0cyBtZW1vcnkgdXNhZ2Ug aXMgaGlnaGVyIA0KdGhhbiBhbnkgb3RoZXIgcHJvY2VzcyBpbiBtZW1jZyBCLCBidXQgdGhlIHRv dGFsIG1lbW9yeSB1c2FnZSBvZiANCm1lbWNnIEEgaXMgbG93ZXIgdGhhbiB0aGF0IG9mIG1lbWNn IEIuIEluIHRoaXMgY2FzZSwgaWYgdGhlIE9PTS1raWxsZXIgDQpzdGlsbCBjaG9vc2VzIHRoZSBw cm9jZXNzIGluIG1lbWNnIEEuIGl0IG1heSBiZSB1bmZhaXIgdG8gbWVtY2cgQS4NCg0KPj4gRG9z ZSB5b3VyIGFwcHJvYWNoIGhhdmUgdGhlc2UgaXNzdWVzPyBLaWxsaW5nIHByb2Nlc3NlcyBpbiBh DQo+PiB1c2VyLWRlZmluZWQgcHJpb3JpdHkgaXMgaW5kZWVkIGVhc2llciBhbmQgY2FuIHdvcmsg d2VsbCBpbiBtb3N0IGNhc2VzLA0KPj4gYnV0IEkgaGF2ZSBiZWVuIHRyeWluZyB0byBzb2x2ZSB0 aGUgY2FzZXMgdGhhdCBpdCBjYW5ub3QgY292ZXIuDQo+DQo+VGhlIGZpcnN0IGlzc3VlIGlzIHJl bGF0YWJsZSB3aXRoIG91ciBhcHByb2FjaC4gTGV0IG1lIGRpZyBtb3JlIGluZm8NCj5mcm9tIG91 ciBpbnRlcm5hbCB0ZWFtcyBhbmQgZ2V0IGJhY2sgdG8geW91IHdpdGggbW9yZSBkZXRhaWxzLg0K DQotLQ0KVGhhbmtzIGZvciB5b3VyIGNvbW1lbnQhDQpjaGVuZ2thaXRhbw0KDQoNCg==