From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1UG4nj-0000Gh-3O for kexec@lists.infradead.org; Thu, 14 Mar 2013 09:50:24 +0000 Message-ID: <51419CF8.1020501@cn.fujitsu.com> Date: Thu, 14 Mar 2013 17:48:40 +0800 From: Zhang Yanfei MIME-Version: 1.0 Subject: Re: [PATCH 04/13] kexec: use _ALIGN* to make the logic clear References: <5140B511.7020109@gmail.com> <5140B6E0.1080202@gmail.com> <20130314090805.GH11196@verge.net.au> In-Reply-To: <20130314090805.GH11196@verge.net.au> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Simon Horman Cc: "kexec@lists.infradead.org" , Zhang Yanfei 5LqOIDIwMTPlubQwM+aciDE05pelIDE3OjA4LCBTaW1vbiBIb3JtYW4g5YaZ6YGTOgo+IE9uIFRo dSwgTWFyIDE0LCAyMDEzIGF0IDAxOjI2OjU2QU0gKzA4MDAsIFpoYW5nIFlhbmZlaSB3cm90ZToK Pj4gRnJvbTogWmhhbmcgWWFuZmVpIDx6aGFuZ3lhbmZlaUBjbi5mdWppdHN1LmNvbT4KPj4KPj4g QnkgcmVwbGFjaW5nIGFsbCB0aGUgZXhwbGljaXQgYWxpZ24gb3BlcnRpb25zIHdpdGggbWFyY28g X0FMSUdOKiwKPj4gdGhlIGNvZGUgbG9naWMgY291bGQgYmUgbW9yZSBjbGVhci4KPiAKPiBOb3Qg YSBiaWcgZGVhbCwgYnV0IEkgYmVsaWV2ZSB0aGlzIHBhdGNoIG5lZWRzIHRvIGNvbWUgYWZ0ZXIK PiB0aGUgYXJtIGNoYW5nZXMgaW4gdGhlIHNlcmllcyBpbiBvcmRlciB0byBhdm9pZCBicmVha2lu ZyB0aGUgYnVpbGQKPiBvbiB0aGF0IGFyY2hpdGVjdHVyZS4KClNvcnJ5LCBjb3VsZCB5b3UgZXhw bGFpbiBtb3JlPyBJIGRvbid0IGhhdmUgYW4gYXJtIG1hY2hpbmUsIHNvLCBJIGNvdWxkbid0CnRl c3QgdGhlbS4KCkFuZCBJIGZvdW5kIGEgYnVnIGluIHRoaXMgcGF0Y2gsIHN0aWxsIHRoZSAiKSIg aXNzdWUKCisJbGVuID0gX0FMSUdOKHNpemVvZihiYlswXSwgOCk7Cgpvb3BzLi4uCgo+IAo+Pgo+ PiBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBZYW5mZWkgPHpoYW5neWFuZmVpQGNuLmZ1aml0c3UuY29t Pgo+PiAtLS0KPj4gIGtleGVjL2NyYXNoZHVtcC1lbGYuYyAgICAgICAgICB8ICAgIDMgKy0tCj4+ ICBrZXhlYy9mczJkdC5jICAgICAgICAgICAgICAgICAgfCAgICA1ICsrLS0tCj4+ICBrZXhlYy9r ZXhlYy1lbGYtYm9vdC5jICAgICAgICAgfCAgICAyICstCj4+ICBrZXhlYy9rZXhlYy1lbGYtcmVs LmMgICAgICAgICAgfCAgICA4ICsrKystLS0tCj4+ICBrZXhlYy9rZXhlYy1lbGYuYyAgICAgICAg ICAgICAgfCAgICA4ICsrKystLS0tCj4+ICBrZXhlYy9rZXhlYy5jICAgICAgICAgICAgICAgICAg fCAgIDE1ICsrKysrKystLS0tLS0tLQo+PiAga2V4ZWMvbGliZmR0L2xpYmZkdF9pbnRlcm5hbC5o IHwgICAgMiArLQo+PiAgNyBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAyMyBkZWxl dGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2tleGVjL2NyYXNoZHVtcC1lbGYuYyBiL2tleGVj L2NyYXNoZHVtcC1lbGYuYwo+PiBpbmRleCBlYzY2NTQ4Li4yYmFhMzU3IDEwMDY0NAo+PiAtLS0g YS9rZXhlYy9jcmFzaGR1bXAtZWxmLmMKPj4gKysrIGIva2V4ZWMvY3Jhc2hkdW1wLWVsZi5jCj4+ IEBAIC05Niw4ICs5Niw3IEBAIGludCBGVU5DKHN0cnVjdCBrZXhlY19pbmZvICppbmZvLAo+PiAg CQlyZXR1cm4gLTE7Cj4+ICAJfQo+PiAgCj4+IC0Jc3ogKz0gYWxpZ24gLSAxOwo+PiAtCXN6ICY9 IH4oYWxpZ24gLSAxKTsKPj4gKwlzeiA9IF9BTElHTihzeiwgYWxpZ24pOwo+PiAgCj4+ICAJYnVm cCA9IHhtYWxsb2Moc3opOwo+PiAgCW1lbXNldChidWZwLCAwLCBzeik7Cj4+IGRpZmYgLS1naXQg YS9rZXhlYy9mczJkdC5jIGIva2V4ZWMvZnMyZHQuYwo+PiBpbmRleCA1ZDkzM2M4Li5iZDk3MmJh IDEwMDY0NAo+PiAtLS0gYS9rZXhlYy9mczJkdC5jCj4+ICsrKyBiL2tleGVjL2ZzMmR0LmMKPj4g QEAgLTY5Nyw4ICs2OTcsNyBAQCBzdGF0aWMgdm9pZCBhZGRfYm9vdF9ibG9jayhjaGFyICoqYnVm cCwgb2ZmX3QgKnNpemVwKQo+PiAgCXVuc2lnbmVkIGxvbmcgdGxlbiwgdG9mZjsKPj4gIAljaGFy ICpidWY7Cj4+ICAKPj4gLQlsZW4gPSBzaXplb2YoYmJbMF0pOwo+PiAtCWxlbiArPSA3OyBsZW4g Jj0gfjc7Cj4+ICsJbGVuID0gX0FMSUdOKHNpemVvZihiYlswXSwgOCk7Cj4+ICAKPj4gIAliYi0+ b2ZmX21lbV9yc3ZtYXAgPSBjcHVfdG9fYmUzMihsZW4pOwo+PiAgCj4+IEBAIC03MjEsNyArNzIw LDcgQEAgc3RhdGljIHZvaWQgYWRkX2Jvb3RfYmxvY2soY2hhciAqKmJ1ZnAsIG9mZl90ICpzaXpl cCkKPj4gIAo+PiAgCWxlbiA9IHByb3BudW0oIiIpOwo+PiAgCWJiLT5kdF9zdHJpbmdzX3NpemUg PSBjcHVfdG9fYmUzMihsZW4pOwo+PiAtCWxlbiArPSAgMzsgbGVuICY9IH4zOwo+PiArCWxlbiA9 IF9BTElHTihsZW4sIDQpOwo+PiAgCWJiLT50b3RhbHNpemUgPSBjcHVfdG9fYmUzMihiZTMyX3Rv X2NwdShiYi0+b2ZmX2R0X3N0cmluZ3MpICsgbGVuKTsKPj4gIAo+PiAgCWJiLT5tYWdpYyA9IGNw dV90b19iZTMyKDB4ZDAwZGZlZWQpOwo+PiBkaWZmIC0tZ2l0IGEva2V4ZWMva2V4ZWMtZWxmLWJv b3QuYyBiL2tleGVjL2tleGVjLWVsZi1ib290LmMKPj4gaW5kZXggZjA4MmY4Yi4uMzhmOTA1NiAx MDA2NDQKPj4gLS0tIGEva2V4ZWMva2V4ZWMtZWxmLWJvb3QuYwo+PiArKysgYi9rZXhlYy9rZXhl Yy1lbGYtYm9vdC5jCj4+IEBAIC0zMSw3ICszMSw3IEBACj4+ICAjaW5jbHVkZSAia2V4ZWMtZWxm LWJvb3QuaCIKPj4gIAo+PiAgCj4+IC0jZGVmaW5lIFVQU1ooWCkgKChzaXplb2YoWCkgKyAzKSAm fjMpCj4+ICsjZGVmaW5lIFVQU1ooWCkgX0FMSUdOX1VQKHNpemVvZihYKSwgNCkKPj4gIAo+PiAg c3RhdGljIHN0cnVjdCBib290X25vdGVzIHsKPj4gIAlFbGZfQmhkciBoZHI7Cj4+IGRpZmYgLS1n aXQgYS9rZXhlYy9rZXhlYy1lbGYtcmVsLmMgYi9rZXhlYy9rZXhlYy1lbGYtcmVsLmMKPj4gaW5k ZXggODg4MGM4Yi4uMzhlMzRlYyAxMDA2NDQKPj4gLS0tIGEva2V4ZWMva2V4ZWMtZWxmLXJlbC5j Cj4+ICsrKyBiL2tleGVjL2tleGVjLWVsZi1yZWwuYwo+PiBAQCAtMjI1LDcgKzIyNSw3IEBAIGlu dCBlbGZfcmVsX2xvYWQoc3RydWN0IG1lbV9laGRyICplaGRyLCBzdHJ1Y3Qga2V4ZWNfaW5mbyAq aW5mbywKPj4gIAkJCQlidWZfYWxpZ24gPSBhbGlnbjsKPj4gIAkJCX0KPj4gIAkJCS8qIE5vdyBh bGlnbiBidWZzeiAqLwo+PiAtCQkJYnVmc3ogPSAoYnVmc3ogKyAoYWxpZ24gLSAxKSkgJiB+KGFs aWduIC0gMSk7Cj4+ICsJCQlidWZzeiA9IF9BTElHTihidWZzeiwgYWxpZ24pOwo+PiAgCQkJLyog QW5kIG5vdyBhZGQgb3VyIGJ1ZmZlciAqLwo+PiAgCQkJYnVmc3ogKz0gc2hkci0+c2hfc2l6ZTsK Pj4gIAkJfQo+PiBAQCAtMjM3LDcgKzIzNyw3IEBAIGludCBlbGZfcmVsX2xvYWQoc3RydWN0IG1l bV9laGRyICplaGRyLCBzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbywKPj4gIAkJCQlic3NfYWxpZ24g PSBhbGlnbjsKPj4gIAkJCX0KPj4gIAkJCS8qIE5vdyBhbGlnbiBic3NzeiAqLwo+PiAtCQkJYnNz c3ogPSAoYnNzc3ogKyAoYWxpZ24gLSAxKSkgJiB+KGFsaWduIC0xKTsKPj4gKwkJCWJzc3N6ID0g X0FMSUdOKGJzc3N6LCBhbGlnbik7Cj4+ICAJCQkvKiBBbmQgbm93IGFkZCBvdXIgYnVmZmVyICov Cj4+ICAJCQlic3NzeiArPSBzaGRyLT5zaF9zaXplOwo+PiAgCQl9Cj4+IEBAIC0yNjksNyArMjY5 LDcgQEAgaW50IGVsZl9yZWxfbG9hZChzdHJ1Y3QgbWVtX2VoZHIgKmVoZHIsIHN0cnVjdCBrZXhl Y19pbmZvICppbmZvLAo+PiAgCQlpZiAoc2hkci0+c2hfdHlwZSAhPSBTSFRfTk9CSVRTKSB7Cj4+ ICAJCQl1bnNpZ25lZCBsb25nIG9mZjsKPj4gIAkJCS8qIEFkanVzdCB0aGUgYWRkcmVzcyAqLwo+ PiAtCQkJZGF0YV9hZGRyID0gKGRhdGFfYWRkciArIChhbGlnbiAtIDEpKSAmIH4oYWxpZ24gLTEp Owo+PiArCQkJZGF0YV9hZGRyID0gX0FMSUdOKGRhdGFfYWRkciwgYWxpZ24pOwo+PiAgCj4+ICAJ CQkvKiBVcGRhdGUgdGhlIHNlY3Rpb24gKi8KPj4gIAkJCW9mZiA9IGRhdGFfYWRkciAtIGJ1Zl9h ZGRyOwo+PiBAQCAtMjgxLDcgKzI4MSw3IEBAIGludCBlbGZfcmVsX2xvYWQoc3RydWN0IG1lbV9l aGRyICplaGRyLCBzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbywKPj4gIAkJCWRhdGFfYWRkciArPSBz aGRyLT5zaF9zaXplOwo+PiAgCQl9IGVsc2Ugewo+PiAgCQkJLyogQWRqdXN0IHRoZSBhZGRyZXNz ICovCj4+IC0JCQlic3NfYWRkciA9IChic3NfYWRkciArIChhbGlnbiAtIDEpKSAmIH4oYWxpZ24g LTEpOwo+PiArCQkJYnNzX2FkZHIgPSBfQUxJR04oYnNzX2FkZHIsIGFsaWduKTsKPj4gIAo+PiAg CQkJLyogVXBkYXRlIHRoZSBzZWN0aW9uICovCj4+ICAJCQlzaGRyLT5zaF9hZGRyID0gYnNzX2Fk ZHI7Cj4+IGRpZmYgLS1naXQgYS9rZXhlYy9rZXhlYy1lbGYuYyBiL2tleGVjL2tleGVjLWVsZi5j Cj4+IGluZGV4IGI4OGFjZWQuLjM1MTUyMDMgMTAwNjQ0Cj4+IC0tLSBhL2tleGVjL2tleGVjLWVs Zi5jCj4+ICsrKyBiL2tleGVjL2tleGVjLWVsZi5jCj4+IEBAIC03MDQsOCArNzA0LDggQEAgc3Rh dGljIGludCBidWlsZF9tZW1fbm90ZXMoc3RydWN0IG1lbV9laGRyICplaGRyKQo+PiAgCQlFbGZO Tl9OaGRyIGhkcjsKPj4gIAkJcmVhZF9uaGRyKGVoZHIsICZoZHIsIG5vdGUpOwo+PiAgCQlub3Rl X3NpemUgID0gc2l6ZW9mKGhkcik7Cj4+IC0JCW5vdGVfc2l6ZSArPSAoaGRyLm5fbmFtZXN6ICsg MykgJiB+MzsKPj4gLQkJbm90ZV9zaXplICs9IChoZHIubl9kZXNjc3ogKyAzKSAmIH4zOwo+PiAr CQlub3RlX3NpemUgKz0gX0FMSUdOKGhkci5uX25hbWVzeiwgNCk7Cj4+ICsJCW5vdGVfc2l6ZSAr PSBfQUxJR04oaGRyLm5fZGVzY3N6LCA0KTsKPj4gIAkJZWhkci0+ZV9ub3RlbnVtICs9IDE7Cj4+ ICAJfQo+PiAgCS8qIE5vdyB3YWxrIGFuZCBub3JtYWxpemUgdGhlIG5vdGVzICovCj4+IEBAIC03 MTYsOSArNzE2LDkgQEAgc3RhdGljIGludCBidWlsZF9tZW1fbm90ZXMoc3RydWN0IG1lbV9laGRy ICplaGRyKQo+PiAgCQlyZWFkX25oZHIoZWhkciwgJmhkciwgbm90ZSk7Cj4+ICAJCW5vdGVfc2l6 ZSAgPSBzaXplb2YoaGRyKTsKPj4gIAkJbmFtZSAgICAgICA9IG5vdGUgKyBub3RlX3NpemU7Cj4+ IC0JCW5vdGVfc2l6ZSArPSAoaGRyLm5fbmFtZXN6ICsgMykgJiB+MzsKPj4gKwkJbm90ZV9zaXpl ICs9IF9BTElHTihoZHIubl9uYW1lc3osIDQpOwo+PiAgCQlkZXNjICAgICAgID0gbm90ZSArIG5v dGVfc2l6ZTsKPj4gLQkJbm90ZV9zaXplICs9IChoZHIubl9kZXNjc3ogKyAzKSAmIH4zOwo+PiAr CQlub3RlX3NpemUgKz0gX0FMSUdOKGhkci5uX2Rlc2NzeiwgNCk7Cj4+ICAKPj4gIAkJaWYgKCho ZHIubl9uYW1lc3ogIT0gMCkgJiYgKG5hbWVbaGRyLm5fbmFtZXN6IC0xXSAhPSAnXDAnKSkgewo+ PiAgCQkJLyogSWYgbm90ZSBuYW1lIHN0cmluZyBpcyBub3QgbnVsbCB0ZXJtaW5hdGVkLCBqdXN0 Cj4+IGRpZmYgLS1naXQgYS9rZXhlYy9rZXhlYy5jIGIva2V4ZWMva2V4ZWMuYwo+PiBpbmRleCA0 OTRjNWIzLi5mMzkyOGFmIDEwMDY0NAo+PiAtLS0gYS9rZXhlYy9rZXhlYy5jCj4+ICsrKyBiL2tl eGVjL2tleGVjLmMKPj4gQEAgLTI1Nyw4ICsyNTcsNyBAQCB1bnNpZ25lZCBsb25nIGxvY2F0ZV9o b2xlKHN0cnVjdCBrZXhlY19pbmZvICppbmZvLAo+PiAgCQlpZiAoc3RhcnQgPCBob2xlX21pbikg ewo+PiAgCQkJc3RhcnQgPSBob2xlX21pbjsKPj4gIAkJfQo+PiAtCQlzdGFydCA9IChzdGFydCAr IGhvbGVfYWxpZ24gLSAxKSAmCj4+IC0JCQl+KCh1bnNpZ25lZCBsb25nIGxvbmcpaG9sZV9hbGln biAtIDEpOwo+PiArCQlzdGFydCA9IF9BTElHTihzdGFydCwgaG9sZV9hbGlnbik7Cj4+ICAJCWlm IChlbmQgPiBtZW1fbWF4KSB7Cj4+ICAJCQllbmQgPSBtZW1fbWF4Owo+PiAgCQl9Cj4+IEBAIC0y NzYsOCArMjc1LDggQEAgdW5zaWduZWQgbG9uZyBsb2NhdGVfaG9sZShzdHJ1Y3Qga2V4ZWNfaW5m byAqaW5mbywKPj4gIAkJCQlob2xlX2Jhc2UgPSBzdGFydDsKPj4gIAkJCQlicmVhazsKPj4gIAkJ CX0gZWxzZSB7Cj4+IC0JCQkJaG9sZV9iYXNlID0gKGVuZCAtIGhvbGVfc2l6ZSkgJgo+PiAtCQkJ CQl+KCh1bnNpZ25lZCBsb25nIGxvbmcpaG9sZV9hbGlnbiAtIDEpOwo+PiArCQkJCWhvbGVfYmFz ZSA9IF9BTElHTl9ET1dOKGVuZCAtIGhvbGVfc2l6ZSwKPj4gKwkJCQkJaG9sZV9hbGlnbik7Cj4+ ICAJCQl9Cj4+ICAJCX0KPj4gIAl9Cj4+IEBAIC0zMTMsNyArMzEyLDcgQEAgdm9pZCBhZGRfc2Vn bWVudF9waHlzX3ZpcnQoc3RydWN0IGtleGVjX2luZm8gKmluZm8sCj4+ICAKPj4gIAkvKiBSb3Vu ZCBtZW1zeiB1cCB0byBhIG11bHRpcGxlIG9mIHBhZ2VzaXplICovCj4+ICAJcGFnZXNpemUgPSBn ZXRwYWdlc2l6ZSgpOwo+PiAtCW1lbXN6ID0gKG1lbXN6ICsgKHBhZ2VzaXplIC0gMSkpICYgfihw YWdlc2l6ZSAtIDEpOwo+PiArCW1lbXN6ID0gX0FMSUdOKG1lbXN6LCBwYWdlc2l6ZSk7Cj4+ICAK Pj4gIAkvKiBWZXJpZnkgYmFzZSBpcyBwYWdlc2l6ZSBhbGlnbmVkLgo+PiAgCSAqIEZpbmRpbmcg YSB3YXkgdG8gY29wZSB3aXRoIHRoaXMgcHJvYmxlbQo+PiBAQCAtMzYzLDcgKzM2Miw3IEBAIHVu c2lnbmVkIGxvbmcgYWRkX2J1ZmZlcl9waHlzX3ZpcnQoc3RydWN0IGtleGVjX2luZm8gKmluZm8s Cj4+ICAKPj4gIAkvKiBSb3VuZCBtZW1zeiB1cCB0byBhIG11bHRpcGxlIG9mIHBhZ2VzaXplICov Cj4+ICAJcGFnZXNpemUgPSBnZXRwYWdlc2l6ZSgpOwo+PiAtCW1lbXN6ID0gKG1lbXN6ICsgKHBh Z2VzaXplIC0gMSkpICYgfihwYWdlc2l6ZSAtIDEpOwo+PiArCW1lbXN6ID0gX0FMSUdOKG1lbXN6 LCBwYWdlc2l6ZSk7Cj4+ICAKPj4gIAliYXNlID0gbG9jYXRlX2hvbGUoaW5mbywgbWVtc3osIGJ1 Zl9hbGlnbiwgYnVmX21pbiwgYnVmX21heCwgYnVmX2VuZCk7Cj4+ICAJaWYgKGJhc2UgPT0gVUxP TkdfTUFYKSB7Cj4+IEBAIC00NTcsOCArNDU2LDggQEAgaW50IGFkZF9iYWNrdXBfc2VnbWVudHMo c3RydWN0IGtleGVjX2luZm8gKmluZm8sIHVuc2lnbmVkIGxvbmcgYmFja3VwX2Jhc2UsCj4+ICAJ CQkJcmV0dXJuIC0xOwo+PiAgCQkJaWYgKCFmaW5kX3NlZ21lbnRfaG9sZShpbmZvLCAmYmtzZWdf YmFzZSwgJmJrc2VnX3NpemUpKQo+PiAgCQkJCWJyZWFrOwo+PiAtCQkJc3RhcnQgPSAoYmtzZWdf YmFzZSArIHBhZ2VzaXplIC0gMSkgJiB+KHBhZ2VzaXplIC0gMSk7Cj4+IC0JCQllbmQgPSAoYmtz ZWdfYmFzZSArIGJrc2VnX3NpemUpICYgfihwYWdlc2l6ZSAtIDEpOwo+PiArCQkJc3RhcnQgPSBf QUxJR04oYmtzZWdfYmFzZSwgcGFnZXNpemUpOwo+PiArCQkJZW5kID0gX0FMSUdOX0RPV04oYmtz ZWdfYmFzZSArIGJrc2VnX3NpemUsIHBhZ2VzaXplKTsKPj4gIAkJCWFkZF9zZWdtZW50X3BoeXNf dmlydChpbmZvLCBOVUxMLCAwLAo+PiAgCQkJCQkgICAgICBzdGFydCwgZW5kLXN0YXJ0LCAwKTsK Pj4gIAkJCW1lbV9zaXplID0gbWVtX2Jhc2UgKyBtZW1fc2l6ZSAtIFwKPj4gZGlmZiAtLWdpdCBh L2tleGVjL2xpYmZkdC9saWJmZHRfaW50ZXJuYWwuaCBiL2tleGVjL2xpYmZkdC9saWJmZHRfaW50 ZXJuYWwuaAo+PiBpbmRleCA0NmViOTNlLi4zNjM1ZDk4IDEwMDY0NAo+PiAtLS0gYS9rZXhlYy9s aWJmZHQvbGliZmR0X2ludGVybmFsLmgKPj4gKysrIGIva2V4ZWMvbGliZmR0L2xpYmZkdF9pbnRl cm5hbC5oCj4+IEBAIC01Miw3ICs1Miw3IEBACj4+ICAgKi8KPj4gICNpbmNsdWRlIDxmZHQuaD4K Pj4gIAo+PiAtI2RlZmluZSBGRFRfQUxJR04oeCwgYSkJCSgoKHgpICsgKGEpIC0gMSkgJiB+KChh KSAtIDEpKQo+PiArI2RlZmluZSBGRFRfQUxJR04oeCwgYSkJCV9BTElHTih4LCBhKQo+PiAgI2Rl ZmluZSBGRFRfVEFHQUxJR04oeCkJCShGRFRfQUxJR04oKHgpLCBGRFRfVEFHU0laRSkpCj4+ICAK Pj4gICNkZWZpbmUgRkRUX0NIRUNLX0hFQURFUihmZHQpIFwKPj4gLS0gCj4+IDEuNy4xCj4+Cj4g Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBrZXhl YyBtYWlsaW5nIGxpc3QKPiBrZXhlY0BsaXN0cy5pbmZyYWRlYWQub3JnCj4gaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9rZXhlYwo+IAoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmtleGVjIG1haWxpbmcgbGlzdAprZXhl Y0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8va2V4ZWMK