From mboxrd@z Thu Jan 1 00:00:00 1970 From: Evgeniy Polyakov Subject: Re: [1/1] OSF: pom-ng - linux-2.6. Date: Wed, 08 Dec 2004 14:02:33 +0300 Message-ID: <1102503753.3363.50.camel@uganda> References: <1102503533.3363.48.camel@uganda> Reply-To: johnpol@2ka.mipt.ru Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-piSAeIpR0rq4QTpdO2s7" Cc: Harald Welte , Patrick McHardy Return-path: To: netfilter-devel@lists.netfilter.org In-Reply-To: <1102503533.3363.48.camel@uganda> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: netfilter-devel-bounces@lists.netfilter.org Errors-To: netfilter-devel-bounces@lists.netfilter.org List-Id: netfilter-devel.vger.kernel.org --=-piSAeIpR0rq4QTpdO2s7 Content-Type: multipart/mixed; boundary="=-jTeYbdCnYz+oInmTU0b0" --=-jTeYbdCnYz+oInmTU0b0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Wed, 2004-12-08 at 13:58 +0300, Evgeniy Polyakov wrote: > Since OSF originally was created in 2.5 environment=20 > it is strange not to have 2.6 support for OSF. > This(similar) patch was sent some time ago but was lost. > Please apply. >=20 > Signed-off-by: Evgeniy Polyakov My dear hands, please contact my brain before doing anything. Thanks. Proper patch attached. --=20 Evgeniy Polyakov Crash is better than data corruption -- Arthur Grabowski --=-jTeYbdCnYz+oInmTU0b0 Content-Disposition: attachment; filename=pom.diff Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=pom.diff; charset=KOI8-R ZGlmZiAtTnJ1IHBhdGNoLW8tbWF0aWMtbmctMjAwNDA2MjEtb3JpZy9vc2YvaW5mbyBwYXRjaC1v LW1hdGljLW5nLTIwMDQwNjIxL29zZi9pbmZvDQotLS0gcGF0Y2gtby1tYXRpYy1uZy0yMDA0MDYy MS1vcmlnL29zZi9pbmZvCTIwMDQtMTItMDggMTM6NDM6NDguODI4NDE3MTI4ICswMzAwDQorKysg cGF0Y2gtby1tYXRpYy1uZy0yMDA0MDYyMS9vc2YvaW5mbwkyMDA0LTEyLTA4IDEzOjQ5OjQxLjA0 MDg3MjY5NiArMDMwMA0KQEAgLTEsMyArMSwyIEBADQogQXV0aG9yOiBFdmdlbml5IFBvbHlha292 IDxqb2hucG9sQDJrYS5taXB0LnJ1Pg0KIFJlcG9zaXRvcnk6IGJhc2UNCi1SZXF1aXJlczogbGlu dXggPCAyLjYuMA0KZGlmZiAtTnJ1IHBhdGNoLW8tbWF0aWMtbmctMjAwNDA2MjEtb3JpZy9vc2Yv bGludXgtMi42L2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjQvaXB0X29zZi5oIHBhdGNoLW8t bWF0aWMtbmctMjAwNDA2MjEvb3NmL2xpbnV4LTIuNi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9p cHY0L2lwdF9vc2YuaA0KLS0tIHBhdGNoLW8tbWF0aWMtbmctMjAwNDA2MjEtb3JpZy9vc2YvbGlu dXgtMi42L2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjQvaXB0X29zZi5oCTE5NzAtMDEtMDEg MDM6MDA6MDAuMDAwMDAwMDAwICswMzAwDQorKysgcGF0Y2gtby1tYXRpYy1uZy0yMDA0MDYyMS9v c2YvbGludXgtMi42L2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjQvaXB0X29zZi5oCTIwMDQt MDMtMDEgMDA6MTk6NDcuMDAwMDAwMDAwICswMzAwDQpAQCAtMCwwICsxLDE0OCBAQA0KKy8qDQor ICogaXB0X29zZi5oDQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMgRXZnZW5peSBQb2x5YWtv diA8am9obnBvbEAya2EubWlwdC5ydT4NCisgKg0KKyAqDQorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCisgKiBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQ0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KKyAqIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQ0KKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlDQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCisgKi8NCisNCisjaWZuZGVmIF9JUFRfT1NG X0gNCisjZGVmaW5lIF9JUFRfT1NGX0gNCisNCisjZGVmaW5lIE1BWEdFTlJFTEVOCQkzMg0KKyNk ZWZpbmUgTUFYREVUTEVOCQk2NA0KKw0KKyNkZWZpbmUgSVBUX09TRl9HRU5SRQkJMQ0KKyNkZWZp bmUJSVBUX09TRl9TTUFSVAkJMg0KKyNkZWZpbmUgSVBUX09TRl9MT0cJCTQNCisjZGVmaW5lIElQ VF9PU0ZfTkVUTElOSwkJOA0KKw0KKyNkZWZpbmUgSVBUX09TRl9MT0dMRVZFTF9BTEwJMA0KKyNk ZWZpbmUgSVBUX09TRl9MT0dMRVZFTF9GSVJTVAkxDQorDQorI2luY2x1ZGUgPGxpbnV4L2xpc3Qu aD4NCisNCisjaWZuZGVmIF9fS0VSTkVMX18NCisjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPg0KKyNp bmNsdWRlIDxuZXRpbmV0L3RjcC5oPg0KKw0KK3N0cnVjdCBsaXN0X2hlYWQNCit7DQorCXN0cnVj dCBsaXN0X2hlYWQgKnByZXYsICpuZXh0Ow0KK307DQorI2VuZGlmDQorDQorc3RydWN0IGlwdF9v c2ZfaW5mbw0KK3sNCisJY2hhciAJCQlnZW5yZVtNQVhHRU5SRUxFTl07DQorCWludAkJCWxlbjsN CisJdW5zaWduZWQgbG9uZwkJZmxhZ3M7DQorCWludAkJCWxvZ2xldmVsOw0KKwlpbnQJCQlpbnZl cnQ7IC8qIFVOU1VQUE9SVEVEICovDQorfTsNCisNCitzdHJ1Y3Qgb3NmX3djDQorew0KKwljaGFy CQkJd2M7DQorCXVuc2lnbmVkIGxvbmcJCXZhbDsNCit9Ow0KKw0KKy8qIFRoaXMgc3RydWN0IHJl cHJlc2VudHMgSUFOQSBvcHRpb25zDQorICogaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50 cy90Y3AtcGFyYW1ldGVycw0KKyAqLw0KK3N0cnVjdCBvc2Zfb3B0DQorew0KKwl1bnNpZ25lZCBj aGFyCQlraW5kOw0KKwl1bnNpZ25lZCBjaGFyCQlsZW5ndGg7DQorCXN0cnVjdCBvc2Zfd2MJCXdj Ow0KK307DQorDQorc3RydWN0IG9zZl9maW5nZXINCit7DQorCXN0cnVjdCBsaXN0X2hlYWQJZmxp c3Q7DQorCXN0cnVjdCBvc2Zfd2MJCXdzczsNCisJdW5zaWduZWQgY2hhcgkJdHRsOw0KKwl1bnNp Z25lZCBjaGFyCQlkZjsNCisJdW5zaWduZWQgbG9uZwkJc3M7DQorCXVuc2lnbmVkIGNoYXIJCWdl bnJlW01BWEdFTlJFTEVOXTsNCisJdW5zaWduZWQgY2hhcgkJdmVyc2lvbltNQVhHRU5SRUxFTl0s IHN1YnR5cGVbTUFYR0VOUkVMRU5dOw0KKwkNCisJLyogTm90IG5lZWRlZCwgYnV0IGZvciBjb25z aXN0ZW5jeSB3aXRoIG9yaWdpbmFsIHRhYmxlIGZyb20gTWljaGFsIFphbGV3c2tpICovDQorCXVu c2lnbmVkIGNoYXIJCWRldGFpbHNbTUFYREVUTEVOXTsgDQorDQorCWludCAJCQlvcHRfbnVtOw0K KwlzdHJ1Y3Qgb3NmX29wdAkJb3B0W01BWF9JUE9QVExFTl07IC8qIEluIGNhc2UgaXQgaXMgYWxs IE5PUCBvciBFT0wgKi8NCisNCit9Ow0KKw0KK3N0cnVjdCBpcHRfb3NmX25sbXNnDQorew0KKwlz dHJ1Y3Qgb3NmX2ZpbmdlcglmOw0KKwlzdHJ1Y3QgaXBoZHIgCQlpcDsNCisJc3RydWN0IHRjcGhk ciAJCXRjcDsNCit9Ow0KKw0KKyNpZmRlZiBfX0tFUk5FTF9fDQorDQorLyogRGVmaW5lcyBmb3Ig SUFOQSBvcHRpb24ga2luZHMgKi8NCisNCisjZGVmaW5lIE9TRk9QVF9FT0wJCTAJLyogRW5kIG9m IG9wdGlvbnMgKi8NCisjZGVmaW5lIE9TRk9QVF9OT1AJCTEJLyogTk9QICovDQorI2RlZmluZSBP U0ZPUFRfTVNTCQkyCS8qIE1heGltdW0gc2VnbWVudCBzaXplICovDQorI2RlZmluZSBPU0ZPUFRf V1NPCQkzCS8qIFdpbmRvdyBzY2FsZSBvcHRpb24gKi8NCisjZGVmaW5lIE9TRk9QVF9TQUNLUAkJ NAkvKiBTQUNLIHBlcm1pdHRlZCAqLw0KKyNkZWZpbmUgT1NGT1BUX1NBQ0sJCTUJLyogU0FDSyAq Lw0KKyNkZWZpbmUgT1NGT1BUX0VDSE8JCTYJDQorI2RlZmluZSBPU0ZPUFRfRUNIT1JFUExZCTcN CisjZGVmaW5lIE9TRk9QVF9UUwkJOAkvKiBUaW1lc3RhbXAgb3B0aW9uICovDQorI2RlZmluZSBP U0ZPUFRfUE9DUAkJOQkvKiBQYXJ0aWFsIE9yZGVyIENvbm5lY3Rpb24gUGVybWl0dGVkICovDQor I2RlZmluZSBPU0ZPUFRfUE9TUAkJMTAJLyogUGFydGlhbCBPcmRlciBTZXJ2aWNlIFByb2ZpbGUg Ki8NCisvKiBPdGhlcnMgYXJlIG5vdCB1c2VkIGluIGN1cnJlbnQgT1NGICovDQorDQorc3RhdGlj IHN0cnVjdCBvc2Zfb3B0IElBTkFfb3B0c1tdID0gDQorew0KKwl7MCwgMSx9LA0KKwl7MSwgMSx9 LA0KKwl7MiwgNCx9LA0KKwl7MywgMyx9LA0KKwl7NCwgMix9LA0KKwl7NSwgMSAsfSwgLyogU0FD SyBsZW5ndGggaXMgbm90IGRlZmluZWQgKi8NCisJezYsIDYsfSwNCisJezcsIDYsfSwNCisJezgs IDEwLH0sDQorCXs5LCAyLH0sDQorCXsxMCwgMyx9LA0KKwl7MTEsIDEsfSwgLyogQ0M6IFN1cHBv c2UgMSAqLw0KKwl7MTIsIDEsfSwgLyogdGhlIHNhbWUgKi8NCisJezEzLCAxLH0sIC8qIGFuZCBo ZXJlIHRvbyAqLw0KKwl7MTQsIDMsfSwNCisJezE1LCAxLH0sIC8qIFRDUCBBbHRlcm5hdGUgQ2hl Y2tzdW0gRGF0YS4gTGVuZ3RoIGlzIG5vdCBkZWZpbmVkICovDQorCXsxNiwgMSx9LA0KKwl7MTcs IDEsfSwNCisJezE4LCAzLH0sDQorCXsxOSwgMTgsfSwNCisJezIwLCAxLH0sDQorCXsyMSwgMSx9 LA0KKwl7MjIsIDEsfSwNCisJezIzLCAxLH0sDQorCXsyNCwgMSx9LA0KKwl7MjUsIDEsfSwNCisJ ezI2LCAxLH0sDQorfTsNCisNCisjZW5kaWYgLyogX19LRVJORUxfXyAqLw0KKw0KKyNlbmRpZiAv KiBfSVBUX09TRl9IICovDQpkaWZmIC1OcnUgcGF0Y2gtby1tYXRpYy1uZy0yMDA0MDYyMS1vcmln L29zZi9saW51eC0yLjYvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9vc2YuYyBwYXRjaC1vLW1hdGlj LW5nLTIwMDQwNjIxL29zZi9saW51eC0yLjYvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9vc2YuYw0K LS0tIHBhdGNoLW8tbWF0aWMtbmctMjAwNDA2MjEtb3JpZy9vc2YvbGludXgtMi42L25ldC9pcHY0 L25ldGZpbHRlci9pcHRfb3NmLmMJMTk3MC0wMS0wMSAwMzowMDowMC4wMDAwMDAwMDAgKzAzMDAN CisrKyBwYXRjaC1vLW1hdGljLW5nLTIwMDQwNjIxL29zZi9saW51eC0yLjYvbmV0L2lwdjQvbmV0 ZmlsdGVyL2lwdF9vc2YuYwkyMDA0LTEyLTA4IDEzOjQ3OjU5LjEzMDM2NTQ0OCArMDMwMA0KQEAg LTAsMCArMSw4NjMgQEANCisvKg0KKyAqIGlwdF9vc2YuYw0KKyAqDQorICogQ29weXJpZ2h0IChj KSAyMDAzIEV2Z2VuaXkgUG9seWFrb3YgPGpvaG5wb2xAMmthLm1pcHQucnU+DQorICoNCisgKg0K KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5DQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAqIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv Zg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUNCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQorICov DQorDQorLyoNCisgKiBPUyBmaW5nZXJwcmludCBtYXRjaGluZyBtb2R1bGUuDQorICogSXQgc2lt cGx5IGNvbXBhcmVzIHZhcmlvdXMgcGFyYW1ldGVycyBmcm9tIFNZTiBwYWNrZXQgd2l0aA0KKyAq IHNvbWUgaGFyZGNvZGVkIG9uZXMuDQorICoNCisgKiBPcmlnaW5hbCB0YWJsZSB3YXMgY3JlYXRl ZCBieSBNaWNoYWwgWmFsZXdza2kgPGxjYW10dWZAY29yZWR1bXAuY3g+DQorICogZm9yIGhpcyBw MGYuDQorICovDQorDQorI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPg0KKyNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4NCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCisjaW5jbHVkZSA8bGludXgv c3RyaW5nLmg+DQorI2luY2x1ZGUgPGxpbnV4L3NtcC5oPg0KKyNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4NCisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+DQorI2luY2x1ZGUgPGxpbnV4L2ZpbGUu aD4NCisjaW5jbHVkZSA8bGludXgvaXAuaD4NCisjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPg0K KyNpbmNsdWRlIDxsaW51eC9mcy5oPg0KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQorI2luY2x1 ZGUgPGxpbnV4L3NwaW5sb2NrLmg+DQorI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+DQorI2luY2x1 ZGUgPGxpbnV4L2xpc3QuaD4NCisjaW5jbHVkZSA8bGludXgvaWYuaD4NCisNCisjaW5jbHVkZSA8 bmV0L3NvY2suaD4NCisjaW5jbHVkZSA8bmV0L2lwLmg+DQorDQorI2luY2x1ZGUgPGxpbnV4L25l dGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oPg0KKw0KKyNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXJf aXB2NC9pcHRfb3NmLmg+DQorDQorI2RlZmluZSBPU0ZfREVCVUcNCisNCisjaWZkZWYgT1NGX0RF QlVHDQorI2RlZmluZSBsb2coeC4uLikgCQlwcmludGsoS0VSTl9JTkZPICJpcHRfb3NmOiAiIHgp DQorI2RlZmluZSBsb2dhKHguLi4pIAkJcHJpbnRrKHgpDQorI2Vsc2UNCisjZGVmaW5lIGxvZyh4 Li4uKSAJCWRvIHt9IHdoaWxlKDApDQorI2RlZmluZSBsb2dhKHguLi4pIAkJZG8ge30gd2hpbGUo MCkNCisjZW5kaWYNCisNCisjZGVmaW5lIEZNQVRDSF9XUk9ORwkJMA0KKyNkZWZpbmUgRk1BVENI X09LCQkxDQorI2RlZmluZSBGTUFUQ0hfT1BUX1dST05HCTINCisNCisjZGVmaW5lIE9QVERFTAkJ CScsJw0KKyNkZWZpbmUgT1NGUERFTCAJCSc6Jw0KKyNkZWZpbmUgTUFYT1BUU1RSTEVOCQkxMjgN CisjZGVmaW5lIE9TRkZMVVNICQkiRkxVU0giDQorDQorc3RhdGljIHJ3bG9ja190IG9zZl9sb2Nr ID0gUldfTE9DS19VTkxPQ0tFRDsNCitzdGF0aWMgc3BpbmxvY2tfdCBpcHRfb3NmX25ldGxpbmtf bG9jayA9IFNQSU5fTE9DS19VTkxPQ0tFRDsNCitzdGF0aWMgc3RydWN0IGxpc3RfaGVhZAlmaW5n ZXJfbGlzdDsJDQorc3RhdGljIGludCBtYXRjaChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqLCBjb25z dCBzdHJ1Y3QgbmV0X2RldmljZSAqLCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqLA0KKwkJICAg ICAgY29uc3Qgdm9pZCAqLCBpbnQsIA0KKwkJICAgICAgaW50ICopOw0KK3N0YXRpYyBpbnQgY2hl Y2tlbnRyeShjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCBpcHRfaXAgKiwgdm9pZCAqLA0KKwkJ ICAgICAgICAgICB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7DQorDQorc3RhdGljIHVuc2ln bmVkIGxvbmcgc2VxLCBpcHRfb3NmX2dyb3VwcyA9IDE7DQorc3RhdGljIHN0cnVjdCBzb2NrICpu dHM7DQorDQorc3RhdGljIHN0cnVjdCBpcHRfbWF0Y2ggb3NmX21hdGNoID0gDQoreyANCisJeyBO VUxMLCBOVUxMIH0sIA0KKwkib3NmIiwgDQorCSZtYXRjaCwgDQorCSZjaGVja2VudHJ5LCANCisJ TlVMTCwgDQorCVRISVNfTU9EVUxFIA0KK307DQorDQorc3RhdGljIHZvaWQgaXB0X29zZl9ubHNl bmQoc3RydWN0IG9zZl9maW5nZXIgKmYsIGNvbnN0IHN0cnVjdCBza19idWZmICpzaykNCit7DQor CXVuc2lnbmVkIGludCBzaXplOw0KKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KKwlzdHJ1Y3QgaXB0 X29zZl9ubG1zZyAqZGF0YTsNCisJc3RydWN0IG5sbXNnaGRyICpubGg7DQorDQorCXNpemUgPSBO TE1TR19TUEFDRShzaXplb2Yoc3RydWN0IGlwdF9vc2Zfbmxtc2cpKTsNCisNCisJc2tiID0gYWxs b2Nfc2tiKHNpemUsIEdGUF9BVE9NSUMpOw0KKwlpZiAoIXNrYikNCisJew0KKwkJbG9nKCJza2Jf YWxsb2MoKSBmYWlsZWQuXG4iKTsNCisJCXJldHVybjsNCisJfQ0KKwkNCisJbmxoID0gTkxNU0df UFVUKHNrYiwgMCwgc2VxKyssIE5MTVNHX0RPTkUsIHNpemUgLSBzaXplb2YoKm5saCkpOw0KKwkN CisJZGF0YSA9IChzdHJ1Y3QgaXB0X29zZl9ubG1zZyAqKU5MTVNHX0RBVEEobmxoKTsNCisNCisJ bWVtY3B5KCZkYXRhLT5mLCBmLCBzaXplb2Yoc3RydWN0IG9zZl9maW5nZXIpKTsNCisJbWVtY3B5 KCZkYXRhLT5pcCwgc2stPm5oLmlwaCwgc2l6ZW9mKHN0cnVjdCBpcGhkcikpOw0KKwltZW1jcHko JmRhdGEtPnRjcCwgKHN0cnVjdCB0Y3BoZHIgKikoKHVfaW50MzJfdCAqKXNrLT5uaC5pcGggKyBz ay0+bmguaXBoLT5paGwpLCBzaXplb2Yoc3RydWN0IHRjcGhkcikpOw0KKw0KKwlORVRMSU5LX0NC KHNrYikuZHN0X2dyb3VwcyA9IGlwdF9vc2ZfZ3JvdXBzOw0KKwluZXRsaW5rX2Jyb2FkY2FzdChu dHMsIHNrYiwgMCwgaXB0X29zZl9ncm91cHMsIEdGUF9BVE9NSUMpOw0KKw0KK25sbXNnX2ZhaWx1 cmU6DQorCXJldHVybjsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgc21hcnRfZGVjKGNvbnN0 IHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHVuc2lnbmVkIGNoYXIg Zl90dGwpDQorew0KKwlzdHJ1Y3QgaXBoZHIgKmlwID0gc2tiLT5uaC5pcGg7DQorDQorCWlmIChm bGFncyAmIElQVF9PU0ZfU01BUlQpDQorCXsNCisJCXN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiA9 IGluX2Rldl9nZXQoc2tiLT5kZXYpOw0KKw0KKwkJZm9yX2lmYShpbl9kZXYpDQorCQl7DQorCQkJ aWYgKGluZXRfaWZhX21hdGNoKGlwLT5zYWRkciwgaWZhKSkNCisJCQl7DQorCQkJCWluX2Rldl9w dXQoaW5fZGV2KTsNCisJCQkJcmV0dXJuIChpcC0+dHRsID09IGZfdHRsKTsNCisJCQl9DQorCQl9 DQorCQllbmRmb3JfaWZhKGluX2Rldik7DQorCQkNCisJCWluX2Rldl9wdXQoaW5fZGV2KTsNCisJ CXJldHVybiAoaXAtPnR0bCA8PSBmX3R0bCk7DQorCX0NCisJZWxzZQ0KKwkJcmV0dXJuIChpcC0+ dHRsID09IGZfdHRsKTsNCit9DQorDQorc3RhdGljIGludA0KK21hdGNoKGNvbnN0IHN0cnVjdCBz a19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICppbiwgY29uc3Qgc3RydWN0IG5l dF9kZXZpY2UgKm91dCwNCisgICAgICBjb25zdCB2b2lkICptYXRjaGluZm8sIGludCBvZmZzZXQs DQorICAgICAgaW50ICpob3Rkcm9wKQ0KK3sNCisJc3RydWN0IGlwdF9vc2ZfaW5mbyAqaW5mbyA9 IChzdHJ1Y3QgaXB0X29zZl9pbmZvICopbWF0Y2hpbmZvOw0KKwlzdHJ1Y3QgaXBoZHIgKmlwID0g c2tiLT5uaC5pcGg7DQorCXN0cnVjdCB0Y3BoZHIgKnRjcDsNCisJaW50IGZtYXRjaCA9IEZNQVRD SF9XUk9ORywgZmNvdW50ID0gMDsNCisJdW5zaWduZWQgbG9uZyB0b3RsZW4sIG9wdHNpemUgPSAw LCB3aW5kb3c7DQorCXVuc2lnbmVkIGNoYXIgZGYsICpvcHRwID0gTlVMTCwgKl9vcHRwID0gTlVM TDsNCisJY2hhciBjaGVja19XU1MgPSAwOw0KKwlzdHJ1Y3QgbGlzdF9oZWFkICplbnQ7DQorCXN0 cnVjdCBvc2ZfZmluZ2VyICpmOw0KKw0KKwlpZiAoIWlwIHx8ICFpbmZvKQ0KKwkJcmV0dXJuIDA7 DQorCQkJCQ0KKwl0Y3AgPSAoc3RydWN0IHRjcGhkciAqKSgodV9pbnQzMl90ICopaXAgKyBpcC0+ aWhsKTsNCisNCisJaWYgKCF0Y3AtPnN5bikNCisJCXJldHVybiAwOw0KKwkNCisJdG90bGVuID0g bnRvaHMoaXAtPnRvdF9sZW4pOw0KKwlkZiA9ICgobnRvaHMoaXAtPmZyYWdfb2ZmKSAmIElQX0RG KT8xOjApOw0KKwl3aW5kb3cgPSBudG9ocyh0Y3AtPndpbmRvdyk7DQorCQ0KKwlpZiAodGNwLT5k b2ZmKjQgPiBzaXplb2Yoc3RydWN0IHRjcGhkcikpDQorCXsNCisJCV9vcHRwID0gb3B0cCA9IChj aGFyICopKHRjcCsxKTsNCisJCW9wdHNpemUgPSB0Y3AtPmRvZmYqNCAtIHNpemVvZihzdHJ1Y3Qg dGNwaGRyKTsNCisJfQ0KKw0KKwkNCisJLyogQWN0dWFsbHkgd2UgY2FuIGNyZWF0ZSBoYXNoL3Rh YmxlIG9mIGFsbCBnZW5yZXMgYW5kIHNlYXJjaA0KKwkgKiBvbmx5IGluIGFwcHJvcHJpYXRlIHBh cnQsIGJ1dCBoZXJlIGlzIGluaXRpYWwgdmFyaWFudCwNCisJICogc28gd2lsbCB1c2Ugc2xvdyBw YXRoLg0KKwkgKi8NCisJcmVhZF9sb2NrKCZvc2ZfbG9jayk7DQorCWxpc3RfZm9yX2VhY2goZW50 LCAmZmluZ2VyX2xpc3QpDQorCXsNCisJCWYgPSBsaXN0X2VudHJ5KGVudCwgc3RydWN0IG9zZl9m aW5nZXIsIGZsaXN0KTsNCisJDQorCQlpZiAoIShpbmZvLT5mbGFncyAmIElQVF9PU0ZfTE9HKSAm JiBzdHJjbXAoaW5mby0+Z2VucmUsIGYtPmdlbnJlKSkgDQorCQkJY29udGludWU7DQorDQorCQlv cHRwID0gX29wdHA7DQorCQlmbWF0Y2ggPSBGTUFUQ0hfV1JPTkc7DQorDQorCQlpZiAodG90bGVu ID09IGYtPnNzICYmIGRmID09IGYtPmRmICYmIA0KKwkJCXNtYXJ0X2RlYyhza2IsIGluZm8tPmZs YWdzLCBmLT50dGwpKQ0KKwkJew0KKwkJCXVuc2lnbmVkIGxvbmcgZm9wdHNpemU7DQorCQkJaW50 IG9wdG51bTsNCisJCQl1bnNpZ25lZCBzaG9ydCBtc3MgPSAwOw0KKw0KKwkJCWNoZWNrX1dTUyA9 IDA7DQorDQorCQkJc3dpdGNoIChmLT53c3Mud2MpDQorCQkJew0KKwkJCQljYXNlIDA6CSAgY2hl Y2tfV1NTID0gMDsgYnJlYWs7DQorCQkJCWNhc2UgJ1MnOiBjaGVja19XU1MgPSAxOyBicmVhazsN CisJCQkJY2FzZSAnVCc6IGNoZWNrX1dTUyA9IDI7IGJyZWFrOw0KKwkJCQljYXNlICclJzogY2hl Y2tfV1NTID0gMzsgYnJlYWs7DQorCQkJCWRlZmF1bHQ6IGxvZygiV3JvbmcgZmluZ2VycHJpbnQg d3NzLndjPSVkLCAlcyAtICVzXG4iLCANCisJCQkJCQkJIGYtPndzcy53YywgZi0+Z2VucmUsIGYt PmRldGFpbHMpOw0KKwkJCQkJIGNoZWNrX1dTUyA9IDQ7DQorCQkJCQkgYnJlYWs7DQorCQkJfQ0K KwkJCWlmIChjaGVja19XU1MgPT0gNCkNCisJCQkJY29udGludWU7DQorDQorCQkJLyogQ2hlY2sg b3B0aW9ucyAqLw0KKw0KKwkJCWZvcHRzaXplID0gMDsNCisJCQlmb3IgKG9wdG51bT0wOyBvcHRu dW08Zi0+b3B0X251bTsgKytvcHRudW0pDQorCQkJCWZvcHRzaXplICs9IGYtPm9wdFtvcHRudW1d Lmxlbmd0aDsNCisNCisJCQkJDQorCQkJaWYgKGZvcHRzaXplID4gTUFYX0lQT1BUTEVOIHx8IG9w dHNpemUgPiBNQVhfSVBPUFRMRU4gfHwgb3B0c2l6ZSAhPSBmb3B0c2l6ZSkNCisJCQkJY29udGlu dWU7DQorDQorCQkJaWYgKCFvcHRwKQ0KKwkJCXsNCisJCQkJZm1hdGNoID0gRk1BVENIX09LOw0K KwkJCQlsb2dhKCJcdFlFUCA6IG1hdGNoaW5nIHdpdGhvdXQgb3B0aW9ucy5cbiIpOw0KKwkJCQlp ZiAoKGluZm8tPmZsYWdzICYgSVBUX09TRl9MT0cpICYmIA0KKwkJCQkJaW5mby0+bG9nbGV2ZWwg PT0gSVBUX09TRl9MT0dMRVZFTF9GSVJTVCkNCisJCQkJCWJyZWFrOw0KKwkJCQllbHNlDQorCQkJ CQljb250aW51ZTsNCisJCQl9DQorCQkJDQorDQorCQkJZm9yIChvcHRudW09MDsgb3B0bnVtPGYt Pm9wdF9udW07ICsrb3B0bnVtKQ0KKwkJCXsNCisJCQkJaWYgKGYtPm9wdFtvcHRudW1dLmtpbmQg PT0gKCpvcHRwKSkgDQorCQkJCXsNCisJCQkJCXVuc2lnbmVkIGNoYXIgbGVuID0gZi0+b3B0W29w dG51bV0ubGVuZ3RoOw0KKwkJCQkJdW5zaWduZWQgY2hhciAqb3B0ZW5kID0gb3B0cCArIGxlbjsN CisJCQkJCWludCBsb29wX2NvbnQgPSAwOw0KKw0KKwkJCQkJZm1hdGNoID0gRk1BVENIX09LOw0K Kw0KKw0KKwkJCQkJc3dpdGNoICgqb3B0cCkNCisJCQkJCXsNCisJCQkJCQljYXNlIE9TRk9QVF9N U1M6DQorCQkJCQkJCW1zcyA9IG50b2hzKCoodW5zaWduZWQgc2hvcnQgKikob3B0cCsyKSk7DQor CQkJCQkJCWJyZWFrOw0KKwkJCQkJCWNhc2UgT1NGT1BUX1RTOg0KKwkJCQkJCQlsb29wX2NvbnQg PSAxOw0KKwkJCQkJCQlicmVhazsNCisJCQkJCX0NCisJCQkJCQ0KKwkJCQkJaWYgKGxvb3BfY29u dCkNCisJCQkJCXsNCisJCQkJCQlvcHRwID0gb3B0ZW5kOw0KKwkJCQkJCWNvbnRpbnVlOw0KKwkJ CQkJfQ0KKwkJCQkJDQorCQkJCQlpZiAobGVuICE9IDEpDQorCQkJCQl7DQorCQkJCQkJLyogU2tp cCBraW5kIGFuZCBsZW5ndGggZmllbGRzKi8NCisJCQkJCQlvcHRwICs9IDI7IA0KKw0KKwkJCQkJ CWlmIChmLT5vcHRbb3B0bnVtXS53Yy52YWwgIT0gMCkNCisJCQkJCQl7DQorCQkJCQkJCXVuc2ln bmVkIGxvbmcgdG1wID0gMDsNCisJCQkJCQkJDQorCQkJCQkJCS8qIEhtbW0uLi4gSXQgbG9va3Mg YSBiaXQgdWdseS4gOikgKi8NCisJCQkJCQkJbWVtY3B5KCZ0bXAsIG9wdHAsIA0KKwkJCQkJCQkJ KGxlbiA+IHNpemVvZih1bnNpZ25lZCBsb25nKT8NCisJCQkJCQkJCSAJc2l6ZW9mKHVuc2lnbmVk IGxvbmcpOmxlbikpOw0KKwkJCQkJCQkvKiAyICsgMjogb3B0bGVuKDIgYnl0ZXMpICsgDQorCQkJ CQkJCSAqIAlraW5kKDEgYnl0ZSkgKyBsZW5ndGgoMSBieXRlKSAqLw0KKwkJCQkJCQlpZiAobGVu ID09IDQpIA0KKwkJCQkJCQkJdG1wID0gbnRvaHModG1wKTsNCisJCQkJCQkJZWxzZQ0KKwkJCQkJ CQkJdG1wID0gbnRvaGwodG1wKTsNCisNCisJCQkJCQkJaWYgKGYtPm9wdFtvcHRudW1dLndjLndj ID09ICclJykNCisJCQkJCQkJew0KKwkJCQkJCQkJaWYgKCh0bXAgJSBmLT5vcHRbb3B0bnVtXS53 Yy52YWwpICE9IDApDQorCQkJCQkJCQkJZm1hdGNoID0gRk1BVENIX09QVF9XUk9ORzsNCisJCQkJ CQkJfQ0KKwkJCQkJCQllbHNlIGlmICh0bXAgIT0gZi0+b3B0W29wdG51bV0ud2MudmFsKQ0KKwkJ CQkJCQkJZm1hdGNoID0gRk1BVENIX09QVF9XUk9ORzsNCisJCQkJCQl9DQorCQkJCQl9DQorDQor CQkJCQlvcHRwID0gb3B0ZW5kOw0KKwkJCQl9DQorCQkJCWVsc2UNCisJCQkJCWZtYXRjaCA9IEZN QVRDSF9PUFRfV1JPTkc7DQorDQorCQkJCWlmIChmbWF0Y2ggIT0gRk1BVENIX09LKQ0KKwkJCQkJ YnJlYWs7DQorCQkJfQ0KKw0KKwkJCWlmIChmbWF0Y2ggIT0gRk1BVENIX09QVF9XUk9ORykNCisJ CQl7DQorCQkJCWZtYXRjaCA9IEZNQVRDSF9XUk9ORzsNCisNCisJCQkJc3dpdGNoIChjaGVja19X U1MpDQorCQkJCXsNCisJCQkJCWNhc2UgMDoNCisJCQkJCQlpZiAoZi0+d3NzLnZhbCA9PSAwIHx8 IHdpbmRvdyA9PSBmLT53c3MudmFsKQ0KKwkJCQkJCQlmbWF0Y2ggPSBGTUFUQ0hfT0s7DQorCQkJ CQkJYnJlYWs7DQorCQkJCQljYXNlIDE6IC8qIE1TUyAqLw0KKy8qIEx1cmtlZCBpbiBPcGVuQlNE ICovDQorI2RlZmluZSBTTUFSVF9NU1MJMTQ2MA0KKwkJCQkJCWlmICh3aW5kb3cgPT0gZi0+d3Nz LnZhbCptc3MgfHwgDQorCQkJCQkJCXdpbmRvdyA9PSBmLT53c3MudmFsKlNNQVJUX01TUykNCisJ CQkJCQkJZm1hdGNoID0gRk1BVENIX09LOw0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJY2FzZSAyOiAv KiBNVFUgKi8NCisJCQkJCQlpZiAod2luZG93ID09IGYtPndzcy52YWwqKG1zcys0MCkgfHwNCisJ CQkJCQkJd2luZG93ID09IGYtPndzcy52YWwqKFNNQVJUX01TUys0MCkpDQorCQkJCQkJCWZtYXRj aCA9IEZNQVRDSF9PSzsNCisJCQkJCQlicmVhazsNCisJCQkJCWNhc2UgMzogLyogTU9EICovDQor CQkJCQkJaWYgKCh3aW5kb3cgJSBmLT53c3MudmFsKSA9PSAwKQ0KKwkJCQkJCQlmbWF0Y2ggPSBG TUFUQ0hfT0s7DQorCQkJCQkJYnJlYWs7DQorCQkJCX0NCisJCQl9DQorCQkJCQkNCisNCisJCQlp ZiAoZm1hdGNoID09IEZNQVRDSF9PSykNCisJCQl7DQorCQkJCWZjb3VudCsrOw0KKwkJCQlsb2co IiVzIFslczolczolc10gOiAldS4ldS4ldS4ldToldSAtPiAldS4ldS4ldS4ldToldSBob3BzPSVk XG4iLCANCisJCQkJCWYtPmdlbnJlLCBmLT52ZXJzaW9uLA0KKwkJCQkJZi0+c3VidHlwZSwgZi0+ ZGV0YWlscywNCisJCQkJCU5JUFFVQUQoaXAtPnNhZGRyKSwgbnRvaHModGNwLT5zb3VyY2UpLA0K KwkJCQkJTklQUVVBRChpcC0+ZGFkZHIpLCBudG9ocyh0Y3AtPmRlc3QpLA0KKwkJCQkJZi0+dHRs IC0gaXAtPnR0bCk7DQorCQkJCWlmIChpbmZvLT5mbGFncyAmIElQVF9PU0ZfTkVUTElOSykNCisJ CQkJew0KKwkJCQkJc3Bpbl9sb2NrX2JoKCZpcHRfb3NmX25ldGxpbmtfbG9jayk7DQorCQkJCQlp cHRfb3NmX25sc2VuZChmLCBza2IpOw0KKwkJCQkJc3Bpbl91bmxvY2tfYmgoJmlwdF9vc2ZfbmV0 bGlua19sb2NrKTsNCisJCQkJfQ0KKwkJCQlpZiAoKGluZm8tPmZsYWdzICYgSVBUX09TRl9MT0cp ICYmIA0KKwkJCQkJaW5mby0+bG9nbGV2ZWwgPT0gSVBUX09TRl9MT0dMRVZFTF9GSVJTVCkNCisJ CQkJCWJyZWFrOw0KKwkJCX0NCisJCX0NCisJfQ0KKwlpZiAoIWZjb3VudCAmJiAoaW5mby0+Zmxh Z3MgJiAoSVBUX09TRl9MT0cgfCBJUFRfT1NGX05FVExJTkspKSkNCisJew0KKwkJdW5zaWduZWQg Y2hhciBvcHRbNCAqIDE1IC0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpXTsNCisJCXVuc2lnbmVkIGlu dCBpLCBvcHRzaXplOw0KKwkJc3RydWN0IG9zZl9maW5nZXIgZmc7DQorDQorCQltZW1zZXQoJmZn LCAwLCBzaXplb2YoZmcpKTsNCisNCisJCWlmICgoaW5mby0+ZmxhZ3MgJiBJUFRfT1NGX0xPRykp DQorCQkJbG9nKCJVbmtub3duOiAlbHU6JWQ6JWQ6JWx1OiIsIHdpbmRvdywgaXAtPnR0bCwgZGYs IHRvdGxlbik7DQorCQlpZiAob3B0cCkNCisJCXsNCisJCQlvcHRzaXplID0gdGNwLT5kb2ZmICog NCAtIHNpemVvZihzdHJ1Y3QgdGNwaGRyKTsNCisJCQlpZiAoc2tiX2NvcHlfYml0cyhza2IsIGlw LT5paGwqNCArIHNpemVvZihzdHJ1Y3QgdGNwaGRyKSwNCisJCQkJCSAgb3B0LCBvcHRzaXplKSA8 IDApDQorCQkJew0KKwkJCQlpZiAoaW5mby0+ZmxhZ3MgJiBJUFRfT1NGX0xPRykNCisJCQkJCWxv Z2EoIlRSVU5DQVRFRCIpOw0KKwkJCQlpZiAoaW5mby0+ZmxhZ3MgJiBJUFRfT1NGX05FVExJTksp DQorCQkJCQlzdHJjcHkoZmcuZGV0YWlscywgIlRSVU5DQVRFRCIpOw0KKwkJCX0NCisJCQllbHNl DQorCQkJew0KKwkJCQlmb3IgKGkgPSAwOyBpIDwgb3B0c2l6ZTsgaSsrKQ0KKwkJCQl7DQorCQkJ CQlpZiAoaW5mby0+ZmxhZ3MgJiBJUFRfT1NGX0xPRykNCisJCQkJCQlsb2dhKCIlMDJYIiwgb3B0 W2ldKTsNCisJCQkJfQ0KKwkJCQlpZiAoaW5mby0+ZmxhZ3MgJiBJUFRfT1NGX05FVExJTkspDQor CQkJCQltZW1jcHkoZmcuZGV0YWlscywgb3B0LCBNQVhERVRMRU4pOw0KKwkJCX0NCisJCX0NCisJ CWlmICgoaW5mby0+ZmxhZ3MgJiBJUFRfT1NGX0xPRykpDQorCQkJbG9nYSgiICV1LiV1LiV1LiV1 OiV1IC0+ICV1LiV1LiV1LiV1OiV1XG4iLCANCisJCQkJTklQUVVBRChpcC0+c2FkZHIpLCBudG9o cyh0Y3AtPnNvdXJjZSksDQorCQkJCU5JUFFVQUQoaXAtPmRhZGRyKSwgbnRvaHModGNwLT5kZXN0 KSk7DQorCQkNCisJCWlmIChpbmZvLT5mbGFncyAmIElQVF9PU0ZfTkVUTElOSykNCisJCXsNCisJ CQlmZy53c3MudmFsIAk9IHdpbmRvdzsNCisJCQlmZy50dGwJCT0gaXAtPnR0bDsNCisJCQlmZy5k ZgkJPSBkZjsNCisJCQlmZy5zcwkJPSB0b3RsZW47DQorCQkJc3RybmNweShmZy5nZW5yZSwgIlVu a25vd24iLCBNQVhHRU5SRUxFTik7DQorDQorCQkJc3Bpbl9sb2NrX2JoKCZpcHRfb3NmX25ldGxp bmtfbG9jayk7DQorCQkJaXB0X29zZl9ubHNlbmQoJmZnLCBza2IpOw0KKwkJCXNwaW5fdW5sb2Nr X2JoKCZpcHRfb3NmX25ldGxpbmtfbG9jayk7DQorCQl9DQorCX0NCisNCisJcmVhZF91bmxvY2so Jm9zZl9sb2NrKTsNCisNCisJcmV0dXJuIChmbWF0Y2ggPT0gRk1BVENIX09LKT8xOjA7DQorfQ0K Kw0KK3N0YXRpYyBpbnQNCitjaGVja2VudHJ5KGNvbnN0IGNoYXIgKnRhYmxlbmFtZSwNCisgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBpcHRfaXAgKmlwLA0KKyAgICAgICAgICAgdm9pZCAqbWF0Y2hp bmZvLA0KKyAgICAgICAgICAgdW5zaWduZWQgaW50IG1hdGNoc2l6ZSwNCisgICAgICAgICAgIHVu c2lnbmVkIGludCBob29rX21hc2spDQorew0KKyAgICAgICBpZiAobWF0Y2hzaXplICE9IElQVF9B TElHTihzaXplb2Yoc3RydWN0IGlwdF9vc2ZfaW5mbykpKQ0KKyAgICAgICAgICAgICAgIHJldHVy biAwOw0KKyAgICAgICBpZiAoaXAtPnByb3RvICE9IElQUFJPVE9fVENQKQ0KKwkgICAgICAgcmV0 dXJuIDA7DQorDQorICAgICAgIHJldHVybiAxOw0KK30NCisNCitzdGF0aWMgY2hhciAqIG9zZl9z dHJjaHIoY2hhciAqcHRyLCBjaGFyIGMpDQorew0KKwljaGFyICp0bXA7DQorDQorCXRtcCA9IHN0 cmNocihwdHIsIGMpOw0KKw0KKwl3aGlsZSAodG1wICYmIHRtcCsxICYmIGlzc3BhY2UoKih0bXAr MSkpKQ0KKwkJdG1wKys7DQorDQorCXJldHVybiB0bXA7DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3Qg b3NmX2ZpbmdlciAqIGZpbmdlcl9hbGxvYyh2b2lkKQ0KK3sNCisJc3RydWN0IG9zZl9maW5nZXIg KmY7DQorDQorCWYgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgb3NmX2ZpbmdlciksIEdGUF9LRVJO RUwpOw0KKwlpZiAoZikNCisJCW1lbXNldChmLCAwLCBzaXplb2Yoc3RydWN0IG9zZl9maW5nZXIp KTsNCisJDQorCXJldHVybiBmOw0KK30NCisNCitzdGF0aWMgdm9pZCBmaW5nZXJfZnJlZShzdHJ1 Y3Qgb3NmX2ZpbmdlciAqZikNCit7DQorCW1lbXNldChmLCAwLCBzaXplb2Yoc3RydWN0IG9zZl9m aW5nZXIpKTsNCisJa2ZyZWUoZik7DQorfQ0KKw0KKw0KK3N0YXRpYyB2b2lkIG9zZl9wYXJzZV9v cHQoc3RydWN0IG9zZl9vcHQgKm9wdCwgaW50ICpvcHRudW0sIGNoYXIgKm9idWYsIGludCBvbGVu KQ0KK3sNCisJaW50IGksIG9wOw0KKwljaGFyICpwdHIsIHdjOw0KKwl1bnNpZ25lZCBsb25nIHZh bDsNCisNCisJcHRyID0gJm9idWZbMF07DQorCWkgPSAwOw0KKwl3aGlsZSAocHRyICE9IE5VTEwg JiYgaSA8IG9sZW4pDQorCXsNCisJCXZhbCA9IDA7DQorCQlvcCA9IDA7DQorCQl3YyA9IDA7DQor CQlzd2l0Y2ggKG9idWZbaV0pDQorCQl7DQorCQkJY2FzZSAnTic6IA0KKwkJCQlvcCA9IE9TRk9Q VF9OT1A7DQorCQkJCXB0ciA9IG9zZl9zdHJjaHIoJm9idWZbaV0sIE9QVERFTCk7DQorCQkJCWlm IChwdHIpDQorCQkJCXsNCisJCQkJCSpwdHIgPSAnXDAnOw0KKwkJCQkJcHRyKys7DQorCQkJCQlp ICs9IChpbnQpKHB0ci0mb2J1ZltpXSk7DQorDQorCQkJCX0NCisJCQkJZWxzZQ0KKwkJCQkJaSsr Ow0KKwkJCQlicmVhazsNCisJCQljYXNlICdTJzogDQorCQkJCW9wID0gT1NGT1BUX1NBQ0tQOw0K KwkJCQlwdHIgPSBvc2Zfc3RyY2hyKCZvYnVmW2ldLCBPUFRERUwpOw0KKwkJCQlpZiAocHRyKQ0K KwkJCQl7DQorCQkJCQkqcHRyID0gJ1wwJzsNCisJCQkJCXB0cisrOw0KKwkJCQkJaSArPSAoaW50 KShwdHItJm9idWZbaV0pOw0KKw0KKwkJCQl9DQorCQkJCWVsc2UNCisJCQkJCWkrKzsNCisJCQkJ YnJlYWs7DQorCQkJY2FzZSAnVCc6IA0KKwkJCQlvcCA9IE9TRk9QVF9UUzsNCisJCQkJcHRyID0g b3NmX3N0cmNocigmb2J1ZltpXSwgT1BUREVMKTsNCisJCQkJaWYgKHB0cikNCisJCQkJew0KKwkJ CQkJKnB0ciA9ICdcMCc7DQorCQkJCQlwdHIrKzsNCisJCQkJCWkgKz0gKGludCkocHRyLSZvYnVm W2ldKTsNCisNCisJCQkJfQ0KKwkJCQllbHNlDQorCQkJCQlpKys7DQorCQkJCWJyZWFrOw0KKwkJ CWNhc2UgJ1cnOiANCisJCQkJb3AgPSBPU0ZPUFRfV1NPOw0KKwkJCQlwdHIgPSBvc2Zfc3RyY2hy KCZvYnVmW2ldLCBPUFRERUwpOw0KKwkJCQlpZiAocHRyKQ0KKwkJCQl7DQorCQkJCQlzd2l0Y2gg KG9idWZbaSsxXSkNCisJCQkJCXsNCisJCQkJCQljYXNlICclJzoJd2MgPSAnJSc7IGJyZWFrOw0K KwkJCQkJCWNhc2UgJ1MnOgl3YyA9ICdTJzsgYnJlYWs7DQorCQkJCQkJY2FzZSAnVCc6CXdjID0g J1QnOyBicmVhazsNCisJCQkJCQlkZWZhdWx0Ogl3YyA9IDA7IGJyZWFrOw0KKwkJCQkJfQ0KKwkJ CQkJDQorCQkJCQkqcHRyID0gJ1wwJzsNCisJCQkJCXB0cisrOw0KKwkJCQkJaWYgKHdjKQ0KKwkJ CQkJCXZhbCA9IHNpbXBsZV9zdHJ0b3VsKCZvYnVmW2krMl0sIE5VTEwsIDEwKTsNCisJCQkJCWVs c2UNCisJCQkJCQl2YWwgPSBzaW1wbGVfc3RydG91bCgmb2J1ZltpKzFdLCBOVUxMLCAxMCk7DQor CQkJCQlpICs9IChpbnQpKHB0ci0mb2J1ZltpXSk7DQorDQorCQkJCX0NCisJCQkJZWxzZQ0KKwkJ CQkJaSsrOw0KKwkJCQlicmVhazsNCisJCQljYXNlICdNJzogDQorCQkJCW9wID0gT1NGT1BUX01T UzsNCisJCQkJcHRyID0gb3NmX3N0cmNocigmb2J1ZltpXSwgT1BUREVMKTsNCisJCQkJaWYgKHB0 cikNCisJCQkJew0KKwkJCQkJaWYgKG9idWZbaSsxXSA9PSAnJScpDQorCQkJCQkJd2MgPSAnJSc7 DQorCQkJCQkqcHRyID0gJ1wwJzsNCisJCQkJCXB0cisrOw0KKwkJCQkJaWYgKHdjKQ0KKwkJCQkJ CXZhbCA9IHNpbXBsZV9zdHJ0b3VsKCZvYnVmW2krMl0sIE5VTEwsIDEwKTsNCisJCQkJCWVsc2UN CisJCQkJCQl2YWwgPSBzaW1wbGVfc3RydG91bCgmb2J1ZltpKzFdLCBOVUxMLCAxMCk7DQorCQkJ CQlpICs9IChpbnQpKHB0ci0mb2J1ZltpXSk7DQorDQorCQkJCX0NCisJCQkJZWxzZQ0KKwkJCQkJ aSsrOw0KKwkJCQlicmVhazsNCisJCQljYXNlICdFJzogDQorCQkJCW9wID0gT1NGT1BUX0VPTDsN CisJCQkJcHRyID0gb3NmX3N0cmNocigmb2J1ZltpXSwgT1BUREVMKTsNCisJCQkJaWYgKHB0cikN CisJCQkJew0KKwkJCQkJKnB0ciA9ICdcMCc7DQorCQkJCQlwdHIrKzsNCisJCQkJCWkgKz0gKGlu dCkocHRyLSZvYnVmW2ldKTsNCisNCisJCQkJfQ0KKwkJCQllbHNlDQorCQkJCQlpKys7DQorCQkJ CWJyZWFrOw0KKwkJCWRlZmF1bHQ6DQorCQkJCXB0ciA9IG9zZl9zdHJjaHIoJm9idWZbaV0sIE9Q VERFTCk7DQorCQkJCWlmIChwdHIpDQorCQkJCXsNCisJCQkJCXB0cisrOw0KKwkJCQkJaSArPSAo aW50KShwdHItJm9idWZbaV0pOw0KKw0KKwkJCQl9DQorCQkJCWVsc2UNCisJCQkJCWkrKzsNCisJ CQkJYnJlYWs7DQorCQl9DQorDQorCQlvcHRbKm9wdG51bV0ua2luZCAJPSBJQU5BX29wdHNbb3Bd LmtpbmQ7DQorCQlvcHRbKm9wdG51bV0ubGVuZ3RoIAk9IElBTkFfb3B0c1tvcF0ubGVuZ3RoOw0K KwkJb3B0WypvcHRudW1dLndjLndjIAk9IHdjOw0KKwkJb3B0WypvcHRudW1dLndjLnZhbAk9IHZh bDsNCisNCisJCSgqb3B0bnVtKSsrOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyBpbnQgb3NmX3Byb2Nf cmVhZChjaGFyICpidWYsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2ZmLCBpbnQgY291bnQsIGludCAq ZW9mLCB2b2lkICpkYXRhKQ0KK3sNCisJc3RydWN0IGxpc3RfaGVhZCAqZW50Ow0KKwlzdHJ1Y3Qg b3NmX2ZpbmdlciAqZiA9IE5VTEw7DQorCWludCBpOw0KKwkNCisJKmVvZiA9IDE7DQorCWNvdW50 ID0gMDsNCisNCisJcmVhZF9sb2NrX2JoKCZvc2ZfbG9jayk7DQorCWxpc3RfZm9yX2VhY2goZW50 LCAmZmluZ2VyX2xpc3QpDQorCXsNCisJCWYgPSBsaXN0X2VudHJ5KGVudCwgc3RydWN0IG9zZl9m aW5nZXIsIGZsaXN0KTsNCisNCisJCWxvZygiJXMgWyVzXSIsIGYtPmdlbnJlLCBmLT5kZXRhaWxz KTsNCisJCQ0KKwkJY291bnQgKz0gc3ByaW50ZihidWYrY291bnQsICIlcyAtICVzWyVzXSA6ICVz IiwgDQorCQkJCQlmLT5nZW5yZSwgZi0+dmVyc2lvbiwNCisJCQkJCWYtPnN1YnR5cGUsIGYtPmRl dGFpbHMpOw0KKwkJDQorCQlpZiAoZi0+b3B0X251bSkNCisJCXsNCisJCQlsb2dhKCIgT1BUOiAi KTsNCisJCQkvL2NvdW50ICs9IHNwcmludGYoYnVmK2NvdW50LCAiIE9QVDogIik7DQorCQkJZm9y IChpPTA7IGk8Zi0+b3B0X251bTsgKytpKQ0KKwkJCXsNCisJCQkJLy9jb3VudCArPSBzcHJpbnRm KGJ1Zitjb3VudCwgIiVkLiVjJWx1OyAiLCANCisJCQkJLy8JZi0+b3B0W2ldLmtpbmQsIChmLT5v cHRbaV0ud2Mud2MpP2YtPm9wdFtpXS53Yy53YzonICcsIGYtPm9wdFtpXS53Yy52YWwpOw0KKwkJ CQlsb2dhKCIlZC4lYyVsdTsgIiwgDQorCQkJCQlmLT5vcHRbaV0ua2luZCwgKGYtPm9wdFtpXS53 Yy53Yyk/Zi0+b3B0W2ldLndjLndjOicgJywgZi0+b3B0W2ldLndjLnZhbCk7DQorCQkJfQ0KKwkJ fQ0KKwkJbG9nYSgiXG4iKTsNCisJCWNvdW50ICs9IHNwcmludGYoYnVmK2NvdW50LCAiXG4iKTsN CisJfQ0KKwlyZWFkX3VubG9ja19iaCgmb3NmX2xvY2spOw0KKw0KKwlyZXR1cm4gY291bnQ7DQor fQ0KKw0KK3N0YXRpYyBpbnQgb3NmX3Byb2Nfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0 IGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgbG9uZyBjb3VudCwgdm9pZCAqZGF0YSkNCit7DQorCWlu dCBjbnQ7DQorCXVuc2lnbmVkIGxvbmcgaTsNCisJY2hhciBvYnVmW01BWE9QVFNUUkxFTl07DQor CXN0cnVjdCBvc2ZfZmluZ2VyICpmaW5nZXI7DQorCXN0cnVjdCBsaXN0X2hlYWQgKmVudCwgKm47 DQorDQorCWNoYXIgKnBiZWcsICpwZW5kOw0KKw0KKwlpZiAoY291bnQgPT0gc3RybGVuKE9TRkZM VVNIKSAmJiAhc3RybmNtcChidWZmZXIsIE9TRkZMVVNILCBzdHJsZW4oT1NGRkxVU0gpKSkNCisJ ew0KKwkJaW50IGkgPSAwOw0KKwkJd3JpdGVfbG9ja19iaCgmb3NmX2xvY2spOw0KKwkJbGlzdF9m b3JfZWFjaF9zYWZlKGVudCwgbiwgJmZpbmdlcl9saXN0KQ0KKwkJew0KKwkJCWkrKzsNCisJCQlm aW5nZXIgPSBsaXN0X2VudHJ5KGVudCwgc3RydWN0IG9zZl9maW5nZXIsIGZsaXN0KTsNCisJCQls aXN0X2RlbCgmZmluZ2VyLT5mbGlzdCk7DQorCQkJZmluZ2VyX2ZyZWUoZmluZ2VyKTsNCisJCX0N CisJCXdyaXRlX3VubG9ja19iaCgmb3NmX2xvY2spOw0KKwkNCisJCWxvZygiRmx1c2hlZCAlZCBl bnRyaWVzLlxuIiwgaSk7DQorCQkNCisJCXJldHVybiBjb3VudDsNCisJfQ0KKw0KKwkNCisJY250 ID0gMDsNCisJZm9yIChpPTA7IGk8Y291bnQgJiYgYnVmZmVyW2ldICE9ICdcMCc7ICsraSkNCisJ CWlmIChidWZmZXJbaV0gPT0gJzonKQ0KKwkJCWNudCsrOw0KKw0KKwlpZiAoY250ICE9IDggfHwg aSAhPSBjb3VudCkNCisJew0KKwkJbG9nKCJXcm9uZyBpbnB1dCBsaW5lIGNudD0lZFs4XSwgbGVu PSVsdVslbHVdXG4iLCANCisJCQljbnQsIGksIGNvdW50KTsNCisJCXJldHVybiBjb3VudDsNCisJ fQ0KKw0KKwltZW1zZXQob2J1ZiwgMCwgc2l6ZW9mKG9idWYpKTsNCisJDQorCWZpbmdlciA9IGZp bmdlcl9hbGxvYygpOw0KKwlpZiAoIWZpbmdlcikNCisJew0KKwkJbG9nKCJGYWlsZWQgdG8gYWxs b2NhdGUgbmV3IGZpbmdlcnByaW50IGVudHJ5LlxuIik7DQorCQlyZXR1cm4gLUVOT01FTTsNCisJ fQ0KKw0KKwlwYmVnID0gKGNoYXIgKilidWZmZXI7DQorCXBlbmQgPSBvc2Zfc3RyY2hyKHBiZWcs IE9TRlBERUwpOw0KKwlpZiAocGVuZCkNCisJew0KKwkJKnBlbmQgPSAnXDAnOw0KKwkJaWYgKHBi ZWdbMF0gPT0gJ1MnKQ0KKwkJew0KKwkJCWZpbmdlci0+d3NzLndjID0gJ1MnOw0KKwkJCWlmIChw YmVnWzFdID09ICclJykNCisJCQkJZmluZ2VyLT53c3MudmFsID0gc2ltcGxlX3N0cnRvdWwocGJl ZysyLCBOVUxMLCAxMCk7DQorCQkJZWxzZSBpZiAocGJlZ1sxXSA9PSAnKicpDQorCQkJCWZpbmdl ci0+d3NzLnZhbCA9IDA7DQorCQkJZWxzZSANCisJCQkJZmluZ2VyLT53c3MudmFsID0gc2ltcGxl X3N0cnRvdWwocGJlZysxLCBOVUxMLCAxMCk7DQorCQl9DQorCQllbHNlIGlmIChwYmVnWzBdID09 ICdUJykNCisJCXsNCisJCQlmaW5nZXItPndzcy53YyA9ICdUJzsNCisJCQlpZiAocGJlZ1sxXSA9 PSAnJScpDQorCQkJCWZpbmdlci0+d3NzLnZhbCA9IHNpbXBsZV9zdHJ0b3VsKHBiZWcrMiwgTlVM TCwgMTApOw0KKwkJCWVsc2UgaWYgKHBiZWdbMV0gPT0gJyonKQ0KKwkJCQlmaW5nZXItPndzcy52 YWwgPSAwOw0KKwkJCWVsc2UgDQorCQkJCWZpbmdlci0+d3NzLnZhbCA9IHNpbXBsZV9zdHJ0b3Vs KHBiZWcrMSwgTlVMTCwgMTApOw0KKwkJfQ0KKwkJZWxzZSBpZiAocGJlZ1swXSA9PSAnJScpDQor CQl7DQorCQkJZmluZ2VyLT53c3Mud2MgPSAnJSc7DQorCQkJZmluZ2VyLT53c3MudmFsID0gc2lt cGxlX3N0cnRvdWwocGJlZysxLCBOVUxMLCAxMCk7DQorCQl9DQorCQllbHNlIGlmIChpc2RpZ2l0 KHBiZWdbMF0pKQ0KKwkJew0KKwkJCWZpbmdlci0+d3NzLndjID0gMDsNCisJCQlmaW5nZXItPndz cy52YWwgPSBzaW1wbGVfc3RydG91bChwYmVnLCBOVUxMLCAxMCk7DQorCQl9DQorDQorCQlwYmVn ID0gcGVuZCsxOw0KKwl9DQorCXBlbmQgPSBvc2Zfc3RyY2hyKHBiZWcsIE9TRlBERUwpOw0KKwlp ZiAocGVuZCkNCisJew0KKwkJKnBlbmQgPSAnXDAnOw0KKwkJZmluZ2VyLT50dGwgPSBzaW1wbGVf c3RydG91bChwYmVnLCBOVUxMLCAxMCk7DQorCQlwYmVnID0gcGVuZCsxOw0KKwl9DQorCXBlbmQg PSBvc2Zfc3RyY2hyKHBiZWcsIE9TRlBERUwpOw0KKwlpZiAocGVuZCkNCisJew0KKwkJKnBlbmQg PSAnXDAnOw0KKwkJZmluZ2VyLT5kZiA9IHNpbXBsZV9zdHJ0b3VsKHBiZWcsIE5VTEwsIDEwKTsN CisJCXBiZWcgPSBwZW5kKzE7DQorCX0NCisJcGVuZCA9IG9zZl9zdHJjaHIocGJlZywgT1NGUERF TCk7DQorCWlmIChwZW5kKQ0KKwl7DQorCQkqcGVuZCA9ICdcMCc7DQorCQlmaW5nZXItPnNzID0g c2ltcGxlX3N0cnRvdWwocGJlZywgTlVMTCwgMTApOw0KKwkJcGJlZyA9IHBlbmQrMTsNCisJfQ0K Kw0KKwlwZW5kID0gb3NmX3N0cmNocihwYmVnLCBPU0ZQREVMKTsNCisJaWYgKHBlbmQpDQorCXsN CisJCSpwZW5kID0gJ1wwJzsNCisJCWNudCA9IHNucHJpbnRmKG9idWYsIHNpemVvZihvYnVmKSwg IiVzIiwgcGJlZyk7DQorCQlwYmVnID0gcGVuZCsxOw0KKwl9DQorDQorCXBlbmQgPSBvc2Zfc3Ry Y2hyKHBiZWcsIE9TRlBERUwpOw0KKwlpZiAocGVuZCkNCisJew0KKwkJKnBlbmQgPSAnXDAnOw0K KwkJaWYgKHBiZWdbMF0gPT0gJ0AnIHx8IHBiZWdbMF0gPT0gJyonKQ0KKwkJCWNudCA9IHNucHJp bnRmKGZpbmdlci0+Z2VucmUsIHNpemVvZihmaW5nZXItPmdlbnJlKSwgIiVzIiwgcGJlZysxKTsN CisJCWVsc2UNCisJCQljbnQgPSBzbnByaW50ZihmaW5nZXItPmdlbnJlLCBzaXplb2YoZmluZ2Vy LT5nZW5yZSksICIlcyIsIHBiZWcpOw0KKwkJcGJlZyA9IHBlbmQrMTsNCisJfQ0KKwkNCisJcGVu ZCA9IG9zZl9zdHJjaHIocGJlZywgT1NGUERFTCk7DQorCWlmIChwZW5kKQ0KKwl7DQorCQkqcGVu ZCA9ICdcMCc7DQorCQljbnQgPSBzbnByaW50ZihmaW5nZXItPnZlcnNpb24sIHNpemVvZihmaW5n ZXItPnZlcnNpb24pLCAiJXMiLCBwYmVnKTsNCisJCXBiZWcgPSBwZW5kKzE7DQorCX0NCisJDQor CXBlbmQgPSBvc2Zfc3RyY2hyKHBiZWcsIE9TRlBERUwpOw0KKwlpZiAocGVuZCkNCisJew0KKwkJ KnBlbmQgPSAnXDAnOw0KKwkJY250ID0gc25wcmludGYoZmluZ2VyLT5zdWJ0eXBlLCBzaXplb2Yo ZmluZ2VyLT5zdWJ0eXBlKSwgIiVzIiwgcGJlZyk7DQorCQlwYmVnID0gcGVuZCsxOw0KKwl9DQor DQorCWNudCA9IHNucHJpbnRmKGZpbmdlci0+ZGV0YWlscywgDQorCQkJKChjb3VudCAtIChwYmVn IC0gYnVmZmVyKSsxKSA+IE1BWERFVExFTik/TUFYREVUTEVOOihjb3VudCAtIChwYmVnIC0gYnVm ZmVyKSsxKSwgDQorCQkJIiVzIiwgcGJlZyk7DQorCQ0KKwlsb2coIiVzIC0gJXNbJXNdIDogJXNc biIsIA0KKwkJZmluZ2VyLT5nZW5yZSwgZmluZ2VyLT52ZXJzaW9uLA0KKwkJZmluZ2VyLT5zdWJ0 eXBlLCBmaW5nZXItPmRldGFpbHMpOw0KKwkNCisJb3NmX3BhcnNlX29wdChmaW5nZXItPm9wdCwg JmZpbmdlci0+b3B0X251bSwgb2J1Ziwgc2l6ZW9mKG9idWYpKTsNCisJDQorDQorCXdyaXRlX2xv Y2tfYmgoJm9zZl9sb2NrKTsNCisJbGlzdF9hZGRfdGFpbCgmZmluZ2VyLT5mbGlzdCwgJmZpbmdl cl9saXN0KTsNCisJd3JpdGVfdW5sb2NrX2JoKCZvc2ZfbG9jayk7DQorDQorCXJldHVybiBjb3Vu dDsNCit9DQorDQorc3RhdGljIGludCBfX2luaXQgb3NmX2luaXQodm9pZCkNCit7DQorCWludCBl cnI7DQorCXN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcDsNCisNCisJbG9nKCJTdGFydG5nIE9TIGZp bmdlcnByaW50IG1hdGNoaW5nIG1vZHVsZS5cbiIpOw0KKw0KKwlJTklUX0xJU1RfSEVBRCgmZmlu Z2VyX2xpc3QpOw0KKwkNCisJZXJyID0gaXB0X3JlZ2lzdGVyX21hdGNoKCZvc2ZfbWF0Y2gpOw0K KwlpZiAoZXJyKQ0KKwl7DQorCQlsb2coIkZhaWxlZCB0byByZWdpc3RlciBPUyBmaW5nZXJwcmlu dCBtYXRjaGluZyBtb2R1bGUuXG4iKTsNCisJCXJldHVybiAtRU5YSU87DQorCX0NCisNCisJcCA9 IGNyZWF0ZV9wcm9jX2VudHJ5KCJzeXMvbmV0L2lwdjQvb3NmIiwgU19JRlJFRyB8IDA2NDQsIE5V TEwpOw0KKwlpZiAoIXApDQorCXsNCisJCWlwdF91bnJlZ2lzdGVyX21hdGNoKCZvc2ZfbWF0Y2gp Ow0KKwkJcmV0dXJuIC1FTlhJTzsNCisJfQ0KKw0KKwlwLT53cml0ZV9wcm9jID0gb3NmX3Byb2Nf d3JpdGU7DQorCXAtPnJlYWRfcHJvYyAgPSBvc2ZfcHJvY19yZWFkOw0KKwkNCisJbnRzID0gbmV0 bGlua19rZXJuZWxfY3JlYXRlKE5FVExJTktfTkZMT0csIE5VTEwpOw0KKwlpZiAoIW50cykNCisJ ew0KKwkJbG9nKCJuZXRsaW5rX2tlcm5lbF9jcmVhdGUoKSBmYWlsZWRcbiIpOw0KKwkJcmVtb3Zl X3Byb2NfZW50cnkoInN5cy9uZXQvaXB2NC9vc2YiLCBOVUxMKTsNCisJCWlwdF91bnJlZ2lzdGVy X21hdGNoKCZvc2ZfbWF0Y2gpOw0KKwkJcmV0dXJuIC1FTk9NRU07DQorCX0NCisNCisJcmV0dXJu IDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIF9fZXhpdCBvc2ZfZmluaSh2b2lkKQ0KK3sNCisJc3Ry dWN0IGxpc3RfaGVhZCAqZW50LCAqbjsNCisJc3RydWN0IG9zZl9maW5nZXIgKmY7DQorCQ0KKwly ZW1vdmVfcHJvY19lbnRyeSgic3lzL25ldC9pcHY0L29zZiIsIE5VTEwpOw0KKwlpcHRfdW5yZWdp c3Rlcl9tYXRjaCgmb3NmX21hdGNoKTsNCisJaWYgKG50cyAmJiBudHMtPnNrX3NvY2tldCkNCisJ CXNvY2tfcmVsZWFzZShudHMtPnNrX3NvY2tldCk7DQorDQorCWxpc3RfZm9yX2VhY2hfc2FmZShl bnQsIG4sICZmaW5nZXJfbGlzdCkNCisJew0KKwkJZiA9IGxpc3RfZW50cnkoZW50LCBzdHJ1Y3Qg b3NmX2ZpbmdlciwgZmxpc3QpOw0KKwkJbGlzdF9kZWwoJmYtPmZsaXN0KTsNCisJCWZpbmdlcl9m cmVlKGYpOw0KKwl9DQorCQ0KKwlsb2coIk9TIGZpbmdlcnByaW50IG1hdGNoaW5nIG1vZHVsZSBm aW5pc2hlZC5cbiIpOw0KK30NCisNCittb2R1bGVfaW5pdChvc2ZfaW5pdCk7DQorbW9kdWxlX2V4 aXQob3NmX2ZpbmkpOw0KKw0KK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCitNT0RVTEVfQVVUSE9S KCJFdmdlbml5IFBvbHlha292IDxqb2hucG9sQDJrYS5taXB0LnJ1PiIpOw0KK01PRFVMRV9ERVND UklQVElPTigiUGFzc2l2ZSBPUyBmaW5nZXJwcmludCBtYXRjaGluZy4iKTsNCmRpZmYgLU5ydSBw YXRjaC1vLW1hdGljLW5nLTIwMDQwNjIxLW9yaWcvb3NmL2xpbnV4LTIuNi9uZXQvaXB2NC9uZXRm aWx0ZXIvS2NvbmZpZy5sYWRkIHBhdGNoLW8tbWF0aWMtbmctMjAwNDA2MjEvb3NmL2xpbnV4LTIu Ni9uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy5sYWRkDQotLS0gcGF0Y2gtby1tYXRpYy1uZy0y MDA0MDYyMS1vcmlnL29zZi9saW51eC0yLjYvbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcubGFk ZAkxOTcwLTAxLTAxIDAzOjAwOjAwLjAwMDAwMDAwMCArMDMwMA0KKysrIHBhdGNoLW8tbWF0aWMt bmctMjAwNDA2MjEvb3NmL2xpbnV4LTIuNi9uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy5sYWRk CTIwMDQtMDUtMDYgMTc6Mjc6NDkuMDAwMDAwMDAwICswNDAwDQpAQCAtMCwwICsxLDIxIEBADQor Y29uZmlnIElQX05GX01BVENIX09TRg0KKwl0cmlzdGF0ZSAgJ09TRiBtYXRjaCBzdXBwb3J0Jw0K KwlkZXBlbmRzIG9uIElQX05GX0lQVEFCTEVTDQorCWhlbHANCisJDQorCSAgVGhlIGlkZWEgb2Yg cGFzc2l2ZSBPUyBmaW5nZXJwcmludCBtYXRjaGluZyBleGlzdHMgZm9yIHF1aXRlIGEgbG9uZyB0 aW1lLA0KKwkgIGJ1dCB3YXMgY3JlYXRlZCBhcyBleHRlbnNpb24gZm8gT3BlbkJTRCBwZiBvbmx5 IHNvbWUgd2Vla3MgYWdvLg0KKwkgIE9yaWdpbmFsIGlkZWEgd2FzIGx1cmtlZCBpbiBzb21lIE9w ZW5CU0QgbWFpbGluZyBsaXN0ICh0aGFua3MNCisJICBncmFuZ2VAb3Blbi4uLikgYW5kIHRoYW4g YWRvcHRlZCBmb3IgTGludXggbmV0ZmlsdGVyIGluIGZvcm0gb2YgdGhpcyBjb2RlLg0KKwkNCisJ ICBPcmlnaW5hbCB0YWJsZSB3YXMgY3JlYXRlZCBieSBNaWNoYWwgWmFsZXdza2kgPGxjYW10dWZA Y29yZWR1bXAuY3g+IGZvcg0KKwkgIGhpcyBleGNlbGxlbnQgcDBmIGFuZCB0aGFuIGNoYW5nZWQg YSBiaXQgZm9yIG1vcmUgY29udmVuaWVuY2UuDQorCQ0KKwkgIFRoaXMgbW9kdWxlIGNvbXBhcmVz IHNvbWUgZGF0YShXUywgTVNTLCBvcHRpb25zIGFuZCBpdCdzIG9yZGVyLCB0dGwsDQorCSAgZGYg YW5kIG90aGVycykgZnJvbSBmaXJzdCBTWU4gcGFja2V0IChhY3R1YWxseSBmcm9tIHBhY2tldHMg d2l0aCBTWU4NCisJICBiaXQgc2V0KSB3aXRoIGhhcmRjb2RlZCBpbiBmaW5nZXJzW10gdGFibGUg b25lcy4NCisJDQorCSAgSWYgeW91IHNheSBZIGhlcmUsIHRyeSBpcHRhYmxlcyAtbSBvc2YgLS1o ZWxwIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KKwkgDQorCSAgSWYgeW91IHdhbnQgdG8gY29tcGls ZSBpdCBhcyBhIG1vZHVsZSwgc2F5IE0gaGVyZSBhbmQgcmVhZA0KKwkgIERvY3VtZW50YXRpb24v bW9kdWxlcy50eHQuICBJZiB1bnN1cmUsIHNheSBgTicuDQpkaWZmIC1OcnUgcGF0Y2gtby1tYXRp Yy1uZy0yMDA0MDYyMS1vcmlnL29zZi9saW51eC0yLjYvbmV0L2lwdjQvbmV0ZmlsdGVyL01ha2Vm aWxlLmxhZGQgcGF0Y2gtby1tYXRpYy1uZy0yMDA0MDYyMS9vc2YvbGludXgtMi42L25ldC9pcHY0 L25ldGZpbHRlci9NYWtlZmlsZS5sYWRkDQotLS0gcGF0Y2gtby1tYXRpYy1uZy0yMDA0MDYyMS1v cmlnL29zZi9saW51eC0yLjYvbmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLmxhZGQJMTk3MC0w MS0wMSAwMzowMDowMC4wMDAwMDAwMDAgKzAzMDANCisrKyBwYXRjaC1vLW1hdGljLW5nLTIwMDQw NjIxL29zZi9saW51eC0yLjYvbmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLmxhZGQJMjAwMy0x Mi0xOCAyMToyODo0My4wMDAwMDAwMDAgKzAzMDANCkBAIC0wLDAgKzEsNCBAQA0KK29iai0kKENP TkZJR19JUF9ORl9NQVRDSF9UT1MpICs9IGlwdF90b3Mubw0KKw0KK29iai0kKENPTkZJR19JUF9O Rl9NQVRDSF9PU0YpICs9IGlwdF9vc2Yubw0KKw0K --=-jTeYbdCnYz+oInmTU0b0-- --=-piSAeIpR0rq4QTpdO2s7 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iD8DBQBBtt9JIKTPhE+8wY0RAhvkAKCX07GvV1g+urt5sNuQB6cgnDRG3ACZAQ6Z mYtD3GAkO8d932QJEqSwg+o= =+IjJ -----END PGP SIGNATURE----- --=-piSAeIpR0rq4QTpdO2s7--