From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.93; helo=mga11.intel.com; envelope-from=jiewen.yao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5C91221122E25 for ; Mon, 10 Sep 2018 08:17:30 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Sep 2018 08:17:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,356,1531810800"; d="scan'208";a="71799446" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga007.jf.intel.com with ESMTP; 10 Sep 2018 08:17:27 -0700 Received: from fmsmsx101.amr.corp.intel.com (10.18.124.199) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 10 Sep 2018 08:17:26 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx101.amr.corp.intel.com (10.18.124.199) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 10 Sep 2018 08:17:26 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.226]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.150]) with mapi id 14.03.0319.002; Mon, 10 Sep 2018 23:17:24 +0800 From: "Yao, Jiewen" To: "Ni, Ruiyu" CC: "edk2-devel@lists.01.org" , "Gao, Liming" , "Kinney, Michael D" Thread-Topic: [PATCH] MdePkg/SynchronizationLib: fix Interlocked[De|In]crement return value Thread-Index: AQHUSO3VgHx6jKLER0mVsNdqrI52gKTpY2vg//+yP4CAAIsscA== Date: Mon, 10 Sep 2018 15:17:23 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503AD4DAB0@shsmsx102.ccr.corp.intel.com> References: <20180910100600.276668-1-ruiyu.ni@intel.com>, <74D8A39837DF1E4DA445A8C0B3885C503AD4D385@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMDFkMmZmNGEtNGFkNC00ZmU1LWFmNDUtMDdmNDI1Yzk4YjYzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiYUhBVitZMDIxNVdwNHZXdHRpNGxJTWtNTnJcL2FVSnJZcDI1M3lYaEZHMzY0UkFFbEpnTWVqNDR4MW5CdHZlWjkifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH] MdePkg/SynchronizationLib: fix Interlocked[De|In]crement return value X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Sep 2018 15:17:30 -0000 Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 WW91IGFyZSByaWdodC4gTXkgbWlzdGFrZS4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiBGcm9tOiBOaSwgUnVpeXUNCj4gU2VudDogTW9uZGF5LCBTZXB0ZW1iZXIgMTAsIDIwMTgg MTA6NTkgUE0NCj4gVG86IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gQ2M6 IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5j b20+OyBLaW5uZXksDQo+IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIE1kZVBrZy9TeW5jaHJvbml6YXRpb25MaWI6IGZpeA0KPiBJ bnRlcmxvY2tlZFtEZXxJbl1jcmVtZW50IHJldHVybiB2YWx1ZQ0KPiANCj4gSSBkaWRuoa90IGZp bmQgc3VjaCBpbnN0cnVjdGlvbiBpbiBTRE0uDQo+IA0KPiC3otfUztK1xCBpUGhvbmUNCj4gDQo+ ID4g1NogMjAxOMTqOdTCMTDI1aOsz8LO5zc6MzejrFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGlu dGVsLmNvbT4NCj4g0LS1wKO6DQo+ID4NCj4gPiBIaQ0KPiA+IENhbiB3ZSB1c2UgWFNVQiBmb3Ig ZGVjcmVtZW50Pw0KPiA+DQo+ID4gVGhhbmsgeW91DQo+ID4gWWFvIEppZXdlbg0KPiA+DQo+ID4+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IE5pLCBSdWl5dQ0KPiA+PiBT ZW50OiBNb25kYXksIFNlcHRlbWJlciAxMCwgMjAxOCA2OjA2IFBNDQo+ID4+IFRvOiBlZGsyLWRl dmVsQGxpc3RzLjAxLm9yZw0KPiA+PiBDYzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwu Y29tPjsgR2FvLCBMaW1pbmcNCj4gPj4gPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgS2lubmV5LCBN aWNoYWVsIEQNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBb UEFUQ0hdIE1kZVBrZy9TeW5jaHJvbml6YXRpb25MaWI6IGZpeA0KPiBJbnRlcmxvY2tlZFtEZXxJ bl1jcmVtZW50DQo+ID4+IHJldHVybiB2YWx1ZQ0KPiA+Pg0KPiA+PiBUb2RheSdzIEludGVybG9j a2VkSW5jcmVtZW50KCkvSW50ZXJsb2NrZWREZWNyZW1lbnQoKSBndWFyYW50ZWVzIHRvDQo+ID4+ IHBlcmZvcm0gYXRvbWljIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0IGRvZXNuJ3QgZ3VhcmFudGVl IHRoZSByZXR1cm4NCj4gPj4gdmFsdWUgZXF1YWxzIHRvIHRoZSBuZXcgdmFsdWUuDQo+ID4+DQo+ ID4+IFRoZSBwYXRjaCBmaXhlcyB0aGUgYmVoYXZpb3IgdG8gdXNlICJYQUREIiBpbnN0cnVjdGlv biB0byBndWFyYW50ZWUNCj4gPj4gdGhlIHJldHVybiB2YWx1ZSBlcXVhbHMgdG8gdGhlIG5ldyB2 YWx1ZS4NCj4gPj4NCj4gPj4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRp b24gQWdyZWVtZW50IDEuMQ0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBSdWl5dSBOaSA8cnVpeXUubmlA aW50ZWwuY29tPg0KPiA+PiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ ID4+IENjOiBMaW1pbmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPj4gQ2M6IE1pY2hh ZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+PiAtLS0NCj4gPj4g TWRlUGtnL0luY2x1ZGUvTGlicmFyeS9TeW5jaHJvbml6YXRpb25MaWIuaCAgICAgICAgfCAgNiAr LS0NCj4gPj4gLi4uL0Jhc2VTeW5jaHJvbml6YXRpb25MaWIuaW5mICAgICAgICAgICAgICAgICAg ICAgfCAxOCArKysrLS0tLS0NCj4gPj4gLi4uL0Jhc2VTeW5jaHJvbml6YXRpb25MaWJJbnRlcm5h bHMuaCAgICAgICAgICAgICAgfCAgNiArLS0NCj4gPj4gLi4uL0Jhc2VTeW5jaHJvbml6YXRpb25M aWIvSWEzMi9HY2NJbmxpbmUuYyAgICAgICAgfCAxOCArKysrLS0tLS0NCj4gPj4gLi4uL0lhMzIv SW50ZXJsb2NrZWREZWNyZW1lbnQuYyAgICAgICAgICAgICAgICAgICAgfCA0Mg0KPiA+PiAtLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiA+PiAuLi4vSWEzMi9JbnRlcmxvY2tlZERlY3JlbWVudC5uYXNt ICAgICAgICAgICAgICAgICB8IDEwICsrLS0tDQo+ID4+IC4uLi9JYTMyL0ludGVybG9ja2VkSW5j cmVtZW50LmMgICAgICAgICAgICAgICAgICAgIHwgNDMNCj4gPj4gLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gPj4gLi4uL0lhMzIvSW50ZXJsb2NrZWRJbmNyZW1lbnQubmFzbSAgICAgICAgICAgICAg ICAgfCAgNyArKy0tDQo+ID4+IC4uLi9CYXNlU3luY2hyb25pemF0aW9uTGliL1N5bmNocm9uaXph dGlvbi5jICAgICAgIHwgIDYgKy0tDQo+ID4+IC4uLi9CYXNlU3luY2hyb25pemF0aW9uTGliL1N5 bmNocm9uaXphdGlvbkdjYy5jICAgIHwgIDYgKy0tDQo+ID4+IC4uLi9CYXNlU3luY2hyb25pemF0 aW9uTGliL1N5bmNocm9uaXphdGlvbk1zYy5jICAgIHwgIDYgKy0tDQo+ID4+IC4uLi9MaWJyYXJ5 L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvWDY0L0djY0lubGluZS5jIHwgMTkgKysrKystLS0tDQo+ ID4+IC4uLi9YNjQvSW50ZXJsb2NrZWREZWNyZW1lbnQuYyAgICAgICAgICAgICAgICAgICAgIHwg NDYNCj4gPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+PiAuLi4vWDY0L0ludGVybG9ja2Vk RGVjcmVtZW50Lm5hc20gICAgICAgICAgICAgICAgICB8ICA4ICsrLS0NCj4gPj4gLi4uL1g2NC9J bnRlcmxvY2tlZEluY3JlbWVudC5jICAgICAgICAgICAgICAgICAgICAgfCA0Ng0KPiA+PiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4+IC4uLi9YNjQvSW50ZXJsb2NrZWRJbmNyZW1lbnQubmFz bSAgICAgICAgICAgICAgICAgIHwgIDUgKystDQo+ID4+IDE2IGZpbGVzIGNoYW5nZWQsIDUyIGlu c2VydGlvbnMoKyksIDI0MCBkZWxldGlvbnMoLSkNCj4gPj4gZGVsZXRlIG1vZGUgMTAwNjQ0DQo+ ID4+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvSWEzMi9JbnRlcmxvY2tl ZERlY3JlbWVudC5jDQo+ID4+IGRlbGV0ZSBtb2RlIDEwMDY0NA0KPiA+PiBNZGVQa2cvTGlicmFy eS9CYXNlU3luY2hyb25pemF0aW9uTGliL0lhMzIvSW50ZXJsb2NrZWRJbmNyZW1lbnQuYw0KPiA+ PiBkZWxldGUgbW9kZSAxMDA2NDQNCj4gPj4gTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXph dGlvbkxpYi9YNjQvSW50ZXJsb2NrZWREZWNyZW1lbnQuYw0KPiA+PiBkZWxldGUgbW9kZSAxMDA2 NDQNCj4gPj4gTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9YNjQvSW50ZXJs b2NrZWRJbmNyZW1lbnQuYw0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0luY2x1ZGUv TGlicmFyeS9TeW5jaHJvbml6YXRpb25MaWIuaA0KPiA+PiBiL01kZVBrZy9JbmNsdWRlL0xpYnJh cnkvU3luY2hyb25pemF0aW9uTGliLmgNCj4gPj4gaW5kZXggZGE2OWY2ZmY1ZS4uY2UzYmNlMDRm NSAxMDA2NDQNCj4gPj4gLS0tIGEvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9TeW5jaHJvbml6YXRp b25MaWIuaA0KPiA+PiArKysgYi9NZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L1N5bmNocm9uaXphdGlv bkxpYi5oDQo+ID4+IEBAIC0xNDQsOCArMTQ0LDcgQEAgUmVsZWFzZVNwaW5Mb2NrICgNCj4gPj4N Cj4gPj4gICBQZXJmb3JtcyBhbiBhdG9taWMgaW5jcmVtZW50IG9mIHRoZSAzMi1iaXQgdW5zaWdu ZWQgaW50ZWdlciBzcGVjaWZpZWQNCj4gYnkNCj4gPj4gICBWYWx1ZSBhbmQgcmV0dXJucyB0aGUg aW5jcmVtZW50ZWQgdmFsdWUuIFRoZSBpbmNyZW1lbnQgb3BlcmF0aW9uDQo+IG11c3QNCj4gPj4g YmUNCj4gPj4gLSAgcGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUgbWVjaGFuaXNtcy4gVGhlIHN0YXRl IG9mIHRoZSByZXR1cm4gdmFsdWUgaXMNCj4gPj4gbm90DQo+ID4+IC0gIGd1YXJhbnRlZWQgdG8g YmUgTVAgc2FmZS4NCj4gPj4gKyAgcGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUgbWVjaGFuaXNtcy4N Cj4gPj4NCj4gPj4gICBJZiBWYWx1ZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+ PiBAQCAtMTY2LDggKzE2NSw3IEBAIEludGVybG9ja2VkSW5jcmVtZW50ICgNCj4gPj4NCj4gPj4g ICBQZXJmb3JtcyBhbiBhdG9taWMgZGVjcmVtZW50IG9mIHRoZSAzMi1iaXQgdW5zaWduZWQgaW50 ZWdlciBzcGVjaWZpZWQNCj4gPj4gYnkNCj4gPj4gICBWYWx1ZSBhbmQgcmV0dXJucyB0aGUgZGVj cmVtZW50ZWQgdmFsdWUuIFRoZSBkZWNyZW1lbnQgb3BlcmF0aW9uDQo+IG11c3QNCj4gPj4gYmUN Cj4gPj4gLSAgcGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUgbWVjaGFuaXNtcy4gVGhlIHN0YXRlIG9m IHRoZSByZXR1cm4gdmFsdWUgaXMNCj4gPj4gbm90DQo+ID4+IC0gIGd1YXJhbnRlZWQgdG8gYmUg TVAgc2FmZS4NCj4gPj4gKyAgcGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUgbWVjaGFuaXNtcy4NCj4g Pj4NCj4gPj4gICBJZiBWYWx1ZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+Pg0KPiA+PiBk aWZmIC0tZ2l0DQo+ID4+IGEvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9C YXNlU3luY2hyb25pemF0aW9uTGliLmluZg0KPiA+PiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5j aHJvbml6YXRpb25MaWIvQmFzZVN5bmNocm9uaXphdGlvbkxpYi5pbmYNCj4gPj4gaW5kZXggMGJl MWQ0MzMxZi4uYjk3MWNkMTM4ZCAxMDA3NTUNCj4gPj4gLS0tIGEvTWRlUGtnL0xpYnJhcnkvQmFz ZVN5bmNocm9uaXphdGlvbkxpYi9CYXNlU3luY2hyb25pemF0aW9uTGliLmluZg0KPiA+PiArKysN Cj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL0Jhc2VTeW5jaHJvbml6 YXRpb25MaWIuaW5mDQo+ID4+IEBAIC0zNCw5ICszNCw5IEBAIFtTb3VyY2VzLklBMzJdDQo+ID4+ ICAgSWEzMi9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTY0LmMgfCBNU0ZUDQo+ID4+ICAgSWEz Mi9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTMyLmMgfCBNU0ZUDQo+ID4+ICAgSWEzMi9JbnRl cmxvY2tlZENvbXBhcmVFeGNoYW5nZTE2LmMgfCBNU0ZUDQo+ID4+IC0gIElhMzIvSW50ZXJsb2Nr ZWREZWNyZW1lbnQuYyB8IE1TRlQNCj4gPj4gLSAgSWEzMi9JbnRlcmxvY2tlZEluY3JlbWVudC5j IHwgTVNGVA0KPiA+PiAtICBTeW5jaHJvbml6YXRpb25Nc2MuYyAgfCBNU0ZUDQo+ID4+ICsgIElh MzIvSW50ZXJsb2NrZWREZWNyZW1lbnQubmFzbSB8IE1TRlQNCj4gPj4gKyAgSWEzMi9JbnRlcmxv Y2tlZEluY3JlbWVudC5uYXNtIHwgTVNGVA0KPiA+PiArICBTeW5jaHJvbml6YXRpb25Nc2MuYyB8 IE1TRlQNCj4gPj4NCj4gPj4gICBJYTMyL0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlNjQubmFz bXwgSU5URUwNCj4gPj4gICBJYTMyL0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlMzIubmFzbXwg SU5URUwNCj4gPj4gQEAgLTU0LDE3ICs1NCwxNSBAQCBbU291cmNlcy5YNjRdDQo+ID4+ICAgWDY0 L0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlNjQuYyB8IE1TRlQNCj4gPj4gICBYNjQvSW50ZXJs b2NrZWRDb21wYXJlRXhjaGFuZ2UzMi5jIHwgTVNGVA0KPiA+PiAgIFg2NC9JbnRlcmxvY2tlZENv bXBhcmVFeGNoYW5nZTE2LmMgfCBNU0ZUDQo+ID4+ICsgIFg2NC9JbnRlcmxvY2tlZERlY3JlbWVu dC5uYXNtIHwgTVNGVA0KPiA+PiArICBYNjQvSW50ZXJsb2NrZWRJbmNyZW1lbnQubmFzbSB8IE1T RlQNCj4gPj4gKyAgU3luY2hyb25pemF0aW9uTXNjLmMgfCBNU0ZUDQo+ID4+DQo+ID4+ICAgWDY0 L0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlNjQubmFzbXwgSU5URUwNCj4gPj4gICBYNjQvSW50 ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UzMi5uYXNtfCBJTlRFTA0KPiA+PiAgIFg2NC9JbnRlcmxv Y2tlZENvbXBhcmVFeGNoYW5nZTE2Lm5hc218IElOVEVMDQo+ID4+IC0NCj4gPj4gLSAgWDY0L0lu dGVybG9ja2VkRGVjcmVtZW50LmMgfCBNU0ZUDQo+ID4+IC0gIFg2NC9JbnRlcmxvY2tlZEluY3Jl bWVudC5jIHwgTVNGVA0KPiA+PiAtICBTeW5jaHJvbml6YXRpb25Nc2MuYyB8IE1TRlQNCj4gPj4g LQ0KPiA+PiAtICBYNjQvSW50ZXJsb2NrZWREZWNyZW1lbnQubmFzbXwgSU5URUwNCj4gPj4gLSAg WDY0L0ludGVybG9ja2VkSW5jcmVtZW50Lm5hc218IElOVEVMDQo+ID4+ICsgIFg2NC9JbnRlcmxv Y2tlZERlY3JlbWVudC5uYXNtIHwgSU5URUwNCj4gPj4gKyAgWDY0L0ludGVybG9ja2VkSW5jcmVt ZW50Lm5hc20gfCBJTlRFTA0KPiA+PiAgIFN5bmNocm9uaXphdGlvbi5jIHwgSU5URUwNCj4gPj4N Cj4gPj4gICBJYTMyL0ludGVybmFsR2V0U3BpbkxvY2tQcm9wZXJ0aWVzLmMgfCBHQ0MNCj4gPj4g ZGlmZiAtLWdpdA0KPiA+Pg0KPiBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25M aWIvQmFzZVN5bmNocm9uaXphdGlvbkxpYkludGVybmFscy4NCj4gPj4gaA0KPiA+Pg0KPiBiL01k ZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvQmFzZVN5bmNocm9uaXphdGlvbkxp YkludGVybmFscy4NCj4gPj4gaA0KPiA+PiBpbmRleCAzN2VkZDdjMTg4Li44YzM2M2E4NTg1IDEw MDY0NA0KPiA+PiAtLS0NCj4gPj4NCj4gYS9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0 aW9uTGliL0Jhc2VTeW5jaHJvbml6YXRpb25MaWJJbnRlcm5hbHMuDQo+ID4+IGgNCj4gPj4gKysr DQo+ID4+DQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9CYXNlU3lu Y2hyb25pemF0aW9uTGliSW50ZXJuYWxzLg0KPiA+PiBoDQo+ID4+IEBAIC0yNyw4ICsyNyw3IEBA DQo+ID4+DQo+ID4+ICAgUGVyZm9ybXMgYW4gYXRvbWljIGluY3JlbWVudCBvZiB0aGUgMzItYml0 IHVuc2lnbmVkIGludGVnZXIgc3BlY2lmaWVkDQo+IGJ5DQo+ID4+ICAgVmFsdWUgYW5kIHJldHVy bnMgdGhlIGluY3JlbWVudGVkIHZhbHVlLiBUaGUgaW5jcmVtZW50IG9wZXJhdGlvbg0KPiBtdXN0 DQo+ID4+IGJlDQo+ID4+IC0gIHBlcmZvcm1lZCB1c2luZyBNUCBzYWZlIG1lY2hhbmlzbXMuIFRo ZSBzdGF0ZSBvZiB0aGUgcmV0dXJuIHZhbHVlIGlzDQo+ID4+IG5vdA0KPiA+PiAtICBndWFyYW50 ZWVkIHRvIGJlIE1QIHNhZmUuDQo+ID4+ICsgIHBlcmZvcm1lZCB1c2luZyBNUCBzYWZlIG1lY2hh bmlzbXMuDQo+ID4+DQo+ID4+ICAgQHBhcmFtICBWYWx1ZSBBIHBvaW50ZXIgdG8gdGhlIDMyLWJp dCB2YWx1ZSB0byBpbmNyZW1lbnQuDQo+ID4+DQo+ID4+IEBAIC00Nyw4ICs0Niw3IEBAIEludGVy bmFsU3luY0luY3JlbWVudCAoDQo+ID4+DQo+ID4+ICAgUGVyZm9ybXMgYW4gYXRvbWljIGRlY3Jl bWVudCBvZiB0aGUgMzItYml0IHVuc2lnbmVkIGludGVnZXIgc3BlY2lmaWVkDQo+ID4+IGJ5DQo+ ID4+ICAgVmFsdWUgYW5kIHJldHVybnMgdGhlIGRlY3JlbWVudCB2YWx1ZS4gVGhlIGRlY3JlbWVu dCBvcGVyYXRpb24gbXVzdA0KPiA+PiBiZQ0KPiA+PiAtICBwZXJmb3JtZWQgdXNpbmcgTVAgc2Fm ZSBtZWNoYW5pc21zLiBUaGUgc3RhdGUgb2YgdGhlIHJldHVybiB2YWx1ZSBpcw0KPiA+PiBub3QN Cj4gPj4gLSAgZ3VhcmFudGVlZCB0byBiZSBNUCBzYWZlLg0KPiA+PiArICBwZXJmb3JtZWQgdXNp bmcgTVAgc2FmZSBtZWNoYW5pc21zLg0KPiA+Pg0KPiA+PiAgIEBwYXJhbSAgVmFsdWUgQSBwb2lu dGVyIHRvIHRoZSAzMi1iaXQgdmFsdWUgdG8gZGVjcmVtZW50Lg0KPiA+Pg0KPiA+PiBkaWZmIC0t Z2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9JYTMyL0djY0lubGlu ZS5jDQo+ID4+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9JYTMyL0dj Y0lubGluZS5jDQo+ID4+IGluZGV4IDRhYjI5M2YyNDMuLmQ4MmUwMjA1ZjUgMTAwNjQ0DQo+ID4+ IC0tLSBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvSWEzMi9HY2NJbmxp bmUuYw0KPiA+PiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL0lh MzIvR2NjSW5saW5lLmMNCj4gPj4gQEAgLTIwLDggKzIwLDcgQEANCj4gPj4NCj4gPj4gICBQZXJm b3JtcyBhbiBhdG9taWMgaW5jcmVtZW50IG9mIHRoZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciBz cGVjaWZpZWQNCj4gYnkNCj4gPj4gICBWYWx1ZSBhbmQgcmV0dXJucyB0aGUgaW5jcmVtZW50ZWQg dmFsdWUuIFRoZSBpbmNyZW1lbnQgb3BlcmF0aW9uDQo+IG11c3QNCj4gPj4gYmUNCj4gPj4gLSAg cGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUgbWVjaGFuaXNtcy4gVGhlIHN0YXRlIG9mIHRoZSByZXR1 cm4gdmFsdWUgaXMNCj4gPj4gbm90DQo+ID4+IC0gIGd1YXJhbnRlZWQgdG8gYmUgTVAgc2FmZS4N Cj4gPj4gKyAgcGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUgbWVjaGFuaXNtcy4NCj4gPj4NCj4gPj4g ICBAcGFyYW0gIFZhbHVlIEEgcG9pbnRlciB0byB0aGUgMzItYml0IHZhbHVlIHRvIGluY3JlbWVu dC4NCj4gPj4NCj4gPj4gQEAgLTM3LDkgKzM2LDEwIEBAIEludGVybmFsU3luY0luY3JlbWVudCAo DQo+ID4+ICAgVUlOVDMyICBSZXN1bHQ7DQo+ID4+DQo+ID4+ICAgX19hc21fXyBfX3ZvbGF0aWxl X18gKA0KPiA+PiArICAgICJtb3ZsICAgICQxLCAlJWVheCAgXG5cdCINCj4gPj4gICAgICJsb2Nr ICAgICAgICAgICAgICAgXG5cdCINCj4gPj4gLSAgICAiaW5jbCAgICAlMiAgICAgICAgIFxuXHQi DQo+ID4+IC0gICAgIm1vdmwgICAgJTIsICUlZWF4ICAgICAgIg0KPiA+PiArICAgICJ4YWRkICAg ICUlZWF4LCAlMiAgXG5cdCINCj4gPj4gKyAgICAiaW5jICAgICAlJWVheCAgICAgICAgICAiDQo+ ID4+ICAgICA6ICI9YSIgKFJlc3VsdCksICAgICAgICAgIC8vICUwDQo+ID4+ICAgICAgICI9bSIg KCpWYWx1ZSkgICAgICAgICAgIC8vICUxDQo+ID4+ICAgICA6ICJtIiAgKCpWYWx1ZSkgICAgICAg ICAgIC8vICUyDQo+ID4+IEBAIC01Nyw4ICs1Nyw3IEBAIEludGVybmFsU3luY0luY3JlbWVudCAo DQo+ID4+DQo+ID4+ICAgUGVyZm9ybXMgYW4gYXRvbWljIGRlY3JlbWVudCBvZiB0aGUgMzItYml0 IHVuc2lnbmVkIGludGVnZXIgc3BlY2lmaWVkDQo+ID4+IGJ5DQo+ID4+ICAgVmFsdWUgYW5kIHJl dHVybnMgdGhlIGRlY3JlbWVudGVkIHZhbHVlLiBUaGUgZGVjcmVtZW50IG9wZXJhdGlvbg0KPiBt dXN0DQo+ID4+IGJlDQo+ID4+IC0gIHBlcmZvcm1lZCB1c2luZyBNUCBzYWZlIG1lY2hhbmlzbXMu IFRoZSBzdGF0ZSBvZiB0aGUgcmV0dXJuIHZhbHVlIGlzDQo+ID4+IG5vdA0KPiA+PiAtICBndWFy YW50ZWVkIHRvIGJlIE1QIHNhZmUuDQo+ID4+ICsgIHBlcmZvcm1lZCB1c2luZyBNUCBzYWZlIG1l Y2hhbmlzbXMuDQo+ID4+DQo+ID4+ICAgQHBhcmFtICBWYWx1ZSBBIHBvaW50ZXIgdG8gdGhlIDMy LWJpdCB2YWx1ZSB0byBkZWNyZW1lbnQuDQo+ID4+DQo+ID4+IEBAIC03NCw5ICs3MywxMCBAQCBJ bnRlcm5hbFN5bmNEZWNyZW1lbnQgKA0KPiA+PiAgICBVSU5UMzIgIFJlc3VsdDsNCj4gPj4NCj4g Pj4gICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4+IC0gICAgImxvY2sgICAgICAgICAgICAg ICBcblx0Ig0KPiA+PiAtICAgICJkZWNsICAgICUyICAgICAgICAgXG5cdCINCj4gPj4gLSAgICAi bW92bCAgICAlMiwgJSVlYXggICAgICAiDQo+ID4+ICsgICAgIm1vdmwgICAgJC0xLCAlJWVheCAg XG5cdCINCj4gPj4gKyAgICAibG9jayAgICAgICAgICAgICAgICBcblx0Ig0KPiA+PiArICAgICJ4 YWRkICAgICUlZWF4LCAlMiAgIFxuXHQiDQo+ID4+ICsgICAgImRlYyAgICAgJSVlYXggICAgICAg ICAgICAgICAgICAiDQo+ID4+ICAgICA6ICI9YSIgKFJlc3VsdCksICAgICAgICAgIC8vICUwDQo+ ID4+ICAgICAgICI9bSIgKCpWYWx1ZSkgICAgICAgICAgIC8vICUxDQo+ID4+ICAgICA6ICJtIiAg KCpWYWx1ZSkgICAgICAgICAgIC8vICUyDQo+ID4+IGRpZmYgLS1naXQNCj4gPj4gYS9NZGVQa2cv TGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL0lhMzIvSW50ZXJsb2NrZWREZWNyZW1lbnQu Yw0KPiA+PiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvSWEzMi9JbnRl cmxvY2tlZERlY3JlbWVudC5jDQo+ID4+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBp bmRleCAzNTRhMGU3YWIxLi4wMDAwMDAwMDAwDQo+ID4+IC0tLQ0KPiBhL01kZVBrZy9MaWJyYXJ5 L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvSWEzMi9JbnRlcmxvY2tlZERlY3JlbWVudC5jDQo+ID4+ ICsrKyAvZGV2L251bGwNCj4gPj4gQEAgLTEsNDIgKzAsMCBAQA0KPiA+PiAtLyoqIEBmaWxlDQo+ ID4+IC0gIEludGVybG9ja2VkRGVjcmVtZW50IGZ1bmN0aW9uDQo+ID4+IC0NCj4gPj4gLSAgQ29w eXJpZ2h0IChjKSAyMDA2IC0gMjAxNiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiA+PiAtICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ID4+IC0gIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiA+PiBCU0QgTGljZW5zZQ0KPiA+PiAtICB3 aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5DQo+IGJlDQo+ID4+IGZvdW5kIGF0DQo+ID4+IC0gIGh0dHA6Ly9vcGVuc291 cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAuDQo+ID4+IC0NCj4gPj4gLSAgVEhFIFBS T0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUw0KPiBJ UyINCj4gPj4gQkFTSVMsDQo+ID4+IC0gIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiA+PiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ IC0NCj4gPj4gLSoqLw0KPiA+PiAtDQo+ID4+IC0NCj4gPj4gLQ0KPiA+PiAtDQo+ID4+IC0vKioN Cj4gPj4gLSAgUGVyZm9ybXMgYW4gYXRvbWljIGRlY3JlbWVudCBvZiBhbiAzMi1iaXQgdW5zaWdu ZWQgaW50ZWdlci4NCj4gPj4gLQ0KPiA+PiAtICBQZXJmb3JtcyBhbiBhdG9taWMgZGVjcmVtZW50 IG9mIHRoZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KPiBzcGVjaWZpZWQgYnkNCj4gPj4gLSAg VmFsdWUgYW5kIHJldHVybnMgdGhlIGRlY3JlbWVudCB2YWx1ZS4gVGhlIGRlY3JlbWVudCBvcGVy YXRpb24NCj4gbXVzdA0KPiA+PiBiZQ0KPiA+PiAtICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBt ZWNoYW5pc21zLiBUaGUgc3RhdGUgb2YgdGhlIHJldHVybiB2YWx1ZSBpcw0KPiA+PiBub3QNCj4g Pj4gLSAgZ3VhcmFudGVlZCB0byBiZSBNUCBzYWZlLg0KPiA+PiAtDQo+ID4+IC0gIEBwYXJhbSAg VmFsdWUgQSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgdmFsdWUgdG8gZGVjcmVtZW50Lg0KPiA+PiAt DQo+ID4+IC0gIEByZXR1cm4gVGhlIGRlY3JlbWVudCB2YWx1ZS4NCj4gPj4gLQ0KPiA+PiAtKiov DQo+ID4+IC1VSU5UMzINCj4gPj4gLUVGSUFQSQ0KPiA+PiAtSW50ZXJuYWxTeW5jRGVjcmVtZW50 ICgNCj4gPj4gLSAgSU4gICAgICB2b2xhdGlsZSBVSU5UMzIgICAgICAgICAgICpWYWx1ZQ0KPiA+ PiAtICApDQo+ID4+IC17DQo+ID4+IC0gIF9hc20gew0KPiA+PiAtICAgIG1vdiAgICAgZWF4LCBW YWx1ZQ0KPiA+PiAtICAgIGxvY2sgICAgZGVjICAgICBkd29yZCBwdHIgW2VheF0NCj4gPj4gLSAg ICBtb3YgICAgIGVheCwgW2VheF0NCj4gPj4gLSAgfQ0KPiA+PiAtfQ0KPiA+PiBkaWZmIC0tZ2l0 DQo+ID4+DQo+IGEvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9JYTMyL0lu dGVybG9ja2VkRGVjcmVtZW50Lm5hcw0KPiA+PiBtDQo+ID4+DQo+IGIvTWRlUGtnL0xpYnJhcnkv QmFzZVN5bmNocm9uaXphdGlvbkxpYi9JYTMyL0ludGVybG9ja2VkRGVjcmVtZW50Lm5hcw0KPiA+ PiBtDQo+ID4+IGluZGV4IDRjNDYwNDExODYuLmRkNWE4ZGUzZWQgMTAwNjQ0DQo+ID4+IC0tLQ0K PiA+Pg0KPiBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvSWEzMi9JbnRl cmxvY2tlZERlY3JlbWVudC5uYXMNCj4gPj4gbQ0KPiA+PiArKysNCj4gPj4NCj4gYi9NZGVQa2cv TGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL0lhMzIvSW50ZXJsb2NrZWREZWNyZW1lbnQu bmFzDQo+ID4+IG0NCj4gPj4gQEAgLTEsNiArMSw2IEBADQo+ID4+IDstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gPj4gOw0KPiA+PiAtOyBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE2LCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4+ICs7IENvcHlyaWdodCAo YykgMjAwNiAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gPj4gOyBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ ID4+IDsgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlDQo+ID4+IEJTRCBMaWNlbnNlDQo+ID4+IDsgd2hpY2ggYWNjb21w YW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1h eSBiZQ0KPiA+PiBmb3VuZCBhdA0KPiA+PiBAQCAtMzIsOCArMzIsOCBAQA0KPiA+PiA7LS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+ID4+IGdsb2JhbCBBU01fUEZYKEludGVybmFsU3luY0RlY3JlbWVu dCkNCj4gPj4gQVNNX1BGWChJbnRlcm5hbFN5bmNEZWNyZW1lbnQpOg0KPiA+PiAtICAgIG1vdiAg ICAgZWF4LCBbZXNwICsgNF0NCj4gPj4gLSAgICBsb2NrICAgIGRlYyAgICAgZHdvcmQgW2VheF0N Cj4gPj4gLSAgICBtb3YgICAgIGVheCwgW2VheF0NCj4gPj4gKyAgICBtb3YgICAgICAgZWN4LCBb ZXNwICsgNF0NCj4gPj4gKyAgICBtb3YgICAgICAgZWF4LCAwRkZGRkZGRkZoDQo+ID4+ICsgICAg bG9jayB4YWRkIGR3b3JkIFtlY3hdLCBlYXgNCj4gPj4gKyAgICBkZWMgICAgICAgZWF4DQo+ID4+ ICAgICByZXQNCj4gPj4gLQ0KPiA+PiBkaWZmIC0tZ2l0DQo+ID4+IGEvTWRlUGtnL0xpYnJhcnkv QmFzZVN5bmNocm9uaXphdGlvbkxpYi9JYTMyL0ludGVybG9ja2VkSW5jcmVtZW50LmMNCj4gPj4g Yi9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL0lhMzIvSW50ZXJsb2NrZWRJ bmNyZW1lbnQuYw0KPiA+PiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXggYzYx YTU1MDExOS4uMDAwMDAwMDAwMA0KPiA+PiAtLS0NCj4gYS9NZGVQa2cvTGlicmFyeS9CYXNlU3lu Y2hyb25pemF0aW9uTGliL0lhMzIvSW50ZXJsb2NrZWRJbmNyZW1lbnQuYw0KPiA+PiArKysgL2Rl di9udWxsDQo+ID4+IEBAIC0xLDQzICswLDAgQEANCj4gPj4gLS8qKiBAZmlsZQ0KPiA+PiAtICBJ bnRlckxvY2tlZEluY3JlbWVudCBmdW5jdGlvbg0KPiA+PiAtDQo+ID4+IC0gIENvcHlyaWdodCAo YykgMjAwNiAtIDIwMTYsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gPj4gLSAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0K PiA+PiAtICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gPj4gQlNEIExpY2Vuc2UNCj4gPj4gLSAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl IG1heQ0KPiBiZQ0KPiA+PiBmb3VuZCBhdA0KPiA+PiAtICBodHRwOi8vb3BlbnNvdXJjZS5vcmcv bGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwLg0KPiA+PiAtDQo+ID4+IC0gIFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiDQo+ID4+ IEJBU0lTLA0KPiA+PiAtICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVINCj4gPj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiAtDQo+ID4+ IC0qKi8NCj4gPj4gLQ0KPiA+PiAtDQo+ID4+IC0NCj4gPj4gLQ0KPiA+PiAtLyoqDQo+ID4+IC0g IFBlcmZvcm1zIGFuIGF0b21pYyBpbmNyZW1lbnQgb2YgYW4gMzItYml0IHVuc2lnbmVkIGludGVn ZXIuDQo+ID4+IC0NCj4gPj4gLSAgUGVyZm9ybXMgYW4gYXRvbWljIGluY3JlbWVudCBvZiB0aGUg MzItYml0IHVuc2lnbmVkIGludGVnZXIgc3BlY2lmaWVkDQo+IGJ5DQo+ID4+IC0gIFZhbHVlIGFu ZCByZXR1cm5zIHRoZSBpbmNyZW1lbnRlZCB2YWx1ZS4gVGhlIGluY3JlbWVudCBvcGVyYXRpb24N Cj4gbXVzdA0KPiA+PiBiZQ0KPiA+PiAtICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5p c21zLiBUaGUgc3RhdGUgb2YgdGhlIHJldHVybiB2YWx1ZSBpcw0KPiA+PiBub3QNCj4gPj4gLSAg Z3VhcmFudGVlZCB0byBiZSBNUCBzYWZlLg0KPiA+PiAtDQo+ID4+IC0gIEBwYXJhbSAgVmFsdWUg QSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgdmFsdWUgdG8gaW5jcmVtZW50Lg0KPiA+PiAtDQo+ID4+ IC0gIEByZXR1cm4gVGhlIGluY3JlbWVudGVkIHZhbHVlLg0KPiA+PiAtDQo+ID4+IC0qKi8NCj4g Pj4gLVVJTlQzMg0KPiA+PiAtRUZJQVBJDQo+ID4+IC1JbnRlcm5hbFN5bmNJbmNyZW1lbnQgKA0K PiA+PiAtICBJTiAgICAgIHZvbGF0aWxlIFVJTlQzMiAgICAgICAgICAgKlZhbHVlDQo+ID4+IC0g ICkNCj4gPj4gLXsNCj4gPj4gLSAgX2FzbSB7DQo+ID4+IC0gICAgbW92ICAgICBlYXgsIFZhbHVl DQo+ID4+IC0gICAgbG9jayAgICBpbmMgICAgIGR3b3JkIHB0ciBbZWF4XQ0KPiA+PiAtICAgIG1v diAgICAgZWF4LCBbZWF4XQ0KPiA+PiAtICB9DQo+ID4+IC19DQo+ID4+IC0NCj4gPj4gZGlmZiAt LWdpdA0KPiA+Pg0KPiBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvSWEz Mi9JbnRlcmxvY2tlZEluY3JlbWVudC5uYXNtDQo+ID4+DQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFz ZVN5bmNocm9uaXphdGlvbkxpYi9JYTMyL0ludGVybG9ja2VkSW5jcmVtZW50Lm5hc20NCj4gPj4g aW5kZXggMzkwMmM3MzI3NS4uMDY3N2U0YmY3OCAxMDA2NDQNCj4gPj4gLS0tDQo+ID4+DQo+IGEv TWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9JYTMyL0ludGVybG9ja2VkSW5j cmVtZW50Lm5hc20NCj4gPj4gKysrDQo+ID4+DQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNo cm9uaXphdGlvbkxpYi9JYTMyL0ludGVybG9ja2VkSW5jcmVtZW50Lm5hc20NCj4gPj4gQEAgLTMy LDggKzMyLDkgQEANCj4gPj4gOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+PiBnbG9iYWwgQVNN X1BGWChJbnRlcm5hbFN5bmNJbmNyZW1lbnQpDQo+ID4+IEFTTV9QRlgoSW50ZXJuYWxTeW5jSW5j cmVtZW50KToNCj4gPj4gLSAgICBtb3YgICAgIGVheCwgW2VzcCArIDRdDQo+ID4+IC0gICAgbG9j ayAgICBpbmMgICAgIGR3b3JkIFtlYXhdDQo+ID4+IC0gICAgbW92ICAgICBlYXgsIFtlYXhdDQo+ ID4+ICsgICAgbW92ICAgICAgIGVjeCwgW2VzcCArIDRdDQo+ID4+ICsgICAgbW92ICAgICAgIGVh eCwgMQ0KPiA+PiArICAgIGxvY2sgeGFkZCBkd29yZCBbZWN4XSwgZWF4DQo+ID4+ICsgICAgaW5j ICAgICAgIGVheA0KPiA+PiAgICAgcmV0DQo+ID4+DQo+ID4+IGRpZmYgLS1naXQgYS9NZGVQa2cv TGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL1N5bmNocm9uaXphdGlvbi5jDQo+ID4+IGIv TWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9TeW5jaHJvbml6YXRpb24uYw0K PiA+PiBpbmRleCA3NmM1YTEyNzVjLi4wYWI1OWNhNzAyIDEwMDY0NA0KPiA+PiAtLS0gYS9NZGVQ a2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL1N5bmNocm9uaXphdGlvbi5jDQo+ID4+ ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvU3luY2hyb25pemF0 aW9uLmMNCj4gPj4gQEAgLTIzMSw4ICsyMzEsNyBAQCBSZWxlYXNlU3BpbkxvY2sgKA0KPiA+Pg0K PiA+PiAgIFBlcmZvcm1zIGFuIGF0b21pYyBpbmNyZW1lbnQgb2YgdGhlIDMyLWJpdCB1bnNpZ25l ZCBpbnRlZ2VyIHNwZWNpZmllZA0KPiBieQ0KPiA+PiAgIFZhbHVlIGFuZCByZXR1cm5zIHRoZSBp bmNyZW1lbnRlZCB2YWx1ZS4gVGhlIGluY3JlbWVudCBvcGVyYXRpb24NCj4gbXVzdA0KPiA+PiBi ZQ0KPiA+PiAtICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLiBUaGUgc3RhdGUg b2YgdGhlIHJldHVybiB2YWx1ZSBpcw0KPiA+PiBub3QNCj4gPj4gLSAgZ3VhcmFudGVlZCB0byBi ZSBNUCBzYWZlLg0KPiA+PiArICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLg0K PiA+Pg0KPiA+PiAgIElmIFZhbHVlIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+ IEBAIC0yNTYsOCArMjU1LDcgQEAgSW50ZXJsb2NrZWRJbmNyZW1lbnQgKA0KPiA+Pg0KPiA+PiAg IFBlcmZvcm1zIGFuIGF0b21pYyBkZWNyZW1lbnQgb2YgdGhlIDMyLWJpdCB1bnNpZ25lZCBpbnRl Z2VyIHNwZWNpZmllZA0KPiA+PiBieQ0KPiA+PiAgIFZhbHVlIGFuZCByZXR1cm5zIHRoZSBkZWNy ZW1lbnRlZCB2YWx1ZS4gVGhlIGRlY3JlbWVudCBvcGVyYXRpb24NCj4gbXVzdA0KPiA+PiBiZQ0K PiA+PiAtICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLiBUaGUgc3RhdGUgb2Yg dGhlIHJldHVybiB2YWx1ZSBpcw0KPiA+PiBub3QNCj4gPj4gLSAgZ3VhcmFudGVlZCB0byBiZSBN UCBzYWZlLg0KPiA+PiArICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLg0KPiA+ Pg0KPiA+PiAgIElmIFZhbHVlIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+IGRp ZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL1N5bmNocm9u aXphdGlvbkdjYy5jDQo+ID4+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxp Yi9TeW5jaHJvbml6YXRpb25HY2MuYw0KPiA+PiBpbmRleCA1YWM1NDhiMTlmLi4xNzc3MzlkM2Rh IDEwMDY0NA0KPiA+PiAtLS0gYS9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGli L1N5bmNocm9uaXphdGlvbkdjYy5jDQo+ID4+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5j aHJvbml6YXRpb25MaWIvU3luY2hyb25pemF0aW9uR2NjLmMNCj4gPj4gQEAgLTI0Nyw4ICsyNDcs NyBAQCBSZWxlYXNlU3BpbkxvY2sgKA0KPiA+Pg0KPiA+PiAgIFBlcmZvcm1zIGFuIGF0b21pYyBp bmNyZW1lbnQgb2YgdGhlIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHNwZWNpZmllZA0KPiBieQ0K PiA+PiAgIFZhbHVlIGFuZCByZXR1cm5zIHRoZSBpbmNyZW1lbnRlZCB2YWx1ZS4gVGhlIGluY3Jl bWVudCBvcGVyYXRpb24NCj4gbXVzdA0KPiA+PiBiZQ0KPiA+PiAtICBwZXJmb3JtZWQgdXNpbmcg TVAgc2FmZSBtZWNoYW5pc21zLiBUaGUgc3RhdGUgb2YgdGhlIHJldHVybiB2YWx1ZSBpcw0KPiA+ PiBub3QNCj4gPj4gLSAgZ3VhcmFudGVlZCB0byBiZSBNUCBzYWZlLg0KPiA+PiArICBwZXJmb3Jt ZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLg0KPiA+Pg0KPiA+PiAgIElmIFZhbHVlIGlzIE5V TEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+IEBAIC0yNzIsOCArMjcxLDcgQEAgSW50ZXJs b2NrZWRJbmNyZW1lbnQgKA0KPiA+Pg0KPiA+PiAgIFBlcmZvcm1zIGFuIGF0b21pYyBkZWNyZW1l bnQgb2YgdGhlIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHNwZWNpZmllZA0KPiA+PiBieQ0KPiA+ PiAgIFZhbHVlIGFuZCByZXR1cm5zIHRoZSBkZWNyZW1lbnRlZCB2YWx1ZS4gVGhlIGRlY3JlbWVu dCBvcGVyYXRpb24NCj4gbXVzdA0KPiA+PiBiZQ0KPiA+PiAtICBwZXJmb3JtZWQgdXNpbmcgTVAg c2FmZSBtZWNoYW5pc21zLiBUaGUgc3RhdGUgb2YgdGhlIHJldHVybiB2YWx1ZSBpcw0KPiA+PiBu b3QNCj4gPj4gLSAgZ3VhcmFudGVlZCB0byBiZSBNUCBzYWZlLg0KPiA+PiArICBwZXJmb3JtZWQg dXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLg0KPiA+Pg0KPiA+PiAgIElmIFZhbHVlIGlzIE5VTEws IHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ID4+IGRpZmYgLS1naXQNCj4gYS9NZGVQa2cvTGlicmFy eS9CYXNlU3luY2hyb25pemF0aW9uTGliL1N5bmNocm9uaXphdGlvbk1zYy5jDQo+ID4+IGIvTWRl UGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9TeW5jaHJvbml6YXRpb25Nc2MuYw0K PiA+PiBpbmRleCBlMzI5OGM4YWI0Li42YWIyZDcxODcwIDEwMDY0NA0KPiA+PiAtLS0gYS9NZGVQ a2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL1N5bmNocm9uaXphdGlvbk1zYy5jDQo+ ID4+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvU3luY2hyb25p emF0aW9uTXNjLmMNCj4gPj4gQEAgLTI0OSw4ICsyNDksNyBAQCBSZWxlYXNlU3BpbkxvY2sgKA0K PiA+Pg0KPiA+PiAgIFBlcmZvcm1zIGFuIGF0b21pYyBpbmNyZW1lbnQgb2YgdGhlIDMyLWJpdCB1 bnNpZ25lZCBpbnRlZ2VyIHNwZWNpZmllZA0KPiBieQ0KPiA+PiAgIFZhbHVlIGFuZCByZXR1cm5z IHRoZSBpbmNyZW1lbnRlZCB2YWx1ZS4gVGhlIGluY3JlbWVudCBvcGVyYXRpb24NCj4gbXVzdA0K PiA+PiBiZQ0KPiA+PiAtICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLiBUaGUg c3RhdGUgb2YgdGhlIHJldHVybiB2YWx1ZSBpcw0KPiA+PiBub3QNCj4gPj4gLSAgZ3VhcmFudGVl ZCB0byBiZSBNUCBzYWZlLg0KPiA+PiArICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5p c21zLg0KPiA+Pg0KPiA+PiAgIElmIFZhbHVlIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+ DQo+ID4+IEBAIC0yNzQsOCArMjczLDcgQEAgSW50ZXJsb2NrZWRJbmNyZW1lbnQgKA0KPiA+Pg0K PiA+PiAgIFBlcmZvcm1zIGFuIGF0b21pYyBkZWNyZW1lbnQgb2YgdGhlIDMyLWJpdCB1bnNpZ25l ZCBpbnRlZ2VyIHNwZWNpZmllZA0KPiA+PiBieQ0KPiA+PiAgIFZhbHVlIGFuZCByZXR1cm5zIHRo ZSBkZWNyZW1lbnRlZCB2YWx1ZS4gVGhlIGRlY3JlbWVudCBvcGVyYXRpb24NCj4gbXVzdA0KPiA+ PiBiZQ0KPiA+PiAtICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLiBUaGUgc3Rh dGUgb2YgdGhlIHJldHVybiB2YWx1ZSBpcw0KPiA+PiBub3QNCj4gPj4gLSAgZ3VhcmFudGVlZCB0 byBiZSBNUCBzYWZlLg0KPiA+PiArICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21z Lg0KPiA+Pg0KPiA+PiAgIElmIFZhbHVlIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4+DQo+ ID4+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL1g2 NC9HY2NJbmxpbmUuYw0KPiA+PiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25M aWIvWDY0L0djY0lubGluZS5jDQo+ID4+IGluZGV4IDUyMjRkZDA2M2YuLjRjNGQ2ZTNmYzcgMTAw NjQ0DQo+ID4+IC0tLSBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvWDY0 L0djY0lubGluZS5jDQo+ID4+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRp b25MaWIvWDY0L0djY0lubGluZS5jDQo+ID4+IEBAIC0xNSwxNCArMTUsMTIgQEANCj4gPj4NCj4g Pj4NCj4gPj4NCj4gPj4gLQ0KPiA+PiAvKioNCj4gPj4gICBQZXJmb3JtcyBhbiBhdG9taWMgaW5j cmVtZW50IG9mIGFuIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLg0KPiA+Pg0KPiA+PiAgIFBlcmZv cm1zIGFuIGF0b21pYyBpbmNyZW1lbnQgb2YgdGhlIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHNw ZWNpZmllZA0KPiBieQ0KPiA+PiAgIFZhbHVlIGFuZCByZXR1cm5zIHRoZSBpbmNyZW1lbnRlZCB2 YWx1ZS4gVGhlIGluY3JlbWVudCBvcGVyYXRpb24NCj4gbXVzdA0KPiA+PiBiZQ0KPiA+PiAtICBw ZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLiBUaGUgc3RhdGUgb2YgdGhlIHJldHVy biB2YWx1ZSBpcw0KPiA+PiBub3QNCj4gPj4gLSAgZ3VhcmFudGVlZCB0byBiZSBNUCBzYWZlLg0K PiA+PiArICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLg0KPiA+Pg0KPiA+PiAg IEBwYXJhbSAgVmFsdWUgQSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgdmFsdWUgdG8gaW5jcmVtZW50 Lg0KPiA+Pg0KPiA+PiBAQCAtMzgsOSArMzYsMTAgQEAgSW50ZXJuYWxTeW5jSW5jcmVtZW50ICgN Cj4gPj4gICBVSU5UMzIgIFJlc3VsdDsNCj4gPj4NCj4gPj4gICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoDQo+ID4+ICsgICAgIm1vdmwgICAgJDEsICUlZWF4ICBcblx0Ig0KPiA+PiAgICAgImxvY2sg ICAgICAgICAgICAgICBcblx0Ig0KPiA+PiAtICAgICJpbmNsICAgICUyICAgICAgICAgXG5cdCIN Cj4gPj4gLSAgICAibW92ICAgICAlMiwgJSVlYXggICAgICAiDQo+ID4+ICsgICAgInhhZGQgICAg JSVlYXgsICUyICBcblx0Ig0KPiA+PiArICAgICJpbmMgICAgICUlZWF4ICAgICAgICAgICINCj4g Pj4gICAgIDogIj1hIiAoUmVzdWx0KSwgICAgICAgICAgLy8gJTANCj4gPj4gICAgICAgIj1tIiAo KlZhbHVlKSAgICAgICAgICAgLy8gJTENCj4gPj4gICAgIDogIm0iICAoKlZhbHVlKSAgICAgICAg ICAgLy8gJTINCj4gPj4gQEAgLTU3LDggKzU2LDcgQEAgSW50ZXJuYWxTeW5jSW5jcmVtZW50ICgN Cj4gPj4NCj4gPj4gICBQZXJmb3JtcyBhbiBhdG9taWMgZGVjcmVtZW50IG9mIHRoZSAzMi1iaXQg dW5zaWduZWQgaW50ZWdlciBzcGVjaWZpZWQNCj4gPj4gYnkNCj4gPj4gICBWYWx1ZSBhbmQgcmV0 dXJucyB0aGUgZGVjcmVtZW50ZWQgdmFsdWUuIFRoZSBkZWNyZW1lbnQgb3BlcmF0aW9uDQo+IG11 c3QNCj4gPj4gYmUNCj4gPj4gLSAgcGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUgbWVjaGFuaXNtcy4g VGhlIHN0YXRlIG9mIHRoZSByZXR1cm4gdmFsdWUgaXMNCj4gPj4gbm90DQo+ID4+IC0gIGd1YXJh bnRlZWQgdG8gYmUgTVAgc2FmZS4NCj4gPj4gKyAgcGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUgbWVj aGFuaXNtcy4NCj4gPj4NCj4gPj4gICBAcGFyYW0gIFZhbHVlIEEgcG9pbnRlciB0byB0aGUgMzIt Yml0IHZhbHVlIHRvIGRlY3JlbWVudC4NCj4gPj4NCj4gPj4gQEAgLTc0LDkgKzcyLDEwIEBAIElu dGVybmFsU3luY0RlY3JlbWVudCAoDQo+ID4+ICAgIFVJTlQzMiAgUmVzdWx0Ow0KPiA+Pg0KPiA+ PiAgIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPj4gLSAgICAibG9jayAgICAgICAgICAgICAg IFxuXHQiDQo+ID4+IC0gICAgImRlY2wgICAgJTIgICAgICAgICBcblx0Ig0KPiA+PiAtICAgICJt b3YgICAgICUyLCAlJWVheCAgICAgICINCj4gPj4gKyAgICAibW92bCAgICAkLTEsICUlZWF4ICBc blx0Ig0KPiA+PiArICAgICJsb2NrICAgICAgICAgICAgICAgIFxuXHQiDQo+ID4+ICsgICAgInhh ZGQgICAgJSVlYXgsICUyICAgXG5cdCINCj4gPj4gKyAgICAiZGVjICAgICAlJWVheCAgICAgICAg ICAgICAgICAgICINCj4gPj4gICAgIDogIj1hIiAoUmVzdWx0KSwgICAgICAgICAgLy8gJTANCj4g Pj4gICAgICAgIj1tIiAoKlZhbHVlKSAgICAgICAgICAgLy8gJTENCj4gPj4gICAgIDogIm0iICAo KlZhbHVlKSAgICAgICAgICAgLy8gJTINCj4gPj4gZGlmZiAtLWdpdA0KPiA+PiBhL01kZVBrZy9M aWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvWDY0L0ludGVybG9ja2VkRGVjcmVtZW50LmMN Cj4gPj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL1g2NC9JbnRlcmxv Y2tlZERlY3JlbWVudC5jDQo+ID4+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRl eCBkYTQwMmNkNGM2Li4wMDAwMDAwMDAwDQo+ID4+IC0tLQ0KPiBhL01kZVBrZy9MaWJyYXJ5L0Jh c2VTeW5jaHJvbml6YXRpb25MaWIvWDY0L0ludGVybG9ja2VkRGVjcmVtZW50LmMNCj4gPj4gKysr IC9kZXYvbnVsbA0KPiA+PiBAQCAtMSw0NiArMCwwIEBADQo+ID4+IC0vKiogQGZpbGUNCj4gPj4g LSAgSW50ZXJsb2NrZWREZWNyZW1lbnQgZnVuY3Rpb24NCj4gPj4gLQ0KPiA+PiAtICBDb3B5cmln aHQgKGMpIDIwMDYgLSAyMDE2LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ID4+IC0gIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh bHMNCj4gPj4gLSAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+ID4+IEJTRCBMaWNlbnNlDQo+ID4+IC0gIHdoaWNo IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGlj ZW5zZSBtYXkNCj4gYmUNCj4gPj4gZm91bmQgYXQNCj4gPj4gLSAgaHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocC4NCj4gPj4gLQ0KPiA+PiAtICBUSEUgUFJPR1JB TSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTDQo+IElTIg0K PiA+PiBCQVNJUywNCj4gPj4gLSAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9O UyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gLQ0K PiA+PiAtKiovDQo+ID4+IC0NCj4gPj4gLS8qKg0KPiA+PiAtICBNaWNyb3NvZnQgVmlzdWFsIFN0 dWRpbyA3LjEgRnVuY3Rpb24gUHJvdG90eXBlcyBmb3IgSS9PIEludHJpbnNpY3MuDQo+ID4+IC0q Ki8NCj4gPj4gLQ0KPiA+PiAtbG9uZyBfSW50ZXJsb2NrZWREZWNyZW1lbnQoDQo+ID4+IC0gICBs b25nICogbHBBZGRlbmQNCj4gPj4gLSk7DQo+ID4+IC0NCj4gPj4gLSNwcmFnbWEgaW50cmluc2lj KF9JbnRlcmxvY2tlZERlY3JlbWVudCkNCj4gPj4gLQ0KPiA+PiAtLyoqDQo+ID4+IC0gIFBlcmZv cm1zIGFuIGF0b21pYyBkZWNyZW1lbnQgb2YgYW4gMzItYml0IHVuc2lnbmVkIGludGVnZXIuDQo+ ID4+IC0NCj4gPj4gLSAgUGVyZm9ybXMgYW4gYXRvbWljIGRlY3JlbWVudCBvZiB0aGUgMzItYml0 IHVuc2lnbmVkIGludGVnZXINCj4gc3BlY2lmaWVkIGJ5DQo+ID4+IC0gIFZhbHVlIGFuZCByZXR1 cm5zIHRoZSBkZWNyZW1lbnQgdmFsdWUuIFRoZSBkZWNyZW1lbnQgb3BlcmF0aW9uDQo+IG11c3QN Cj4gPj4gYmUNCj4gPj4gLSAgcGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUgbWVjaGFuaXNtcy4gVGhl IHN0YXRlIG9mIHRoZSByZXR1cm4gdmFsdWUgaXMNCj4gPj4gbm90DQo+ID4+IC0gIGd1YXJhbnRl ZWQgdG8gYmUgTVAgc2FmZS4NCj4gPj4gLQ0KPiA+PiAtICBAcGFyYW0gIFZhbHVlIEEgcG9pbnRl ciB0byB0aGUgMzItYml0IHZhbHVlIHRvIGRlY3JlbWVudC4NCj4gPj4gLQ0KPiA+PiAtICBAcmV0 dXJuIFRoZSBkZWNyZW1lbnQgdmFsdWUuDQo+ID4+IC0NCj4gPj4gLSoqLw0KPiA+PiAtVUlOVDMy DQo+ID4+IC1FRklBUEkNCj4gPj4gLUludGVybmFsU3luY0RlY3JlbWVudCAoDQo+ID4+IC0gIElO ICAgICAgdm9sYXRpbGUgVUlOVDMyICAgICAgICAgICAqVmFsdWUNCj4gPj4gLSAgKQ0KPiA+PiAt ew0KPiA+PiAtICByZXR1cm4gX0ludGVybG9ja2VkRGVjcmVtZW50ICgobG9uZyAqKShVSU5UTiko VmFsdWUpKTsNCj4gPj4gLX0NCj4gPj4gLQ0KPiA+PiBkaWZmIC0tZ2l0DQo+ID4+DQo+IGEvTWRl UGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9YNjQvSW50ZXJsb2NrZWREZWNyZW1l bnQubmFzbQ0KPiA+Pg0KPiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIv WDY0L0ludGVybG9ja2VkRGVjcmVtZW50Lm5hc20NCj4gPj4gaW5kZXggNjBmNDMxMTFmZS4uZGFi ZGNhOTQ1ZSAxMDA2NDQNCj4gPj4gLS0tDQo+ID4+DQo+IGEvTWRlUGtnL0xpYnJhcnkvQmFzZVN5 bmNocm9uaXphdGlvbkxpYi9YNjQvSW50ZXJsb2NrZWREZWNyZW1lbnQubmFzbQ0KPiA+PiArKysN Cj4gPj4NCj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL1g2NC9JbnRl cmxvY2tlZERlY3JlbWVudC5uYXNtDQo+ID4+IEBAIC0xLDYgKzEsNiBAQA0KPiA+PiA7LS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+ID4+IDsNCj4gPj4gLTsgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAx NiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+PiArOyBD b3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4+IDsgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiA+PiA7IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiA+PiBCU0QgTGljZW5zZQ0KPiA+PiA7IHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUg bGljZW5zZSBtYXkgYmUNCj4gPj4gZm91bmQgYXQNCj4gPj4gQEAgLTMzLDcgKzMzLDcgQEANCj4g Pj4gOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+PiBnbG9iYWwgQVNNX1BGWChJbnRlcm5hbFN5 bmNEZWNyZW1lbnQpDQo+ID4+IEFTTV9QRlgoSW50ZXJuYWxTeW5jRGVjcmVtZW50KToNCj4gPj4g LSAgICBsb2NrICAgIGRlYyAgICAgZHdvcmQgW3JjeF0NCj4gPj4gLSAgICBtb3YgICAgIGVheCwg W3JjeF0NCj4gPj4gKyAgICBtb3YgICAgICAgZWF4LCAwRkZGRkZGRkZoDQo+ID4+ICsgICAgbG9j ayB4YWRkIGR3b3JkIFtyY3hdLCBlYXgNCj4gPj4gKyAgICBkZWMgICAgICAgZWF4DQo+ID4+ICAg ICByZXQNCj4gPj4gLQ0KPiA+PiBkaWZmIC0tZ2l0DQo+ID4+IGEvTWRlUGtnL0xpYnJhcnkvQmFz ZVN5bmNocm9uaXphdGlvbkxpYi9YNjQvSW50ZXJsb2NrZWRJbmNyZW1lbnQuYw0KPiA+PiBiL01k ZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvWDY0L0ludGVybG9ja2VkSW5jcmVt ZW50LmMNCj4gPj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4IGJiZDEzODQ2 MDIuLjAwMDAwMDAwMDANCj4gPj4gLS0tDQo+IGEvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9u aXphdGlvbkxpYi9YNjQvSW50ZXJsb2NrZWRJbmNyZW1lbnQuYw0KPiA+PiArKysgL2Rldi9udWxs DQo+ID4+IEBAIC0xLDQ2ICswLDAgQEANCj4gPj4gLS8qKiBAZmlsZQ0KPiA+PiAtICBJbnRlckxv Y2tlZEluY3JlbWVudCBmdW5jdGlvbg0KPiA+PiAtDQo+ID4+IC0gIENvcHlyaWdodCAoYykgMjAw NiAtIDIwMTYsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4g Pj4gLSAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiAt ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUNCj4gPj4gQlNEIExpY2Vuc2UNCj4gPj4gLSAgd2hpY2ggYWNjb21wYW5p ZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heQ0K PiBiZQ0KPiA+PiBmb3VuZCBhdA0KPiA+PiAtICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwLg0KPiA+PiAtDQo+ID4+IC0gIFRIRSBQUk9HUkFNIElTIERJU1RS SUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiDQo+ID4+IEJBU0lT LA0KPiA+PiAtICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBL SU5ELCBFSVRIRVINCj4gPj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiAtDQo+ID4+IC0qKi8N Cj4gPj4gLQ0KPiA+PiAtLyoqDQo+ID4+IC0gIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDcuMSBG dW5jdGlvbiBQcm90b3R5cGVzIGZvciBJL08gSW50cmluc2ljcy4NCj4gPj4gLSoqLw0KPiA+PiAt DQo+ID4+IC1sb25nIF9JbnRlcmxvY2tlZEluY3JlbWVudCgNCj4gPj4gLSAgIGxvbmcgKiBscEFk ZGVuZA0KPiA+PiAtKTsNCj4gPj4gLQ0KPiA+PiAtI3ByYWdtYSBpbnRyaW5zaWMoX0ludGVybG9j a2VkSW5jcmVtZW50KQ0KPiA+PiAtDQo+ID4+IC0vKioNCj4gPj4gLSAgUGVyZm9ybXMgYW4gYXRv bWljIGluY3JlbWVudCBvZiBhbiAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4NCj4gPj4gLQ0KPiA+ PiAtICBQZXJmb3JtcyBhbiBhdG9taWMgaW5jcmVtZW50IG9mIHRoZSAzMi1iaXQgdW5zaWduZWQg aW50ZWdlciBzcGVjaWZpZWQNCj4gYnkNCj4gPj4gLSAgVmFsdWUgYW5kIHJldHVybnMgdGhlIGlu Y3JlbWVudGVkIHZhbHVlLiBUaGUgaW5jcmVtZW50IG9wZXJhdGlvbg0KPiBtdXN0DQo+ID4+IGJl DQo+ID4+IC0gIHBlcmZvcm1lZCB1c2luZyBNUCBzYWZlIG1lY2hhbmlzbXMuIFRoZSBzdGF0ZSBv ZiB0aGUgcmV0dXJuIHZhbHVlIGlzDQo+ID4+IG5vdA0KPiA+PiAtICBndWFyYW50ZWVkIHRvIGJl IE1QIHNhZmUuDQo+ID4+IC0NCj4gPj4gLSAgQHBhcmFtICBWYWx1ZSBBIHBvaW50ZXIgdG8gdGhl IDMyLWJpdCB2YWx1ZSB0byBpbmNyZW1lbnQuDQo+ID4+IC0NCj4gPj4gLSAgQHJldHVybiBUaGUg aW5jcmVtZW50ZWQgdmFsdWUuDQo+ID4+IC0NCj4gPj4gLSoqLw0KPiA+PiAtVUlOVDMyDQo+ID4+ IC1FRklBUEkNCj4gPj4gLUludGVybmFsU3luY0luY3JlbWVudCAoDQo+ID4+IC0gIElOICAgICAg dm9sYXRpbGUgVUlOVDMyICAgICAgICAgICAqVmFsdWUNCj4gPj4gLSAgKQ0KPiA+PiAtew0KPiA+ PiAtICByZXR1cm4gX0ludGVybG9ja2VkSW5jcmVtZW50ICgobG9uZyAqKShVSU5UTikoVmFsdWUp KTsNCj4gPj4gLX0NCj4gPj4gLQ0KPiA+PiBkaWZmIC0tZ2l0DQo+ID4+DQo+IGEvTWRlUGtnL0xp YnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9YNjQvSW50ZXJsb2NrZWRJbmNyZW1lbnQubmFz bQ0KPiA+Pg0KPiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvWDY0L0lu dGVybG9ja2VkSW5jcmVtZW50Lm5hc20NCj4gPj4gaW5kZXggN2Y4NzdiNTc3NC4uNzczNzlkOTk4 ZSAxMDA2NDQNCj4gPj4gLS0tDQo+ID4+DQo+IGEvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9u aXphdGlvbkxpYi9YNjQvSW50ZXJsb2NrZWRJbmNyZW1lbnQubmFzbQ0KPiA+PiArKysNCj4gPj4N Cj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL1g2NC9JbnRlcmxvY2tl ZEluY3JlbWVudC5uYXNtDQo+ID4+IEBAIC0zMyw3ICszMyw4IEBADQo+ID4+IDstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4gPj4gZ2xvYmFsIEFTTV9QRlgoSW50ZXJuYWxTeW5jSW5jcmVtZW50KQ0K PiA+PiBBU01fUEZYKEludGVybmFsU3luY0luY3JlbWVudCk6DQo+ID4+IC0gICAgbG9jayAgICBp bmMgICAgIGR3b3JkIFtyY3hdDQo+ID4+IC0gICAgbW92ICAgICBlYXgsIFtyY3hdDQo+ID4+ICsg ICAgbW92ICAgICAgIGVheCwgMQ0KPiA+PiArICAgIGxvY2sgeGFkZCBkd29yZCBbcmN4XSwgZWF4 DQo+ID4+ICsgICAgaW5jICAgICAgIGVheA0KPiA+PiAgICAgcmV0DQo+ID4+DQo+ID4+IC0tDQo+ ID4+IDIuMTYuMS53aW5kb3dzLjENCj4gPg0K