From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail138.messagelabs.com (mail138.messagelabs.com [216.82.249.35]) by kanga.kvack.org (Postfix) with ESMTP id E83D1900086 for ; Wed, 13 Apr 2011 23:58:17 -0400 (EDT) Received: by pzk32 with SMTP id 32so632862pzk.14 for ; Wed, 13 Apr 2011 20:58:15 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <1302678187-24154-5-git-send-email-yinghan@google.com> References: <1302678187-24154-1-git-send-email-yinghan@google.com> <1302678187-24154-5-git-send-email-yinghan@google.com> From: Zhu Yanhai Date: Thu, 14 Apr 2011 11:57:55 +0800 Message-ID: Subject: Re: [PATCH V3 4/7] Infrastructure to support per-memcg reclaim. Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Sender: owner-linux-mm@kvack.org List-ID: To: Ying Han Cc: KAMEZAWA Hiroyuki , Pavel Emelyanov , Balbir Singh , Daisuke Nishimura , Li Zefan , Mel Gorman , Christoph Lameter , Johannes Weiner , Rik van Riel , Hugh Dickins , KOSAKI Motohiro , Tejun Heo , Michal Hocko , Andrew Morton , Dave Hansen , linux-mm@kvack.org SGkgWWluZywKCjIwMTEvNC8xMyBZaW5nIEhhbiA8eWluZ2hhbkBnb29nbGUuY29tPjoKPiAtZXh0 ZXJuIGludCBrc3dhcGRfcnVuKGludCBuaWQpOwo+IC1leHRlcm4gdm9pZCBrc3dhcGRfc3RvcChp bnQgbmlkKTsKPiArZXh0ZXJuIGludCBrc3dhcGRfcnVuKGludCBuaWQsIHN0cnVjdCBtZW1fY2dy b3VwICptZW0pOwo+ICtleHRlcm4gdm9pZCBrc3dhcGRfc3RvcChpbnQgbmlkLCBzdHJ1Y3QgbWVt X2Nncm91cCAqbWVtKTsKClRoaXMgYnJlYWtzIG9ubGluZV9wYWdlcygpIGFuZCBvZmZsaW5lX3Bh Z2VzKCksIHdoaWNoIGFyZSBhbHNvCnRoZSBjYWxsZXIgb2Yga3N3YXBlZF9ydW4oKSBhbmQga3N3 YXBlZF9zdG9wKCkuCgpUaGFua3MsClpodSBZYW5oYWkKCj4KPiDCoCNpZmRlZiBDT05GSUdfTU1V Cj4gwqAvKiBsaW51eC9tbS9zaG1lbS5jICovCj4gZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wu YyBiL21tL21lbWNvbnRyb2wuYwo+IGluZGV4IDM2YWUzNzcuLmFjZDg0YTggMTAwNjQ0Cj4gLS0t IGEvbW0vbWVtY29udHJvbC5jCj4gKysrIGIvbW0vbWVtY29udHJvbC5jCj4gQEAgLTI3NCw2ICsy NzQsOCBAQCBzdHJ1Y3QgbWVtX2Nncm91cCB7Cj4gwqAgwqAgwqAgwqBzcGlubG9ja190IHBjcF9j b3VudGVyX2xvY2s7Cj4KPiDCoCDCoCDCoCDCoGludCB3bWFya19yYXRpbzsKPiArCj4gKyDCoCDC oCDCoCB3YWl0X3F1ZXVlX2hlYWRfdCAqa3N3YXBkX3dhaXQ7Cj4gwqB9Owo+Cj4gwqAvKiBTdHVm ZnMgZm9yIG1vdmUgY2hhcmdlcyBhdCB0YXNrIG1pZ3JhdGlvbi4gKi8KPiBAQCAtNDYyMiw2ICs0 NjI0LDMzIEBAIGludCBtZW1fY2dyb3VwX3dhdGVybWFya19vayhzdHJ1Y3QgbWVtX2Nncm91cCAq bWVtLAo+IMKgIMKgIMKgIMKgcmV0dXJuIHJldDsKPiDCoH0KPgo+ICtpbnQgbWVtX2Nncm91cF9p bml0X2tzd2FwZChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtLCBzdHJ1Y3Qga3N3YXBkICprc3dhcGRf cCkKPiArewo+ICsgwqAgwqAgwqAgaWYgKCFtZW0gfHwgIWtzd2FwZF9wKQo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgcmV0dXJuIDA7Cj4gKwo+ICsgwqAgwqAgwqAgbWVtLT5rc3dhcGRfd2FpdCA9 ICZrc3dhcGRfcC0+a3N3YXBkX3dhaXQ7Cj4gKyDCoCDCoCDCoCBrc3dhcGRfcC0+a3N3YXBkX21l bSA9IG1lbTsKPiArCj4gKyDCoCDCoCDCoCByZXR1cm4gY3NzX2lkKCZtZW0tPmNzcyk7Cj4gK30K PiArCj4gK3ZvaWQgbWVtX2Nncm91cF9jbGVhcl9rc3dhcGQoc3RydWN0IG1lbV9jZ3JvdXAgKm1l bSkKPiArewo+ICsgwqAgwqAgwqAgaWYgKG1lbSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1l bS0+a3N3YXBkX3dhaXQgPSBOVUxMOwo+ICsKPiArIMKgIMKgIMKgIHJldHVybjsKPiArfQo+ICsK PiArd2FpdF9xdWV1ZV9oZWFkX3QgKm1lbV9jZ3JvdXBfa3N3YXBkX3dhaXQoc3RydWN0IG1lbV9j Z3JvdXAgKm1lbSkKPiArewo+ICsgwqAgwqAgwqAgaWYgKCFtZW0pCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCByZXR1cm4gTlVMTDsKPiArCj4gKyDCoCDCoCDCoCByZXR1cm4gbWVtLT5rc3dhcGRf d2FpdDsKPiArfQo+ICsKPiDCoHN0YXRpYyBpbnQgbWVtX2Nncm91cF9zb2Z0X2xpbWl0X3RyZWVf aW5pdCh2b2lkKQo+IMKgewo+IMKgIMKgIMKgIMKgc3RydWN0IG1lbV9jZ3JvdXBfdHJlZV9wZXJf bm9kZSAqcnRwbjsKPiBkaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uYwo+IGlu ZGV4IDc3YWM3NGYuLmExYTEyMTEgMTAwNjQ0Cj4gLS0tIGEvbW0vdm1zY2FuLmMKPiArKysgYi9t bS92bXNjYW4uYwo+IEBAIC0yMjQyLDYgKzIyNDIsNyBAQCBzdGF0aWMgYm9vbCBwZ2RhdF9iYWxh bmNlZChwZ19kYXRhX3QgKnBnZGF0LCB1bnNpZ25lZCBsb25nIGJhbGFuY2VkX3BhZ2VzLAo+IMKg fQo+Cj4gwqBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGtzd2FwZHNfc3BpbmxvY2spOwo+ICsjZGVm aW5lIGlzX25vZGVfa3N3YXBkKGtzd2FwZF9wKSAoIShrc3dhcGRfcCktPmtzd2FwZF9tZW0pCj4K PiDCoC8qIGlzIGtzd2FwZCBzbGVlcGluZyBwcmVtYXR1cmVseT8gKi8KPiDCoHN0YXRpYyBpbnQg c2xlZXBpbmdfcHJlbWF0dXJlbHkoc3RydWN0IGtzd2FwZCAqa3N3YXBkLCBpbnQgb3JkZXIsCj4g QEAgLTIyNTEsMTEgKzIyNTIsMTYgQEAgc3RhdGljIGludCBzbGVlcGluZ19wcmVtYXR1cmVseShz dHJ1Y3Qga3N3YXBkICprc3dhcGQsIGludCBvcmRlciwKPiDCoCDCoCDCoCDCoHVuc2lnbmVkIGxv bmcgYmFsYW5jZWQgPSAwOwo+IMKgIMKgIMKgIMKgYm9vbCBhbGxfem9uZXNfb2sgPSB0cnVlOwo+ IMKgIMKgIMKgIMKgcGdfZGF0YV90ICpwZ2RhdCA9IGtzd2FwZC0+a3N3YXBkX3BnZGF0Owo+ICsg wqAgwqAgwqAgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbSA9IGtzd2FwZC0+a3N3YXBkX21lbTsKPgo+ IMKgIMKgIMKgIMKgLyogSWYgYSBkaXJlY3QgcmVjbGFpbWVyIHdva2Uga3N3YXBkIHdpdGhpbiBI Wi8xMCwgaXQncyBwcmVtYXR1cmUgKi8KPiDCoCDCoCDCoCDCoGlmIChyZW1haW5pbmcpCj4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm4gdHJ1ZTsKPgo+ICsgwqAgwqAgwqAgLyogRG9lc24n dCBzdXBwb3J0IGZvciBwZXItbWVtY2cgcmVjbGFpbSAqLwo+ICsgwqAgwqAgwqAgaWYgKG1lbSkK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBmYWxzZTsKPiArCj4gwqAgwqAgwqAgwqAv KiBDaGVjayB0aGUgd2F0ZXJtYXJrIGxldmVscyAqLwo+IMKgIMKgIMKgIMKgZm9yIChpID0gMDsg aSA8IHBnZGF0LT5ucl96b25lczsgaSsrKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1 Y3Qgem9uZSAqem9uZSA9IHBnZGF0LT5ub2RlX3pvbmVzICsgaTsKPiBAQCAtMjU5OCwxOSArMjYw NCwyNSBAQCBzdGF0aWMgdm9pZCBrc3dhcGRfdHJ5X3RvX3NsZWVwKHN0cnVjdCBrc3dhcGQgKmtz d2FwZF9wLCBpbnQgb3JkZXIsCj4gwqAgwqAgwqAgwqAgKiBnbyBmdWxseSB0byBzbGVlcCB1bnRp bCBleHBsaWNpdGx5IHdva2VuIHVwLgo+IMKgIMKgIMKgIMKgICovCj4gwqAgwqAgwqAgwqBpZiAo IXNsZWVwaW5nX3ByZW1hdHVyZWx5KGtzd2FwZF9wLCBvcmRlciwgcmVtYWluaW5nLCBjbGFzc3pv bmVfaWR4KSkgewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgdHJhY2VfbW1fdm1zY2FuX2tzd2Fw ZF9zbGVlcChwZ2RhdC0+bm9kZV9pZCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoaXNf bm9kZV9rc3dhcGQoa3N3YXBkX3ApKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCB0cmFjZV9tbV92bXNjYW5fa3N3YXBkX3NsZWVwKHBnZGF0LT5ub2RlX2lkKTsKPgo+IC0g wqAgwqAgwqAgwqAgwqAgwqAgwqAgLyoKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiB2bXN0 YXQgY291bnRlcnMgYXJlIG5vdCBwZXJmZWN0bHkgYWNjdXJhdGUgYW5kIHRoZSBlc3RpbWF0ZWQK PiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiB2YWx1ZSBmb3IgY291bnRlcnMgc3VjaCBhcyBO Ul9GUkVFX1BBR0VTIGNhbiBkZXZpYXRlIGZyb20gdGhlCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCogdHJ1ZSB2YWx1ZSBieSBucl9vbmxpbmVfY3B1cyAqIHRocmVzaG9sZC4gVG8gYXZvaWQg dGhlIHpvbmUKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiB3YXRlcm1hcmtzIGJlaW5nIGJy ZWFjaGVkIHdoaWxlIHVuZGVyIHByZXNzdXJlLCB3ZSByZWR1Y2UgdGhlCj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCogcGVyLWNwdSB2bXN0YXQgdGhyZXNob2xkIHdoaWxlIGtzd2FwZCBpcyBh d2FrZSBhbmQgcmVzdG9yZQo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIHRoZW0gYmVmb3Jl IGdvaW5nIGJhY2sgdG8gc2xlZXAuCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCovCj4gLSDC oCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRfcGdkYXRfcGVyY3B1X3RocmVzaG9sZChwZ2RhdCwgY2Fs Y3VsYXRlX25vcm1hbF90aHJlc2hvbGQpOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2NoZWR1 bGUoKTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldF9wZ2RhdF9wZXJjcHVfdGhyZXNob2xk KHBnZGF0LCBjYWxjdWxhdGVfcHJlc3N1cmVfdGhyZXNob2xkKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIC8qCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCogdm1zdGF0IGNvdW50ZXJzIGFyZSBub3QgcGVyZmVjdGx5IGFjY3VyYXRlIGFuZCB0aGUK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiBlc3RpbWF0ZWQgdmFsdWUg Zm9yIGNvdW50ZXJzIHN1Y2ggYXMgTlJfRlJFRV9QQUdFUwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAqIGNhbiBkZXZpYXRlIGZyb20gdGhlIHRydWUgdmFsdWUgYnkgbnJf b25saW5lX2NwdXMgKgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIHRo cmVzaG9sZC4gVG8gYXZvaWQgdGhlIHpvbmUgd2F0ZXJtYXJrcyBiZWluZwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIGJyZWFjaGVkIHdoaWxlIHVuZGVyIHByZXNzdXJl LCB3ZSByZWR1Y2UgdGhlIHBlci1jcHUKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgKiB2bXN0YXQgdGhyZXNob2xkIHdoaWxlIGtzd2FwZCBpcyBhd2FrZSBhbmQgcmVzdG9y ZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIHRoZW0gYmVmb3JlIGdv aW5nIGJhY2sgdG8gc2xlZXAuCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCovCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRfcGdkYXRfcGVyY3B1 X3RocmVzaG9sZChwZ2RhdCwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2FsY3VsYXRlX25vcm1hbF90 aHJlc2hvbGQpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2NoZWR1bGUo KTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldF9wZ2RhdF9wZXJjcHVf dGhyZXNob2xkKHBnZGF0LAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FsY3VsYXRlX3ByZXNzdXJlX3RocmVz aG9sZCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2UKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIHNjaGVkdWxlKCk7Cj4gwqAgwqAgwqAgwqB9IGVsc2Ugewo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKHJlbWFpbmluZykKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoGNvdW50X3ZtX2V2ZW50KEtTV0FQRF9MT1dfV01BUktfSElUX1FVSUNL TFkpOwo+IEBAIC0yNjIwLDYgKzI2MzIsMTIgQEAgc3RhdGljIHZvaWQga3N3YXBkX3RyeV90b19z bGVlcChzdHJ1Y3Qga3N3YXBkICprc3dhcGRfcCwgaW50IG9yZGVyLAo+IMKgIMKgIMKgIMKgZmlu aXNoX3dhaXQod2FpdF9oLCAmd2FpdCk7Cj4gwqB9Cj4KPiArc3RhdGljIHVuc2lnbmVkIGxvbmcg YmFsYW5jZV9tZW1fY2dyb3VwX3BnZGF0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1fY29udCwKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGludCBvcmRlcikKPiArewo+ICsgwqAgwqAgwqAgcmV0 dXJuIDA7Cj4gK30KPiArCj4gwqAvKgo+IMKgKiBUaGUgYmFja2dyb3VuZCBwYWdlb3V0IGRhZW1v biwgc3RhcnRlZCBhcyBhIGtlcm5lbCB0aHJlYWQKPiDCoCogZnJvbSB0aGUgaW5pdCBwcm9jZXNz Lgo+IEBAIC0yNjM5LDYgKzI2NTcsNyBAQCBpbnQga3N3YXBkKHZvaWQgKnApCj4gwqAgwqAgwqAg wqBpbnQgY2xhc3N6b25lX2lkeDsKPiDCoCDCoCDCoCDCoHN0cnVjdCBrc3dhcGQgKmtzd2FwZF9w ID0gKHN0cnVjdCBrc3dhcGQgKilwOwo+IMKgIMKgIMKgIMKgcGdfZGF0YV90ICpwZ2RhdCA9IGtz d2FwZF9wLT5rc3dhcGRfcGdkYXQ7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVt ID0ga3N3YXBkX3AtPmtzd2FwZF9tZW07Cj4gwqAgwqAgwqAgwqB3YWl0X3F1ZXVlX2hlYWRfdCAq d2FpdF9oID0gJmtzd2FwZF9wLT5rc3dhcGRfd2FpdDsKPiDCoCDCoCDCoCDCoHN0cnVjdCB0YXNr X3N0cnVjdCAqdHNrID0gY3VycmVudDsKPgo+IEBAIC0yNjQ5LDEwICsyNjY4LDEyIEBAIGludCBr c3dhcGQodm9pZCAqcCkKPgo+IMKgIMKgIMKgIMKgbG9ja2RlcF9zZXRfY3VycmVudF9yZWNsYWlt X3N0YXRlKEdGUF9LRVJORUwpOwo+Cj4gLSDCoCDCoCDCoCBCVUdfT04ocGdkYXQtPmtzd2FwZF93 YWl0ICE9IHdhaXRfaCk7Cj4gLSDCoCDCoCDCoCBjcHVtYXNrID0gY3B1bWFza19vZl9ub2RlKHBn ZGF0LT5ub2RlX2lkKTsKPiAtIMKgIMKgIMKgIGlmICghY3B1bWFza19lbXB0eShjcHVtYXNrKSkK PiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldF9jcHVzX2FsbG93ZWRfcHRyKHRzaywgY3B1bWFz ayk7Cj4gKyDCoCDCoCDCoCBpZiAoaXNfbm9kZV9rc3dhcGQoa3N3YXBkX3ApKSB7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBCVUdfT04ocGdkYXQtPmtzd2FwZF93YWl0ICE9IHdhaXRfaCk7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjcHVtYXNrID0gY3B1bWFza19vZl9ub2RlKHBnZGF0LT5u b2RlX2lkKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmICghY3B1bWFza19lbXB0eShjcHVt YXNrKSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldF9jcHVzX2FsbG93 ZWRfcHRyKHRzaywgY3B1bWFzayk7Cj4gKyDCoCDCoCDCoCB9Cj4gwqAgwqAgwqAgwqBjdXJyZW50 LT5yZWNsYWltX3N0YXRlID0gJnJlY2xhaW1fc3RhdGU7Cj4KPiDCoCDCoCDCoCDCoC8qCj4gQEAg LTI2NzcsMjQgKzI2OTgsMjkgQEAgaW50IGtzd2FwZCh2b2lkICpwKQo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgaW50IG5ld19jbGFzc3pvbmVfaWR4Owo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg aW50IHJldDsKPgo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV3X29yZGVyID0gcGdkYXQtPmtz d2FwZF9tYXhfb3JkZXI7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBuZXdfY2xhc3N6b25lX2lk eCA9IHBnZGF0LT5jbGFzc3pvbmVfaWR4Owo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgcGdkYXQt Pmtzd2FwZF9tYXhfb3JkZXIgPSAwOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgcGdkYXQtPmNs YXNzem9uZV9pZHggPSBNQVhfTlJfWk9ORVMgLSAxOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAg aWYgKG9yZGVyIDwgbmV3X29yZGVyIHx8IGNsYXNzem9uZV9pZHggPiBuZXdfY2xhc3N6b25lX2lk eCkgewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyoKPiAtIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiBEb24ndCBzbGVlcCBpZiBzb21lb25lIHdhbnRz IGEgbGFyZ2VyICdvcmRlcicKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg KiBhbGxvY2F0aW9uIG9yIGhhcyB0aWdoZXIgem9uZSBjb25zdHJhaW50cwo+IC0gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqLwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgb3JkZXIgPSBuZXdfb3JkZXI7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBjbGFzc3pvbmVfaWR4ID0gbmV3X2NsYXNzem9uZV9pZHg7Cj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCB9IGVsc2Ugewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg a3N3YXBkX3RyeV90b19zbGVlcChrc3dhcGRfcCwgb3JkZXIsIGNsYXNzem9uZV9pZHgpOwo+IC0g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgb3JkZXIgPSBwZ2RhdC0+a3N3YXBkX21h eF9vcmRlcjsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNsYXNzem9uZV9p ZHggPSBwZ2RhdC0+Y2xhc3N6b25lX2lkeDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChp c19ub2RlX2tzd2FwZChrc3dhcGRfcCkpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIG5ld19vcmRlciA9IHBnZGF0LT5rc3dhcGRfbWF4X29yZGVyOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV3X2NsYXNzem9uZV9pZHggPSBwZ2RhdC0+Y2xhc3N6 b25lX2lkeDsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHBnZGF0LT5rc3dh cGRfbWF4X29yZGVyID0gMDsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHBn ZGF0LT5jbGFzc3pvbmVfaWR4ID0gTUFYX05SX1pPTkVTIC0gMTsKPiAtIMKgIMKgIMKgIMKgIMKg IMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChvcmRlciA8 IG5ld19vcmRlciB8fAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgY2xhc3N6b25lX2lkeCA+IG5ld19jbGFzc3pvbmVfaWR4KSB7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvKgo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIERvbid0IHNsZWVw IGlmIHNvbWVvbmUgd2FudHMgYSBsYXJnZXIgJ29yZGVyJwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIGFsbG9jYXRpb24gb3IgaGFzIHRpZ2hlciB6 b25lIGNvbnN0cmFpbnRzCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCovCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBvcmRlciA9IG5ld19vcmRlcjsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGNsYXNzem9uZV9pZHggPSBuZXdfY2xhc3N6b25lX2lkeDsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBrc3dhcGRfdHJ5X3RvX3NsZWVwKGtzd2Fw ZF9wLCBvcmRlciwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNsYXNzem9uZV9pZHgpOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgb3JkZXIgPSBwZ2RhdC0+ a3N3YXBkX21heF9vcmRlcjsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGNsYXNzem9uZV9pZHggPSBwZ2RhdC0+Y2xhc3N6b25lX2lkeDsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBnZGF0LT5rc3dhcGRfbWF4 X29yZGVyID0gMDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIHBnZGF0LT5jbGFzc3pvbmVfaWR4ID0gTUFYX05SX1pPTkVTIC0gMTsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxz ZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAga3N3YXBkX3RyeV90b19zbGVl cChrc3dhcGRfcCwgb3JkZXIsIGNsYXNzem9uZV9pZHgpOwo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqByZXQgPSB0cnlfdG9fZnJlZXplKCk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAo a3RocmVhZF9zaG91bGRfc3RvcCgpKQo+IEBAIC0yNzA1LDggKzI3MzEsMTMgQEAgaW50IGtzd2Fw ZCh2b2lkICpwKQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogYWZ0ZXIgcmV0dXJuaW5nIGZy b20gdGhlIHJlZnJpZ2VyYXRvcgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICovCj4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBpZiAoIXJldCkgewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgdHJhY2VfbW1fdm1zY2FuX2tzd2FwZF93YWtlKHBnZGF0LT5ub2RlX2lkLCBvcmRl cik7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBvcmRlciA9IGJhbGFuY2Vf cGdkYXQocGdkYXQsIG9yZGVyLCAmY2xhc3N6b25lX2lkeCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBpZiAoaXNfbm9kZV9rc3dhcGQoa3N3YXBkX3ApKSB7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0cmFjZV9tbV92bXNjYW5f a3N3YXBkX3dha2UocGdkYXQtPm5vZGVfaWQsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBvcmRlcik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBvcmRlciA9IGJhbGFuY2VfcGdkYXQocGdkYXQsIG9yZGVyLAo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgJmNsYXNzem9uZV9pZHgpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgfSBlbHNlCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBiYWxhbmNlX21lbV9jZ3JvdXBfcGdkYXQobWVtLCBvcmRlcik7Cj4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gwqAgwqAgwqAgwqB9Cj4gwqAgwqAgwqAgwqByZXR1cm4g MDsKPiBAQCAtMjg1MywzMCArMjg4NCw1MyBAQCBzdGF0aWMgaW50IF9fZGV2aW5pdCBjcHVfY2Fs bGJhY2soc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuZmIsCj4gwqAqIFRoaXMga3N3YXBkIHN0YXJ0 IGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJ5IGluaXQgYW5kIG5vZGUtaG90LWFkZC4KPiDCoCog T24gbm9kZS1ob3QtYWRkLCBrc3dhcGQgd2lsbCBtb3ZlZCB0byBwcm9wZXIgY3B1cyBpZiBjcHVz IGFyZSBob3QtYWRkZWQuCj4gwqAqLwo+IC1pbnQga3N3YXBkX3J1bihpbnQgbmlkKQo+ICtpbnQg a3N3YXBkX3J1bihpbnQgbmlkLCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtKQo+IMKgewo+IC0gwqAg wqAgwqAgcGdfZGF0YV90ICpwZ2RhdCA9IE5PREVfREFUQShuaWQpOwo+IMKgIMKgIMKgIMKgc3Ry dWN0IHRhc2tfc3RydWN0ICprc3dhcGRfdGhyOwo+ICsgwqAgwqAgwqAgcGdfZGF0YV90ICpwZ2Rh dCA9IE5VTEw7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3Qga3N3YXBkICprc3dhcGRfcDsKPiArIMKgIMKg IMKgIHN0YXRpYyBjaGFyIG5hbWVbVEFTS19DT01NX0xFTl07Cj4gKyDCoCDCoCDCoCBpbnQgbWVt Y2dfaWQ7Cj4gwqAgwqAgwqAgwqBpbnQgcmV0ID0gMDsKPgo+IC0gwqAgwqAgwqAgaWYgKHBnZGF0 LT5rc3dhcGRfd2FpdCkKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAwOwo+ICsgwqAg wqAgwqAgaWYgKCFtZW0pIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBnZGF0ID0gTk9ERV9E QVRBKG5pZCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGdkYXQtPmtzd2FwZF93YWl0 KQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIHJldDsKPiArIMKg IMKgIMKgIH0KPgo+IMKgIMKgIMKgIMKga3N3YXBkX3AgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qg a3N3YXBkKSwgR0ZQX0tFUk5FTCk7Cj4gwqAgwqAgwqAgwqBpZiAoIWtzd2FwZF9wKQo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuIC1FTk9NRU07Cj4KPiDCoCDCoCDCoCDCoGluaXRfd2Fp dHF1ZXVlX2hlYWQoJmtzd2FwZF9wLT5rc3dhcGRfd2FpdCk7Cj4gLSDCoCDCoCDCoCBwZ2RhdC0+ a3N3YXBkX3dhaXQgPSAma3N3YXBkX3AtPmtzd2FwZF93YWl0Owo+IC0gwqAgwqAgwqAga3N3YXBk X3AtPmtzd2FwZF9wZ2RhdCA9IHBnZGF0Owo+Cj4gLSDCoCDCoCDCoCBrc3dhcGRfdGhyID0ga3Ro cmVhZF9ydW4oa3N3YXBkLCBrc3dhcGRfcCwgImtzd2FwZCVkIiwgbmlkKTsKPiArIMKgIMKgIMKg IGlmICghbWVtKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwZ2RhdC0+a3N3YXBkX3dhaXQg PSAma3N3YXBkX3AtPmtzd2FwZF93YWl0Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAga3N3YXBk X3AtPmtzd2FwZF9wZ2RhdCA9IHBnZGF0Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc25wcmlu dGYobmFtZSwgVEFTS19DT01NX0xFTiwgImtzd2FwZF8lZCIsIG5pZCk7Cj4gKyDCoCDCoCDCoCB9 IGVsc2Ugewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWVtY2dfaWQgPSBtZW1fY2dyb3VwX2lu aXRfa3N3YXBkKG1lbSwga3N3YXBkX3ApOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCFt ZW1jZ19pZCkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAga2ZyZWUoa3N3 YXBkX3ApOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIHJldDsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNucHJp bnRmKG5hbWUsIFRBU0tfQ09NTV9MRU4sICJtZW1jZ18lZCIsIG1lbWNnX2lkKTsKPiArIMKgIMKg IMKgIH0KPiArCj4gKyDCoCDCoCDCoCBrc3dhcGRfdGhyID0ga3RocmVhZF9ydW4oa3N3YXBkLCBr c3dhcGRfcCwgbmFtZSk7Cj4gwqAgwqAgwqAgwqBpZiAoSVNfRVJSKGtzd2FwZF90aHIpKSB7Cj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBmYWlsdXJlIGF0IGJvb3QgaXMgZmF0YWwgKi8KPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJVR19PTihzeXN0ZW1fc3RhdGUgPT0gU1lTVEVNX0JPT1RJ TkcpOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnRrKCJGYWlsZWQgdG8gc3RhcnQga3N3 YXBkIG9uIG5vZGUgJWRcbiIsbmlkKTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBnZGF0LT5r c3dhcGRfd2FpdCA9IE5VTEw7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoIW1lbSkgewo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnRrKEtFUk5fRVJSICJGYWls ZWQgdG8gc3RhcnQga3N3YXBkIG9uIG5vZGUgJWRcbiIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBuaWQpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgcGdkYXQtPmtzd2FwZF93YWl0ID0gTlVMTDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0g ZWxzZSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwcmludGsoS0VSTl9F UlIgIkZhaWxlZCB0byBzdGFydCBrc3dhcGQgb24gbWVtY2cgJWRcbiIsCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtZW1jZ19pZCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBtZW1fY2dyb3VwX2NsZWFyX2tzd2FwZChtZW0pOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgfQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKga2ZyZWUoa3N3YXBkX3Ap Owo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0ID0gLTE7Cj4gwqAgwqAgwqAgwqB9IGVsc2UK PiBAQCAtMjg4NywxNiArMjk0MSwxOCBAQCBpbnQga3N3YXBkX3J1bihpbnQgbmlkKQo+IMKgLyoK PiDCoCogQ2FsbGVkIGJ5IG1lbW9yeSBob3RwbHVnIHdoZW4gYWxsIG1lbW9yeSBpbiBhIG5vZGUg aXMgb2ZmbGluZWQuCj4gwqAqLwo+IC12b2lkIGtzd2FwZF9zdG9wKGludCBuaWQpCj4gK3ZvaWQg a3N3YXBkX3N0b3AoaW50IG5pZCwgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbSkKPiDCoHsKPiDCoCDC oCDCoCDCoHN0cnVjdCB0YXNrX3N0cnVjdCAqa3N3YXBkX3RociA9IE5VTEw7Cj4gwqAgwqAgwqAg wqBzdHJ1Y3Qga3N3YXBkICprc3dhcGRfcCA9IE5VTEw7Cj4gwqAgwqAgwqAgwqB3YWl0X3F1ZXVl X2hlYWRfdCAqd2FpdDsKPgo+IC0gwqAgwqAgwqAgcGdfZGF0YV90ICpwZ2RhdCA9IE5PREVfREFU QShuaWQpOwo+IC0KPiDCoCDCoCDCoCDCoHNwaW5fbG9jaygma3N3YXBkc19zcGlubG9jayk7Cj4g LSDCoCDCoCDCoCB3YWl0ID0gcGdkYXQtPmtzd2FwZF93YWl0Owo+ICsgwqAgwqAgwqAgaWYgKCFt ZW0pCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB3YWl0ID0gTk9ERV9EQVRBKG5pZCktPmtzd2Fw ZF93YWl0Owo+ICsgwqAgwqAgwqAgZWxzZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgd2FpdCA9 IG1lbV9jZ3JvdXBfa3N3YXBkX3dhaXQobWVtKTsKPiArCj4gwqAgwqAgwqAgwqBpZiAod2FpdCkg ewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKga3N3YXBkX3AgPSBjb250YWluZXJfb2Yod2FpdCwg c3RydWN0IGtzd2FwZCwga3N3YXBkX3dhaXQpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKga3N3 YXBkX3RociA9IGtzd2FwZF9wLT5rc3dhcGRfdGFzazsKPiBAQCAtMjkxNiw3ICsyOTcyLDcgQEAg c3RhdGljIGludCBfX2luaXQga3N3YXBkX2luaXQodm9pZCkKPgo+IMKgIMKgIMKgIMKgc3dhcF9z ZXR1cCgpOwo+IMKgIMKgIMKgIMKgZm9yX2VhY2hfbm9kZV9zdGF0ZShuaWQsIE5fSElHSF9NRU1P UlkpCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBrc3dhcGRfcnVuKG5pZCk7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCBrc3dhcGRfcnVuKG5pZCwgTlVMTCk7Cj4gwqAgwqAgwqAgwqBob3RjcHVf bm90aWZpZXIoY3B1X2NhbGxiYWNrLCAwKTsKPiDCoCDCoCDCoCDCoHJldHVybiAwOwo+IMKgfQo+ IC0tCj4gMS43LjMuMQo+Cj4gLS0KPiBUbyB1bnN1YnNjcmliZSwgc2VuZCBhIG1lc3NhZ2Ugd2l0 aCAndW5zdWJzY3JpYmUgbGludXgtbW0nIGluCj4gdGhlIGJvZHkgdG8gbWFqb3Jkb21vQGt2YWNr Lm9yZy4gwqBGb3IgbW9yZSBpbmZvIG9uIExpbnV4IE1NLAo+IHNlZTogaHR0cDovL3d3dy5saW51 eC1tbS5vcmcvIC4KPiBGaWdodCB1bmZhaXIgdGVsZWNvbSBpbnRlcm5ldCBjaGFyZ2VzIGluIENh bmFkYTogc2lnbiBodHRwOi8vc3RvcHRoZW1ldGVyLmNhLwo+IERvbid0IGVtYWlsOiA8YSBocmVm PW1haWx0bzoiZG9udEBrdmFjay5vcmciPiBlbWFpbEBrdmFjay5vcmcgPC9hPgo+Cg== -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: email@kvack.org