From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Sauter Subject: [RFC] audio surveilance Date: Fri, 01 Jan 2010 22:54:47 -0500 Message-ID: <1262404487.4427.7.camel@sauterws02.sauterhome> Reply-To: John_Sauter@systemeyescomputerstore.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1349186106409210933==" Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: patch@alsa-project.org Cc: devel@alsa-project.org List-Id: alsa-devel@alsa-project.org --===============1349186106409210933== Content-Type: multipart/signed; micalg="sha1"; protocol="application/x-pkcs7-signature"; boundary="=-ZlDzgcKDETzNMrQr8WB7" --=-ZlDzgcKDETzNMrQr8WB7 Content-Type: multipart/mixed; boundary="=-vfVNzqthyHe6VVpRVdmp" --=-vfVNzqthyHe6VVpRVdmp Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable When doing audio surveillance, you want to record all the sound, but occasionally close the old output file and open a new one, so you can listen to a captured event without disturbing the recording of future sounds. I have some ideas for additions to aplay to meet the needs of audio surveillance, and would appreciate feedback from the alsa developers. My proposed patches are attached. They have been tested only on GNU/Linux 64-bit. John Sauter (John_Sauter@systemeyescomputerstore.com) --=-vfVNzqthyHe6VVpRVdmp Content-Disposition: attachment; filename="0001-aplay-add-features-for-audio-surveilance.patch" Content-Type: text/x-patch; name="0001-aplay-add-features-for-audio-surveilance.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjNDRlNzU3MDhiMDQ1MTMxOTY3YWI4YjFkYzc4OTE3YjVlODdmNDEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogSm9obiBTYXV0ZXIgPEpvaG5fU2F1dGVyQHN5c3RlbWV5ZXNj b21wdXRlcnN0b3JlLmNvbT4NCkRhdGU6IEZyaSwgMSBKYW4gMjAxMCAxNjozNjoyMiAtMDUwMA0K U3ViamVjdDogW1BBVENIIC0gYXBsYXkgZXh0ZW5zaW9ucyBmb3IgYXVkaW8gc3VydmVpbGFuY2Ug MS8xXSBhcGxheSAtIGFkZCBmZWF0dXJlcyBmb3IgYXVkaW8gc3VydmVpbGFuY2UuDQoNCldoZW4g ZG9pbmcgYXVkaW8gc3VydmVpbGFuY2UsIHlvdSB3YW50IHRvIHJlY29yZA0KYWxsIHRoZSBzb3Vu ZCwgYnV0IG9jY2FzaW9uYWxseSBjbG9zZSB0aGUgb2xkDQpvdXRwdXQgZmlsZSBhbmQgb3BlbiBh IG5ldyBvbmUsIHNvIHlvdSBjYW4gbGlzdGVuDQp0byBhIGNhcHR1cmVkIGV2ZW50IHdpdGhvdXQg ZGlzdHVyYmluZyB0aGUNCnJlY29yZGluZyBvZiBmdXR1cmUgc291bmRzLiAgSSBoYXZlIGFkZGVk IHRocmVlDQpuZXcgb3B0aW9ucyBhbmQgYSBuZXcgc2lnbmFsIHRvIGZhY2lsaXRhdGUgdGhpczoN Cg0KLS1tYXgtZmlsZS10aW1lIHNwZWNpZmllcyB0aGUgbWF4aW11bSB0aW1lIHRvDQpyZWNvcmQg aW4gYSBmaWxlIGJlZm9yZSBjbG9zaW5nIGl0IGFuZCBvcGVuaW5nDQphIG5ldyBvbmUuDQoNCi0t cHJvY2Vzcy1pZC1maWxlIHNwZWNpZmllcyB0aGUgZmlsZSBpbnRvIHdoaWNoIHRvDQp3cml0ZSB0 aGUgcHJvY2VzcyBJRCwgc28gYSBjb250cm9sbGluZyBwcm9ncmFtIGNhbg0Kc2VuZCBzaWduYWxz IHRvIGFwbGF5Lg0KDQpTaWduYWwgU0lHVVNSMSBjYXVzZXMgYXBsYXkgdG8gY2xvc2UgdGhlIGN1 cnJlbnQNCm91dHB1dCBmaWxlIGFuZCBvcGVuIGEgbmV3IG9uZS4NCg0KLS11c2Utc3RyZnRpbWUg Y2F1c2VzIHRoZSBmaWxlIG5hbWUgcGFyYW1ldGVyIHRvDQpiZSBwYXNzZWQgdGhyb3VnaCBzdHJm dGltZSBlYWNoIHRpbWUgYSBmaWxlIGlzDQpvcGVuZWQuICBUaGUgaW1wb3J0YW50IHN0cmZ0aW1l IGNvZGVzIGZvciB0aGlzDQphcHBsaWNhdGlvbiBhcmUgYXMgZm9sbG93czogJVkgaXMgdGhlIHll YXIsDQolbSBpcyB0aGUgbW9udGgsICVkIGlzIHRoZSBkYXkgb2YgdGhlIG1vbnRoLA0KJUggaXMg dGhlIGhvdXIsICVNIHRoZSBtaW51dGUsICVTIHRoZSBzZWNvbmQuDQpJbiBhZGRpdGlvbiwgJXYg aXMgdGhlIGZpbGUgbnVtYmVyLiAgVXNpbmcNCnN0cmZ0aW1lIHJlcGxhY2VzIHRoZSBkZWZhdWx0 IGZpbGUgbmFtaW5nDQptZWNoYW5pc20sIHdoaWNoIHBsYWNlcyB0aGUgZmlsZSBudW1iZXIgYWZ0 ZXINCnRoZSBmaWxlIG5hbWUsIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUNCm91dHB1dCBmaWxl LiAgVXNpbmcgc3RyZnRpbWUgYWxzbyBjYXVzZXMNCmludGVybWVkaWF0ZSBkaXJlY3RvcmllcyB0 byBiZSBjcmVhdGVkIGZvcg0KdGhlIG91dHB1dCBmaWxlcy4gIFRoaXMgYWxsb3dzIGZvciBuYW1l cyBsaWtlDQpzb3VuZHMvJVkvJW0vJWQvJVktJW0tJWQtLSVIXyVNXyVTLndhdi4NCg0KSSBoYXZl IHVwZGF0ZWQgdGhlIG1hbnVhbCBmaWxlIHRvIGluY2x1ZGUNCmFsbCB0aGUgb2xkIG9wdGlvbnMg YW5kIHNpZ25hbHMgaW4gYWRkaXRpb24gdG8NCnRob3NlIGxpc3RlZCBhYm92ZS4NCg0KU2lnbmVk LU9mZi1CeTogSm9obiBTYXV0ZXIgPEpvaG5fU2F1dGVyQHN5c3RlbWV5ZXNjb21wdXRlcnN0b3Jl LmNvbT4NCi0tLQ0KIGFwbGF5L2FwbGF5LjEgfCAgIDkxICsrKysrKysrKysrKysrKystLQ0KIGFw bGF5L2FwbGF5LmMgfCAgMzA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLQ0KIDIgZmlsZXMgY2hhbmdlZCwgMzY3IGluc2VydGlvbnMoKyks IDMyIGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvYXBsYXkvYXBsYXkuMSBiL2FwbGF5L2Fw bGF5LjENCmluZGV4IDc3NTkzNDcuLmI2Y2FmMGIgMTAwNjQ0DQotLS0gYS9hcGxheS9hcGxheS4x DQorKysgYi9hcGxheS9hcGxheS4xDQpAQCAtMSw0ICsxLDQgQEANCi0uVEggQVBMQVkgMSAiMiBB dWd1c3QgMjAwMSINCisuVEggQVBMQVkgMSAiMSBKYW51YXJ5IDIwMTAiDQogLlNIIE5BTUUNCiBh cmVjb3JkLCBhcGxheSBcLSBjb21tYW5kLWxpbmUgc291bmQgcmVjb3JkZXIgYW5kIHBsYXllciBm b3IgQUxTQSANCiBzb3VuZGNhcmQgZHJpdmVyDQpAQCAtNDYsNiArNDYsNyBAQCBJZiB0aGlzIHBh cmFtZXRlciBpcyBvbWl0dGVkIHRoZSBXQVZFIGZvcm1hdCBpcyB1c2VkLg0KIFxmSVwtYywgXC1c LWNoYW5uZWxzPSNcZlANCiBUaGUgbnVtYmVyIG9mIGNoYW5uZWxzLg0KIFRoZSBkZWZhdWx0IGlz IG9uZSBjaGFubmVsLg0KK1ZhbGlkIHZhbHVlcyBhcmUgMSB0aHJvdWdoIDMyLg0KIC5UUA0KIFxm SVwtZiBcLVwtZm9ybWF0PUZPUk1BVFxmUA0KIFNhbXBsZSBmb3JtYXQNCkBAIC01MywxOSArNTQs MjMgQEAgU2FtcGxlIGZvcm1hdA0KIFJlY29nbml6ZWQgc2FtcGxlIGZvcm1hdHMgYXJlOiBTOCBV OCBTMTZfTEUgUzE2X0JFIFUxNl9MRSBVMTZfQkUgUzI0X0xFDQogUzI0X0JFIFUyNF9MRSBVMjRf QkUgUzMyX0xFIFMzMl9CRSBVMzJfTEUgVTMyX0JFIEZMT0FUX0xFIEZMT0FUX0JFDQogRkxPQVQ2 NF9MRSBGTE9BVDY0X0JFIElFQzk1OF9TVUJGUkFNRV9MRSBJRUM5NThfU1VCRlJBTUVfQkUgTVVf TEFXDQotQV9MQVcgSU1BX0FEUENNIE1QRUcgR1NNDQorQV9MQVcgSU1BX0FEUENNIE1QRUcgR1NN IFNQRUNJQUwgUzI0XzNMRSBTMjRfM0JFIFUyNF8zTEUgVTI0XzNCRSBTMjBfM0xFDQorUzIwXzNC RSBVMjBfM0xFIFUyMF8zQkUgUzE4XzNMRSBTMThfM0JFIFUxOF8zTEUNCiAuYnINCiBTb21lIG9m IHRoZXNlIG1heSBub3QgYmUgYXZhaWxhYmxlIG9uIHNlbGVjdGVkIGhhcmR3YXJlDQogLmJyDQot VGhlcmUgYXJlIGFsc28gdHdvIGZvcm1hdCBzaG9ydGN1dHMgYXZhaWxhYmxlOg0KK1RoZSBhdmFp bGFibGUgZm9ybWF0IHNob3J0Y3V0cyBhcmU6DQogLm5mDQotXC1mIGNkICgxNiBiaXQgbGl0dGxl IGVuZGlhbiwgNDQxMDAsIHN0ZXJlbyBbXC1mIFMxNl9MRSBcLWMyIFwtcjQ0MTAwXQ0KK1wtZiBj ZCAoMTYgYml0IGxpdHRsZSBlbmRpYW4sIDQ0MTAwLCBzdGVyZW8pIFtcLWYgUzE2X0xFIFwtYzIg XC1yNDQxMDBdDQorXC1mIGNkciAoMTYgYml0IGJpZyBlbmRpYW4sIDQ0MTAwLCBzdGVyZW8pIFtc LWYgUzE2X0JFIFwtYzIgXC1mNDQxMDBdDQogXC1mIGRhdCAoMTYgYml0IGxpdHRsZSBlbmRpYW4s IDQ4MDAwLCBzdGVyZW8pIFtcLWYgUzE2X0xFIFwtYzIgXC1yNDgwMDBdDQogLmZpDQogSWYgbm8g Zm9ybWF0IGlzIGdpdmVuIFU4IGlzIHVzZWQuDQogLlRQDQogXGZJXC1yLCBcLVwtcmF0ZT0jPEh6 PlxmUA0KIFNhbXBsaW5nIHJhdGUgaW4gSGVydHouIFRoZSBkZWZhdWx0IHJhdGUgaXMgODAwMCBI ZXJ0ei4NCitJZiB0aGUgdmFsdWUgc3BlY2lmaWVkIGlzIGxlc3MgdGhhbiAzMDAsIGl0IGlzIHRh a2VuIGFzIHRoZSByYXRlIGluIGtpbG9oZXJ0ei4NCitWYWxpZCB2YWx1ZXMgYXJlIDIwMDAgdGhy b3VnaCAxOTIwMDAgSGVydHouDQogLlRQDQogXGZJXC1kLCBcLVwtZHVyYXRpb249I1xmUA0KIElu dGVycnVwdCBhZnRlciAjIHNlY29uZHMuDQpAQCAtMTIwLDEwICsxMjUsNjkgQEAgVGhlIHN0ZXJl byBWVS1tZXRlciBpcyBhdmFpbGFibGUgb25seSBmb3IgMi1jaGFubmVsIHN0ZXJlbyBzYW1wbGVz DQogd2l0aCBpbnRlcmxlYXZlZCBmb3JtYXQuDQogLlRQDQogXGZJXC1JLCBcLVwtc2VwYXJhdGVc LWNoYW5uZWxzXGZQIA0KLU9uZSBmaWxlIGZvciBlYWNoIGNoYW5uZWwNCitPbmUgZmlsZSBmb3Ig ZWFjaCBjaGFubmVsLiAgVGhpcyBvcHRpb24gZGlzYWJsZXMgbWF4XC1maWxlXC10aW1lDQorYW5k IHVzZVwtc3RyZnRpbWUsIGFuZCBpZ25vcmVzIFNJR1VTUjEuICBUaGUgc3RlcmVvIFZVIG1ldGVy IGlzDQorbm90IGF2YWlsYWJsZSB3aXRoIHNlcGFyYXRlIGNoYW5uZWxzLg0KKy5UUA0KK1xmSVwt UFxmUA0KK1BsYXliYWNrLiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgcHJvZ3JhbSBpcyBp bnZva2VkDQorYnkgdHlwaW5nIGFwbGF5Lg0KKy5UUA0KK1xmSVwtQ1xmUA0KK1JlY29yZC4gIFRo aXMgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIHByb2dyYW0gaXMgaW52b2tlZA0KK2J5IHR5cGluZyBh cmVjb3JkLg0KKy5UUA0KK1xmSVwtXC1kaXNhYmxlXC1yZXNhbXBsZVxmUA0KK0Rpc2FibGUgYXV0 b21hdGljIHJhdGUgcmVzYW1wbGUuDQorLlRQDQorXGZJXC1cLWRpc2FibGVcLWNoYW5uZWxzXGZQ DQorRGlzYWJsZSBhdXRvbWF0aWMgY2hhbm5lbCBjb252ZXJzaW9ucy4NCisuVFANCitcZklcLVwt ZGlzYWJsZVwtZm9ybWF0XGZQDQorRGlzYWJsZSBhdXRvbWF0aWMgZm9ybWF0IGNvbnZlcnNpb25z Lg0KKy5UUA0KK1xmSVwtXC1kaXNhYmxlXC1zb2Z0dm9sXGZQDQorRGlzYWJsZSBzb2Z0d2FyZSB2 b2x1bWUgY29udHJvbCAoc29mdHZvbCkuDQorLlRQDQorXGZJXC1cLXRlc3RcLXBvc2l0aW9uXGZQ DQorVGVzdCByaW5nIGJ1ZmZlciBwb3NpdGlvbi4NCisuVFANCitcZklcLVwtdGVzdFwtY29lZj08 Y29lZj5cZlANCitUZXN0IGNvZWZmaWNpZW50IGZvciByaW5nIGJ1ZmZlciBwb3NpdGlvbjsgZGVm YXVsdCBpcyA4Lg0KK0V4cHJlc3Npb24gZm9yIHZhbGlkYXRpb24gaXM6IGNvZWYgKiAoYnVmZmVy X3NpemUgLyAyKS4NCitNaW5pbXVtIHZhbHVlIGlzIDEuDQorLlRQDQorXGZJXC1cLXRlc3RcLW5v d2FpdFxmUA0KK0RvIG5vdCB3YWl0IGZvciB0aGUgcmluZyBidWZmZXItLWVhdHMgdGhlIHdob2xl IENQVS4NCisuVFANCitcZklcLVwtbWF4XC1maWxlXC10aW1lXGZQDQorV2hpbGUgcmVjb3JkaW5n LCB3aGVuIHRoZSBvdXRwdXQgZmlsZSBoYXMgYmVlbiBhY2N1bXVsYXRpbmcNCitzb3VuZCBmb3Ig dGhpcyBsb25nLA0KK2Nsb3NlIGl0IGFuZCBvcGVuIGEgbmV3IG91dHB1dCBmaWxlLiAgRGVmYXVs dCBpcyB0aGUgbWF4aW11bQ0KK3NpemUgc3VwcG9ydGVkIGJ5IHRoZSBmaWxlIGZvcm1hdDogMiBH aUIgZm9yIFdBViBmaWxlcy4NCitUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IGlmICBcLVwtc2Vw YXJhdGVcLWNoYW5uZWxzIGlzDQorc3BlY2lmaWVkLg0KKy5UUA0KK1xmSVwtXC1wcm9jZXNzXC1p ZFwtZmlsZSA8ZmlsZSBuYW1lPlxmUA0KK2FwbGF5IHdyaXRlcyBpdHMgcHJvY2VzcyBJRCBoZXJl LCBzbyBvdGhlciBwcm9ncmFtcyBjYW4NCitzZW5kIHNpZ25hbHMgdG8gaXQuDQorLlRQDQorXGZJ XC1cLXVzZVwtc3RyZnRpbWVcZlANCitXaGVuIHJlY29yZGluZywgaW50ZXJwcmV0ICUtY29kZXMg aW4gdGhlIGZpbGUgbmFtZSBwYXJhbWV0ZXIgdXNpbmcNCit0aGUgc3RyZnRpbWUgZmFjaWxpdHkg d2hlbmV2ZXIgdGhlIG91dHB1dCBmaWxlIGlzIG9wZW5lZC4gIFRoZQ0KK2ltcG9ydGFudCBzdHJm dGltZSBjb2RlcyBhcmU6ICVZIGlzIHRoZSB5ZWFyLCAlbSBtb250aCwgJWQgZGF5IG9mDQordGhl IG1vbnRoLCAlSCBob3VyLCAlTSBtaW51dGUgYW5kICVTIHNlY29uZC4gIEluIGFkZGl0aW9uLCAl diBpcw0KK3RoZSBmaWxlIG51bWJlciwgc3RhcnRpbmcgYXQgMS4gIFdoZW4gdGhpcyBvcHRpb24g aXMgc3BlY2lmaWVkLA0KK2ludGVybWVkaWF0ZSBkaXJlY3RvcmllcyBmb3IgdGhlIG91dHB1dCBm aWxlIGFyZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkuDQorVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVj dCBpZiBcLVwtc2VwYXJhdGVcLWNoYW5uZWxzIGlzIHNwZWNpZmllZC4NCiANCi0uU1MNCi1FeGFt cGxlOg0KKy5TSCBTSUdOQUxTDQorV2hlbiByZWNvcmRpbmcsIFNJR0lOVCwgU0lHVEVSTSBhbmQg U0lHQUJSVCB3aWxsIGNsb3NlIHRoZSBvdXRwdXQgDQorZmlsZSBhbmQgZXhpdC4gIFNJR1VTUjEg d2lsbCBjbG9zZSB0aGUgb3V0cHV0IGZpbGUsIG9wZW4gYSBuZXcgb25lLA0KK2FuZCBjb250aW51 ZSByZWNvcmRpbmcuICBIb3dldmVyLCBTSUdVU1IxIGRvZXMgbm90IHdvcmsgd2l0aA0KK1wtXC1z ZXBhcmF0ZVwtY2hhbm5lbHMuDQorDQorLlNIIEVYQU1QTEVTDQogDQogLlRQDQogXGZCYXBsYXkg XC1jIDEgXC10IHJhdyBcLXIgMjIwNTAgXC1mIG11X2xhdyBmb29iYXJcZlINCkBAIC0xNDQsNiAr MjA4LDE5IEBAIHBjbS5jb3B5IHsNCiB9DQogLmZpDQogDQorLlRQDQorXGZCYXJlY29yZCBcLXQg d2F2IFwtbWF4LWZpbGVfdGltZSAzMCBtb24ud2F2XGZQDQorUmVjb3JkIGZyb20gdGhlIGRlZmF1 bHQgYXVkaW8gc291cmNlIGluIG1vbmF1cmFsLCA4LDAwMCBzYW1wbGVzDQorcGVyIHNlY29uZCwg OCBiaXRzIHBlciBzYW1wbGUuICBTdGFydCBhIG5ldyBmaWxlIGV2ZXJ5DQorMzAgc2Vjb25kcy4g IEZpbGUgbmFtZXMgYXJlIG1vbi1ubi53YXYsIHdoZXJlIG5uIGluY3JlYXNlcw0KK2Zyb20gMDEu ICBUaGUgZmlsZSBhZnRlciBtb24tOTkud2F2IGlzIG1vbi0xMDAud2F2Lg0KKw0KKy5UUA0KK1xm QmFyZWNvcmQgXC1mIGNkIFwtdCB3YXYgXC1tYXgtZmlsZS10aW1lIDM2MDAgLS11c2Utc3RyZnRp bWUgJVkvJW0vJWQvbGlzdGVuLSVILSVNLSV2LndhdlxmUA0KK1JlY29yZCBpbiBzdGVyZW8gZnJv bSB0aGUgZGVmYXVsdCBhdWRpbyBzb3VyY2UuICBDcmVhdGUgYSBuZXcgZmlsZQ0KK2V2ZXJ5IGhv dXIuICBUaGUgZmlsZXMgYXJlIHBsYWNlZCBpbiBkaXJlY3RvcmllcyBiYXNlZCBvbiB0aGVpciBz dGFydCBkYXRlcw0KK2FuZCBoYXZlIG5hbWVzIHdoaWNoIGluY2x1ZGUgdGhlaXIgc3RhcnQgdGlt ZXMgYW5kIGZpbGUgbnVtYmVycy4NCisNCiAuU0ggU0VFIEFMU08NCiBcZkINCiBhbHNhbWl4ZXIo MSksDQpkaWZmIC0tZ2l0IGEvYXBsYXkvYXBsYXkuYyBiL2FwbGF5L2FwbGF5LmMNCmluZGV4IDIy YTVmZTAuLjg1NjZkMDMgMTAwNjQ0DQotLS0gYS9hcGxheS9hcGxheS5jDQorKysgYi9hcGxheS9h cGxheS5jDQpAQCAtMTExLDExICsxMTEsMTkgQEAgc3RhdGljIGludCB0ZXN0X3Bvc2l0aW9uID0g MDsNCiBzdGF0aWMgaW50IHRlc3RfY29lZiA9IDg7DQogc3RhdGljIGludCB0ZXN0X25vd2FpdCA9 IDA7DQogc3RhdGljIHNuZF9vdXRwdXRfdCAqbG9nOw0KK3N0YXRpYyBsb25nIGxvbmcgbWF4X2Zp bGVfc2l6ZSA9IDA7DQorc3RhdGljIGludCBtYXhfZmlsZV90aW1lID0gMDsNCitzdGF0aWMgaW50 IHVzZV9zdHJmdGltZSA9IDA7DQordm9sYXRpbGUgc3RhdGljIGludCByZWN5Y2xlX2NhcHR1cmVf ZmlsZSA9IDA7DQogDQogc3RhdGljIGludCBmZCA9IC0xOw0KIHN0YXRpYyBvZmY2NF90IHBicmVj X2NvdW50ID0gTExPTkdfTUFYLCBmZGNvdW50Ow0KIHN0YXRpYyBpbnQgdm9jbWFqb3IsIHZvY21p bm9yOw0KIA0KK3N0YXRpYyBjaGFyICpwaWRmaWxlX25hbWUgPSBOVUxMOw0KK0ZJTEUgKnBpZGYg PSBOVUxMOw0KK3N0YXRpYyBpbnQgcGlkZmlsZV93cml0dGVuID0gMDsNCisNCiAvKiBuZWVkZWQg cHJvdG90eXBlcyAqLw0KIA0KIHN0YXRpYyB2b2lkIHBsYXliYWNrKGNoYXIgKmZpbGVuYW1lKTsN CkBAIC0xOTQsNyArMjAyLDExIEBAIF8oIlVzYWdlOiAlcyBbT1BUSU9OXS4uLiBbRklMRV0uLi5c biINCiAiICAgIC0tdGVzdC1wb3NpdGlvbiAgICAgdGVzdCByaW5nIGJ1ZmZlciBwb3NpdGlvblxu Ig0KICIgICAgLS10ZXN0LWNvZWY9IwkgdGVzdCBjb2VmaWNpZW50IGZvciByaW5nIGJ1ZmZlciBw b3NpdGlvbiAoZGVmYXVsdCA4KVxuIg0KICIgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNz aW9uIGZvciB2YWxpZGF0aW9uIGlzOiBjb2VmICogKGJ1ZmZlcl9zaXplIC8gMilcbiINCi0iICAg IC0tdGVzdC1ub3dhaXQgICAgICAgZG8gbm90IHdhaXQgZm9yIHJpbmcgYnVmZmVyIC0gZWF0cyB3 aG9sZSBDUFVcbiIpDQorIiAgICAtLXRlc3Qtbm93YWl0ICAgICAgIGRvIG5vdCB3YWl0IGZvciBy aW5nIGJ1ZmZlciAtIGVhdHMgd2hvbGUgQ1BVXG4iDQorIiAgICAtLW1heC1maWxlLXRpbWU9IyAg IHN0YXJ0IGFub3RoZXIgb3V0cHV0IGZpbGUgd2hlbiB0aGUgb2xkIGZpbGUgaGFzIHJlY29yZGVk XG4iDQorIiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIG1hbnkgc2Vjb25kc1xuIg0K KyIgICAgLS1wcm9jZXNzLWlkLWZpbGUgICB3cml0ZSB0aGUgcHJvY2VzcyBJRCBoZXJlXG4iDQor IiAgICAtLXVzZS1zdHJmdGltZSAgICAgIGFwcGx5IHRoZSBzdHJmdGltZSBmYWNpbGl0eSB0byB0 aGUgb3V0cHV0IGZpbGUgbmFtZVxuIikNCiAJCSwgY29tbWFuZCk7DQogCXByaW50ZihfKCJSZWNv Z25pemVkIHNhbXBsZSBmb3JtYXRzIGFyZToiKSk7DQogCWZvciAoayA9IDA7IGsgPCBTTkRfUENN X0ZPUk1BVF9MQVNUOyArK2spIHsNCkBAIC0zNDUsOSArMzU3LDE3IEBAIHN0YXRpYyB2b2lkIHNp Z25hbF9oYW5kbGVyKGludCBzaWcpDQogCQlzbmRfcGNtX2Nsb3NlKGhhbmRsZSk7DQogCQloYW5k bGUgPSBOVUxMOw0KIAl9DQorCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9u YW1lKTsNCiAJZXhpdChFWElUX0ZBSUxVUkUpOw0KIH0NCiANCisvKiBjYWxsIG9uIFNJR1VTUjEg c2lnbmFsLiAqLw0KK3N0YXRpYyB2b2lkIHNpZ25hbF9oYW5kbGVyX3JlY3ljbGUgKGludCBzaWcp DQorew0KKwkvKiBmbGFnIHRoZSBjYXB0dXJlIGxvb3AgdG8gc3RhcnQgYSBuZXcgb3V0cHV0IGZp bGUgKi8NCisJcmVjeWNsZV9jYXB0dXJlX2ZpbGUgPSAxOw0KK30NCisNCiBlbnVtIHsNCiAJT1BU X1ZFUlNJT04gPSAxLA0KIAlPUFRfUEVSSU9EX1NJWkUsDQpAQCAtMzU4LDcgKzM3OCwxMCBAQCBl bnVtIHsNCiAJT1BUX0RJU0FCTEVfU09GVFZPTCwNCiAJT1BUX1RFU1RfUE9TSVRJT04sDQogCU9Q VF9URVNUX0NPRUYsDQotCU9QVF9URVNUX05PV0FJVA0KKwlPUFRfVEVTVF9OT1dBSVQsDQorCU9Q VF9NQVhfRklMRV9USU1FLA0KKwlPUFRfUFJPQ0VTU19JRF9GSUxFLA0KKwlPUFRfVVNFX1NUUkZU SU1FDQogfTsNCiANCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KQEAgLTM5OSw2 ICs0MjIsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KIAkJeyJ0ZXN0LXBv c2l0aW9uIiwgMCwgMCwgT1BUX1RFU1RfUE9TSVRJT059LA0KIAkJeyJ0ZXN0LWNvZWYiLCAxLCAw LCBPUFRfVEVTVF9DT0VGfSwNCiAJCXsidGVzdC1ub3dhaXQiLCAwLCAwLCBPUFRfVEVTVF9OT1dB SVR9LA0KKwkJeyJtYXgtZmlsZS10aW1lIiwgMSwgMCwgT1BUX01BWF9GSUxFX1RJTUV9LA0KKwkJ eyJwcm9jZXNzLWlkLWZpbGUiLCAxLCAwLCBPUFRfUFJPQ0VTU19JRF9GSUxFfSwNCisJCXsidXNl LXN0cmZ0aW1lIiwgMCwgMCwgT1BUX1VTRV9TVFJGVElNRX0sDQogCQl7MCwgMCwgMCwgMH0NCiAJ fTsNCiAJY2hhciAqcGNtX25hbWUgPSAiZGVmYXVsdCI7DQpAQCAtNDkzLDYgKzUxOSw3IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQogCQkJCXJod3BhcmFtcy5mb3JtYXQgPSBz bmRfcGNtX2Zvcm1hdF92YWx1ZShvcHRhcmcpOw0KIAkJCQlpZiAocmh3cGFyYW1zLmZvcm1hdCA9 PSBTTkRfUENNX0ZPUk1BVF9VTktOT1dOKSB7DQogCQkJCQllcnJvcihfKCJ3cm9uZyBleHRlbmRl ZCBmb3JtYXQgJyVzJyIpLCBvcHRhcmcpOw0KKwkJCQkJaWYgKHBpZGZpbGVfd3JpdHRlbikgcmVt b3ZlIChwaWRmaWxlX25hbWUpOw0KIAkJCQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KIAkJCQl9DQog CQkJfQ0KQEAgLTU4OCw2ICs2MTUsMTUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkNCiAJCWNhc2UgT1BUX1RFU1RfTk9XQUlUOg0KIAkJCXRlc3Rfbm93YWl0ID0gMTsNCiAJCQli cmVhazsNCisJCWNhc2UgT1BUX01BWF9GSUxFX1RJTUU6DQorCQkJbWF4X2ZpbGVfdGltZSA9IHN0 cnRvbChvcHRhcmcsIE5VTEwsIDApOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBPUFRfUFJPQ0VTU19J RF9GSUxFOg0KKwkJCXBpZGZpbGVfbmFtZSA9IG9wdGFyZzsNCisJCQlicmVhazsNCisJCWNhc2Ug T1BUX1VTRV9TVFJGVElNRToNCisJCQl1c2Vfc3RyZnRpbWUgPSAxOw0KKwkJCWJyZWFrOw0KIAkJ ZGVmYXVsdDoNCiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IGAlcyAtLWhlbHAnIGZvciBtb3Jl IGluZm9ybWF0aW9uLlxuIiksIGNvbW1hbmQpOw0KIAkJCXJldHVybiAxOw0KQEAgLTY0MywxMCAr Njc5LDI0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQogCQlyZWFkbl9mdW5j ID0gc25kX3BjbV9yZWFkbjsNCiAJfQ0KIA0KKwlpZiAocGlkZmlsZV9uYW1lKSB7DQorCQllcnJu byA9IDA7DQorCQlwaWRmID0gZm9wZW4gKHBpZGZpbGVfbmFtZSwgInciKTsNCisJCWlmIChwaWRm KSB7DQorCQkJKHZvaWQpZnByaW50ZiAocGlkZiwgIiVkXG4iLCBnZXRwaWQoKSk7DQorCQkJZmNs b3NlKHBpZGYpOw0KKwkJCXBpZGZpbGVfd3JpdHRlbiA9IDE7DQorCQl9IGVsc2Ugew0KKwkJCWVy cm9yKF8oIkNhbm5vdCBjcmVhdGUgcHJvY2VzcyBJRCBmaWxlICVzOiAlcyIpLCANCisJCQkJcGlk ZmlsZV9uYW1lLCBzdHJlcnJvciAoZXJybm8pKTsNCisJCQlyZXR1cm4gMTsNCisJCX0NCisJfQ0K IA0KIAlzaWduYWwoU0lHSU5ULCBzaWduYWxfaGFuZGxlcik7DQogCXNpZ25hbChTSUdURVJNLCBz aWduYWxfaGFuZGxlcik7DQogCXNpZ25hbChTSUdBQlJULCBzaWduYWxfaGFuZGxlcik7DQorCXNp Z25hbChTSUdVU1IxLCBzaWduYWxfaGFuZGxlcl9yZWN5Y2xlKTsNCiAJaWYgKGludGVybGVhdmVk KSB7DQogCQlpZiAob3B0aW5kID4gYXJnYyAtIDEpIHsNCiAJCQlpZiAoc3RyZWFtID09IFNORF9Q Q01fU1RSRUFNX1BMQVlCQUNLKQ0KQEAgLTY3NCw2ICs3MjQsNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQ0KICAgICAgIF9fZW5kOg0KIAlzbmRfb3V0cHV0X2Nsb3NlKGxvZyk7 DQogCXNuZF9jb25maWdfdXBkYXRlX2ZyZWVfZ2xvYmFsKCk7DQorCWlmIChwaWRmaWxlX3dyaXR0 ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJcmV0dXJuIEVYSVRfU1VDQ0VTUzsNCiB9DQog DQpAQCAtNjk5LDcgKzc1MCw3IEBAIHN0YXRpYyBzc2l6ZV90IHNhZmVfcmVhZChpbnQgZmQsIHZv aWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQ0KIA0KIC8qDQogICogVGVzdCwgaWYgaXQgaXMgYSAuVk9D IGZpbGUgYW5kIHJldHVybiA+PTAgaWYgb2sgKHRoaXMgaXMgdGhlIGxlbmd0aCBvZiByZXN0KQ0K LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCAwIGlmIG5vdCANCisg KgkJCQkgICAgICAgPCAwIGlmIG5vdCANCiAgKi8NCiBzdGF0aWMgaW50IHRlc3Rfdm9jZmlsZSh2 b2lkICpidWZmZXIpDQogew0KQEAgLTcyNSw2ICs3NzYsNyBAQCBzdGF0aWMgc2l6ZV90IHRlc3Rf d2F2ZWZpbGVfcmVhZChpbnQgZmQsIHVfY2hhciAqYnVmZmVyLCBzaXplX3QgKnNpemUsIHNpemVf dCByZQ0KIAkJcmV0dXJuICpzaXplOw0KIAlpZiAoKHNpemVfdClzYWZlX3JlYWQoZmQsIGJ1ZmZl ciArICpzaXplLCByZXFzaXplIC0gKnNpemUpICE9IHJlcXNpemUgLSAqc2l6ZSkgew0KIAkJZXJy b3IoXygicmVhZCBlcnJvciAoY2FsbGVkIGZyb20gbGluZSAlaSkiKSwgbGluZSk7DQorCQlpZiAo cGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQlleGl0KEVYSVRfRkFJ TFVSRSk7DQogCX0NCiAJcmV0dXJuICpzaXplID0gcmVxc2l6ZTsNCkBAIC03MzUsMTMgKzc4Nywx NCBAQCBzdGF0aWMgc2l6ZV90IHRlc3Rfd2F2ZWZpbGVfcmVhZChpbnQgZmQsIHVfY2hhciAqYnVm ZmVyLCBzaXplX3QgKnNpemUsIHNpemVfdCByZQ0KIAkJYmxpbWl0ID0gbGVuOyBcDQogCQlpZiAo KGJ1ZmZlciA9IHJlYWxsb2MoYnVmZmVyLCBibGltaXQpKSA9PSBOVUxMKSB7IFwNCiAJCQllcnJv cihfKCJub3QgZW5vdWdoIG1lbW9yeSIpKTsJCSAgXA0KKwkJCWlmIChwaWRmaWxlX3dyaXR0ZW4p IHJlbW92ZSAocGlkZmlsZV9uYW1lKTsgIFwNCiAJCQlleGl0KEVYSVRfRkFJTFVSRSk7IFwNCiAJ CX0gXA0KIAl9DQogDQogLyoNCiAgKiB0ZXN0LCBpZiBpdCdzIGEgLldBViBmaWxlLCA+IDAgaWYg b2sgKGFuZCBzZXQgdGhlIHNwZWVkLCBzdGVyZW8gZXRjLikNCi0gKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA9PSAwIGlmIG5vdA0KKyAqCQkJICAgID09IDAgaWYgbm90DQogICogVmFsdWUg cmV0dXJuZWQgaXMgYnl0ZXMgdG8gYmUgZGlzY2FyZGVkLg0KICAqLw0KIHN0YXRpYyBzc2l6ZV90 IHRlc3Rfd2F2ZWZpbGUoaW50IGZkLCB1X2NoYXIgKl9idWZmZXIsIHNpemVfdCBzaXplKQ0KQEAg LTc4NCw2ICs4MzcsNyBAQCBzdGF0aWMgc3NpemVfdCB0ZXN0X3dhdmVmaWxlKGludCBmZCwgdV9j aGFyICpfYnVmZmVyLCBzaXplX3Qgc2l6ZSkNCiAJaWYgKGxlbiA8IHNpemVvZihXYXZlRm10Qm9k eSkpIHsNCiAJCWVycm9yKF8oInVua25vd24gbGVuZ3RoIG9mICdmbXQgJyBjaHVuayAocmVhZCAl dSwgc2hvdWxkIGJlICV1IGF0IGxlYXN0KSIpLA0KIAkJICAgICAgbGVuLCAodV9pbnQpc2l6ZW9m KFdhdmVGbXRCb2R5KSk7DQorCQlpZiAocGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVf bmFtZSk7DQogCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCX0NCiAJY2hlY2tfd2F2ZWZpbGVfc3Bh Y2UoYnVmZmVyLCBsZW4sIGJsaW1pdCk7DQpAQCAtNzk0LDIxICs4NDgsMjUgQEAgc3RhdGljIHNz aXplX3QgdGVzdF93YXZlZmlsZShpbnQgZmQsIHVfY2hhciAqX2J1ZmZlciwgc2l6ZV90IHNpemUp DQogCQlpZiAobGVuIDwgc2l6ZW9mKFdhdmVGbXRFeHRlbnNpYmxlQm9keSkpIHsNCiAJCQllcnJv cihfKCJ1bmtub3duIGxlbmd0aCBvZiBleHRlbnNpYmxlICdmbXQgJyBjaHVuayAocmVhZCAldSwg c2hvdWxkIGJlICV1IGF0IGxlYXN0KSIpLA0KIAkJCQkJbGVuLCAodV9pbnQpc2l6ZW9mKFdhdmVG bXRFeHRlbnNpYmxlQm9keSkpOw0KKwkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlk ZmlsZV9uYW1lKTsNCiAJCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCQl9DQogCQlpZiAobWVtY21w KGZlLT5ndWlkX3RhZywgV0FWX0dVSURfVEFHLCAxNCkgIT0gMCkgew0KIAkJCWVycm9yKF8oIndy b25nIGZvcm1hdCB0YWcgaW4gZXh0ZW5zaWJsZSAnZm10ICcgY2h1bmsiKSk7DQorCQkJaWYgKHBp ZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChwaWRmaWxlX25hbWUpOw0KIAkJCWV4aXQoRVhJVF9GQUlM VVJFKTsNCiAJCX0NCiAJCWYtPmZvcm1hdCA9IGZlLT5ndWlkX2Zvcm1hdDsNCiAJfQ0KLSAgICAg ICAgaWYgKExFX1NIT1JUKGYtPmZvcm1hdCkgIT0gV0FWX0ZNVF9QQ00gJiYNCi0gICAgICAgICAg ICBMRV9TSE9SVChmLT5mb3JtYXQpICE9IFdBVl9GTVRfSUVFRV9GTE9BVCkgew0KLSAgICAgICAg ICAgICAgICBlcnJvcihfKCJjYW4ndCBwbGF5IFdBVkUtZmlsZSBmb3JtYXQgMHglMDR4IHdoaWNo IGlzIG5vdCBQQ00gb3IgRkxPQVQgZW5jb2RlZCIpLCBMRV9TSE9SVChmLT5mb3JtYXQpKTsNCisJ aWYgKExFX1NIT1JUKGYtPmZvcm1hdCkgIT0gV0FWX0ZNVF9QQ00gJiYNCisJICAgIExFX1NIT1JU KGYtPmZvcm1hdCkgIT0gV0FWX0ZNVF9JRUVFX0ZMT0FUKSB7DQorCQllcnJvcihfKCJjYW4ndCBw bGF5IFdBVkUtZmlsZSBmb3JtYXQgMHglMDR4IHdoaWNoIGlzIG5vdCBQQ00gb3IgRkxPQVQgZW5j b2RlZCIpLCBMRV9TSE9SVChmLT5mb3JtYXQpKTsNCisJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJl bW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCiAJfQ0KIAlpZiAo TEVfU0hPUlQoZi0+Y2hhbm5lbHMpIDwgMSkgew0KIAkJZXJyb3IoXygiY2FuJ3QgcGxheSBXQVZF LWZpbGVzIHdpdGggJWQgdHJhY2tzIiksIExFX1NIT1JUKGYtPmNoYW5uZWxzKSk7DQorCQlpZiAo cGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQlleGl0KEVYSVRfRkFJ TFVSRSk7DQogCX0NCiAJaHdwYXJhbXMuY2hhbm5lbHMgPSBMRV9TSE9SVChmLT5jaGFubmVscyk7 DQpAQCAtODQyLDE4ICs5MDAsMjAgQEAgc3RhdGljIHNzaXplX3QgdGVzdF93YXZlZmlsZShpbnQg ZmQsIHVfY2hhciAqX2J1ZmZlciwgc2l6ZV90IHNpemUpDQogCQlkZWZhdWx0Og0KIAkJCWVycm9y KF8oIiBjYW4ndCBwbGF5IFdBVkUtZmlsZXMgd2l0aCBzYW1wbGUgJWQgYml0cyBpbiAlZCBieXRl cyB3aWRlICglZCBjaGFubmVscykiKSwNCiAJCQkgICAgICBMRV9TSE9SVChmLT5iaXRfcF9zcGwp LCBMRV9TSE9SVChmLT5ieXRlX3Bfc3BsKSwgaHdwYXJhbXMuY2hhbm5lbHMpOw0KKwkJCWlmIChw aWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCQlleGl0KEVYSVRfRkFJ TFVSRSk7DQogCQl9DQogCQlicmVhazsNCiAJY2FzZSAzMjoNCi0gICAgICAgICAgICAgICAgaWYg KExFX1NIT1JUKGYtPmZvcm1hdCkgPT0gV0FWX0ZNVF9QQ00pDQotICAgICAgICAgICAgICAgICAg ICAgICAgaHdwYXJhbXMuZm9ybWF0ID0gU05EX1BDTV9GT1JNQVRfUzMyX0xFOw0KLSAgICAgICAg ICAgICAgICBlbHNlIGlmIChMRV9TSE9SVChmLT5mb3JtYXQpID09IFdBVl9GTVRfSUVFRV9GTE9B VCkNCi0gICAgICAgICAgICAgICAgICAgICAgICBod3BhcmFtcy5mb3JtYXQgPSBTTkRfUENNX0ZP Uk1BVF9GTE9BVF9MRTsNCisJCWlmIChMRV9TSE9SVChmLT5mb3JtYXQpID09IFdBVl9GTVRfUENN KQ0KKwkJCWh3cGFyYW1zLmZvcm1hdCA9IFNORF9QQ01fRk9STUFUX1MzMl9MRTsNCisJCWVsc2Ug aWYgKExFX1NIT1JUKGYtPmZvcm1hdCkgPT0gV0FWX0ZNVF9JRUVFX0ZMT0FUKQ0KKwkJCWh3cGFy YW1zLmZvcm1hdCA9IFNORF9QQ01fRk9STUFUX0ZMT0FUX0xFOw0KIAkJYnJlYWs7DQogCWRlZmF1 bHQ6DQogCQllcnJvcihfKCIgY2FuJ3QgcGxheSBXQVZFLWZpbGVzIHdpdGggc2FtcGxlICVkIGJp dHMgd2lkZSIpLA0KIAkJICAgICAgTEVfU0hPUlQoZi0+Yml0X3Bfc3BsKSk7DQorCQlpZiAocGlk ZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQlleGl0KEVYSVRfRkFJTFVS RSk7DQogCX0NCiAJaHdwYXJhbXMucmF0ZSA9IExFX0lOVChmLT5zYW1wbGVfZnEpOw0KQEAgLTkz Niw2ICs5OTYsNyBAQCBzdGF0aWMgaW50IHRlc3RfYXUoaW50IGZkLCB2b2lkICpidWZmZXIpDQog CQlyZXR1cm4gLTE7DQogCWlmICgoc2l6ZV90KXNhZmVfcmVhZChmZCwgYnVmZmVyICsgc2l6ZW9m KEF1SGVhZGVyKSwgQkVfSU5UKGFwLT5oZHJfc2l6ZSkgLSBzaXplb2YoQXVIZWFkZXIpKSAhPSBC RV9JTlQoYXAtPmhkcl9zaXplKSAtIHNpemVvZihBdUhlYWRlcikpIHsNCiAJCWVycm9yKF8oInJl YWQgZXJyb3IiKSk7DQorCQlpZiAocGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFt ZSk7DQogCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCX0NCiAJcmV0dXJuIDA7DQpAQCAtOTY2LDYg KzEwMjcsNyBAQCBzdGF0aWMgdm9pZCBzZXRfcGFyYW1zKHZvaWQpDQogCWVyciA9IHNuZF9wY21f aHdfcGFyYW1zX2FueShoYW5kbGUsIHBhcmFtcyk7DQogCWlmIChlcnIgPCAwKSB7DQogCQllcnJv cihfKCJCcm9rZW4gY29uZmlndXJhdGlvbiBmb3IgdGhpcyBQQ006IG5vIGNvbmZpZ3VyYXRpb25z IGF2YWlsYWJsZSIpKTsNCisJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9u YW1lKTsNCiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCiAJfQ0KIAlpZiAobW1hcF9mbGFnKSB7DQpA QCAtOTgzLDE3ICsxMDQ1LDIwIEBAIHN0YXRpYyB2b2lkIHNldF9wYXJhbXModm9pZCkNCiAJCQkJ CQkgICBTTkRfUENNX0FDQ0VTU19SV19OT05JTlRFUkxFQVZFRCk7DQogCWlmIChlcnIgPCAwKSB7 DQogCQllcnJvcihfKCJBY2Nlc3MgdHlwZSBub3QgYXZhaWxhYmxlIikpOw0KKwkJaWYgKHBpZGZp bGVfd3JpdHRlbikgcmVtb3ZlIChwaWRmaWxlX25hbWUpOw0KIAkJZXhpdChFWElUX0ZBSUxVUkUp Ow0KIAl9DQogCWVyciA9IHNuZF9wY21faHdfcGFyYW1zX3NldF9mb3JtYXQoaGFuZGxlLCBwYXJh bXMsIGh3cGFyYW1zLmZvcm1hdCk7DQogCWlmIChlcnIgPCAwKSB7DQogCQllcnJvcihfKCJTYW1w bGUgZm9ybWF0IG5vbiBhdmFpbGFibGUiKSk7DQogCQlzaG93X2F2YWlsYWJsZV9zYW1wbGVfZm9y bWF0cyhwYXJhbXMpOw0KKwkJaWYgKHBpZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChwaWRmaWxlX25h bWUpOw0KIAkJZXhpdChFWElUX0ZBSUxVUkUpOw0KIAl9DQogCWVyciA9IHNuZF9wY21faHdfcGFy YW1zX3NldF9jaGFubmVscyhoYW5kbGUsIHBhcmFtcywgaHdwYXJhbXMuY2hhbm5lbHMpOw0KIAlp ZiAoZXJyIDwgMCkgew0KIAkJZXJyb3IoXygiQ2hhbm5lbHMgY291bnQgbm9uIGF2YWlsYWJsZSIp KTsNCisJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCWV4 aXQoRVhJVF9GQUlMVVJFKTsNCiAJfQ0KIA0KQEAgLTEwNTIsNiArMTExNyw3IEBAIHN0YXRpYyB2 b2lkIHNldF9wYXJhbXModm9pZCkNCiAJaWYgKGVyciA8IDApIHsNCiAJCWVycm9yKF8oIlVuYWJs ZSB0byBpbnN0YWxsIGh3IHBhcmFtczoiKSk7DQogCQlzbmRfcGNtX2h3X3BhcmFtc19kdW1wKHBh cmFtcywgbG9nKTsNCisJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1l KTsNCiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCiAJfQ0KIAlzbmRfcGNtX2h3X3BhcmFtc19nZXRf cGVyaW9kX3NpemUocGFyYW1zLCAmY2h1bmtfc2l6ZSwgMCk7DQpAQCAtMTA1OSw2ICsxMTI1LDcg QEAgc3RhdGljIHZvaWQgc2V0X3BhcmFtcyh2b2lkKQ0KIAlpZiAoY2h1bmtfc2l6ZSA9PSBidWZm ZXJfc2l6ZSkgew0KIAkJZXJyb3IoXygiQ2FuJ3QgdXNlIHBlcmlvZCBlcXVhbCB0byBidWZmZXIg c2l6ZSAoJWx1ID09ICVsdSkiKSwNCiAJCSAgICAgIGNodW5rX3NpemUsIGJ1ZmZlcl9zaXplKTsN CisJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCWV4aXQo RVhJVF9GQUlMVVJFKTsNCiAJfQ0KIAlzbmRfcGNtX3N3X3BhcmFtc19jdXJyZW50KGhhbmRsZSwg c3dwYXJhbXMpOw0KQEAgLTEwOTAsNiArMTE1Nyw3IEBAIHN0YXRpYyB2b2lkIHNldF9wYXJhbXMo dm9pZCkNCiAJaWYgKHNuZF9wY21fc3dfcGFyYW1zKGhhbmRsZSwgc3dwYXJhbXMpIDwgMCkgew0K IAkJZXJyb3IoXygidW5hYmxlIHRvIGluc3RhbGwgc3cgcGFyYW1zOiIpKTsNCiAJCXNuZF9wY21f c3dfcGFyYW1zX2R1bXAoc3dwYXJhbXMsIGxvZyk7DQorCQlpZiAocGlkZmlsZV93cml0dGVuKSBy ZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCX0NCiANCkBA IC0xMTAyLDYgKzExNzAsNyBAQCBzdGF0aWMgdm9pZCBzZXRfcGFyYW1zKHZvaWQpDQogCWF1ZGlv YnVmID0gcmVhbGxvYyhhdWRpb2J1ZiwgY2h1bmtfYnl0ZXMpOw0KIAlpZiAoYXVkaW9idWYgPT0g TlVMTCkgew0KIAkJZXJyb3IoXygibm90IGVub3VnaCBtZW1vcnkiKSk7DQorCQlpZiAocGlkZmls ZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQlleGl0KEVYSVRfRkFJTFVSRSk7 DQogCX0NCiAJLy8gZnByaW50ZihzdGRlcnIsICJyZWFsIGNodW5rX3NpemUgPSAlaSwgZnJhZ3Mg PSAlaSwgdG90YWwgPSAlaVxuIiwgY2h1bmtfc2l6ZSwgc2V0dXAuYnVmLmJsb2NrLmZyYWdzLCBz ZXR1cC5idWYuYmxvY2suZnJhZ3MgKiBjaHVua19zaXplKTsNCkBAIC0xMTIwLDYgKzExODksNyBA QCBzdGF0aWMgdm9pZCBzZXRfcGFyYW1zKHZvaWQpDQogCQllcnIgPSBzbmRfcGNtX21tYXBfYmVn aW4oaGFuZGxlLCAmYXJlYXMsICZvZmZzZXQsICZzaXplKTsNCiAJCWlmIChlcnIgPCAwKSB7DQog CQkJZXJyb3IoInNuZF9wY21fbW1hcF9iZWdpbiBwcm9ibGVtOiAlcyIsIHNuZF9zdHJlcnJvcihl cnIpKTsNCisJCQlpZiAocGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQog CQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KIAkJfQ0KIAkJZm9yIChpID0gMDsgaSA8IGh3cGFyYW1z LmNoYW5uZWxzOyBpKyspDQpAQCAtMTE2NCw2ICsxMjM0LDcgQEAgc3RhdGljIHZvaWQgeHJ1bih2 b2lkKQ0KIAlzbmRfcGNtX3N0YXR1c19hbGxvY2EoJnN0YXR1cyk7DQogCWlmICgocmVzID0gc25k X3BjbV9zdGF0dXMoaGFuZGxlLCBzdGF0dXMpKTwwKSB7DQogCQllcnJvcihfKCJzdGF0dXMgZXJy b3I6ICVzIiksIHNuZF9zdHJlcnJvcihyZXMpKTsNCisJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJl bW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCiAJfQ0KIAlpZiAo c25kX3BjbV9zdGF0dXNfZ2V0X3N0YXRlKHN0YXR1cykgPT0gU05EX1BDTV9TVEFURV9YUlVOKSB7 DQpAQCAtMTE5NCw2ICsxMjY1LDcgQEAgc3RhdGljIHZvaWQgeHJ1bih2b2lkKQ0KIAkJfQ0KIAkJ aWYgKChyZXMgPSBzbmRfcGNtX3ByZXBhcmUoaGFuZGxlKSk8MCkgew0KIAkJCWVycm9yKF8oInhy dW46IHByZXBhcmUgZXJyb3I6ICVzIiksIHNuZF9zdHJlcnJvcihyZXMpKTsNCisJCQlpZiAocGlk ZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQkJZXhpdChFWElUX0ZBSUxV UkUpOw0KIAkJfQ0KIAkJcmV0dXJuOwkJLyogb2ssIGRhdGEgc2hvdWxkIGJlIGFjY2VwdGVkIGFn YWluICovDQpAQCAtMTIwNiw2ICsxMjc4LDcgQEAgc3RhdGljIHZvaWQgeHJ1bih2b2lkKQ0KIAkJ CWZwcmludGYoc3RkZXJyLCBfKCJjYXB0dXJlIHN0cmVhbSBmb3JtYXQgY2hhbmdlPyBhdHRlbXB0 aW5nIHJlY292ZXIuLi5cbiIpKTsNCiAJCQlpZiAoKHJlcyA9IHNuZF9wY21fcHJlcGFyZShoYW5k bGUpKTwwKSB7DQogCQkJCWVycm9yKF8oInhydW4oRFJBSU5JTkcpOiBwcmVwYXJlIGVycm9yOiAl cyIpLCBzbmRfc3RyZXJyb3IocmVzKSk7DQorCQkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92 ZSAocGlkZmlsZV9uYW1lKTsNCiAJCQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KIAkJCX0NCiAJCQly ZXR1cm47DQpAQCAtMTIxNiw2ICsxMjg5LDcgQEAgc3RhdGljIHZvaWQgeHJ1bih2b2lkKQ0KIAkJ c25kX3BjbV9zdGF0dXNfZHVtcChzdGF0dXMsIGxvZyk7DQogCX0NCiAJZXJyb3IoXygicmVhZC93 cml0ZSBlcnJvciwgc3RhdGUgPSAlcyIpLCBzbmRfcGNtX3N0YXRlX25hbWUoc25kX3BjbV9zdGF0 dXNfZ2V0X3N0YXRlKHN0YXR1cykpKTsNCisJaWYgKHBpZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChw aWRmaWxlX25hbWUpOw0KIAlleGl0KEVYSVRfRkFJTFVSRSk7DQogfQ0KIA0KQEAgLTEyMzMsNiAr MTMwNyw3IEBAIHN0YXRpYyB2b2lkIHN1c3BlbmQodm9pZCkNCiAJCQlmcHJpbnRmKHN0ZGVyciwg XygiRmFpbGVkLiBSZXN0YXJ0aW5nIHN0cmVhbS4gIikpOyBmZmx1c2goc3RkZXJyKTsNCiAJCWlm ICgocmVzID0gc25kX3BjbV9wcmVwYXJlKGhhbmRsZSkpIDwgMCkgew0KIAkJCWVycm9yKF8oInN1 c3BlbmQ6IHByZXBhcmUgZXJyb3I6ICVzIiksIHNuZF9zdHJlcnJvcihyZXMpKTsNCisJCQlpZiAo cGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQkJZXhpdChFWElUX0ZB SUxVUkUpOw0KIAkJfQ0KIAl9DQpAQCAtMTUzOCw2ICsxNjEzLDcgQEAgc3RhdGljIHNzaXplX3Qg cGNtX3dyaXRlKHVfY2hhciAqZGF0YSwgc2l6ZV90IGNvdW50KQ0KIAkJCXN1c3BlbmQoKTsNCiAJ CX0gZWxzZSBpZiAociA8IDApIHsNCiAJCQllcnJvcihfKCJ3cml0ZSBlcnJvcjogJXMiKSwgc25k X3N0cmVycm9yKHIpKTsNCisJCQlpZiAocGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVf bmFtZSk7DQogCQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KIAkJfQ0KIAkJaWYgKHIgPiAwKSB7DQpA QCAtMTU4NCw2ICsxNjYwLDcgQEAgc3RhdGljIHNzaXplX3QgcGNtX3dyaXRldih1X2NoYXIgKipk YXRhLCB1bnNpZ25lZCBpbnQgY2hhbm5lbHMsIHNpemVfdCBjb3VudCkNCiAJCQlzdXNwZW5kKCk7 DQogCQl9IGVsc2UgaWYgKHIgPCAwKSB7DQogCQkJZXJyb3IoXygid3JpdGV2IGVycm9yOiAlcyIp LCBzbmRfc3RyZXJyb3IocikpOw0KKwkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlk ZmlsZV9uYW1lKTsNCiAJCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCQl9DQogCQlpZiAociA+IDAp IHsNCkBAIC0xNjI3LDYgKzE3MDQsNyBAQCBzdGF0aWMgc3NpemVfdCBwY21fcmVhZCh1X2NoYXIg KmRhdGEsIHNpemVfdCByY291bnQpDQogCQkJc3VzcGVuZCgpOw0KIAkJfSBlbHNlIGlmIChyIDwg MCkgew0KIAkJCWVycm9yKF8oInJlYWQgZXJyb3I6ICVzIiksIHNuZF9zdHJlcnJvcihyKSk7DQor CQkJaWYgKHBpZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChwaWRmaWxlX25hbWUpOw0KIAkJCWV4aXQo RVhJVF9GQUlMVVJFKTsNCiAJCX0NCiAJCWlmIChyID4gMCkgew0KQEAgLTE2NzAsNiArMTc0OCw3 IEBAIHN0YXRpYyBzc2l6ZV90IHBjbV9yZWFkdih1X2NoYXIgKipkYXRhLCB1bnNpZ25lZCBpbnQg Y2hhbm5lbHMsIHNpemVfdCByY291bnQpDQogCQkJc3VzcGVuZCgpOw0KIAkJfSBlbHNlIGlmIChy IDwgMCkgew0KIAkJCWVycm9yKF8oInJlYWR2IGVycm9yOiAlcyIpLCBzbmRfc3RyZXJyb3Iocikp Ow0KKwkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCQll eGl0KEVYSVRfRkFJTFVSRSk7DQogCQl9DQogCQlpZiAociA+IDApIHsNCkBAIC0xNzI3LDYgKzE4 MDYsNyBAQCBzdGF0aWMgdm9pZCB2b2Nfd3JpdGVfc2lsZW5jZSh1bnNpZ25lZCB4KQ0KIAkJCWwg PSBjaHVua19zaXplOw0KIAkJaWYgKHZvY19wY21fd3JpdGUoYnVmLCBsKSAhPSAoc3NpemVfdCls KSB7DQogCQkJZXJyb3IoXygid3JpdGUgZXJyb3IiKSk7DQorCQkJaWYgKHBpZGZpbGVfd3JpdHRl bikgcmVtb3ZlIChwaWRmaWxlX25hbWUpOw0KIAkJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCiAJCX0N CiAJCXggLT0gbDsNCkBAIC0xNzY5LDYgKzE4NDksNyBAQCBzdGF0aWMgdm9pZCB2b2NfcGxheShp bnQgZmQsIGludCBvZnMsIGNoYXIgKm5hbWUpDQogCWJ1ZmZlcl9wb3MgPSAwOw0KIAlpZiAoZGF0 YSA9PSBOVUxMKSB7DQogCQllcnJvcihfKCJtYWxsb2MgZXJyb3IiKSk7DQorCQlpZiAocGlkZmls ZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQlleGl0KEVYSVRfRkFJTFVSRSk7 DQogCX0NCiAJaWYgKCFxdWlldF9tb2RlKSB7DQpAQCAtMTc3OCw2ICsxODU5LDcgQEAgc3RhdGlj IHZvaWQgdm9jX3BsYXkoaW50IGZkLCBpbnQgb2ZzLCBjaGFyICpuYW1lKQ0KIAl3aGlsZSAob2Zz ID4gKHNzaXplX3QpY2h1bmtfYnl0ZXMpIHsNCiAJCWlmICgoc2l6ZV90KXNhZmVfcmVhZChmZCwg YnVmLCBjaHVua19ieXRlcykgIT0gY2h1bmtfYnl0ZXMpIHsNCiAJCQllcnJvcihfKCJyZWFkIGVy cm9yIikpOw0KKwkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsN CiAJCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCQl9DQogCQlvZnMgLT0gY2h1bmtfYnl0ZXM7DQpA QCAtMTc4NSw2ICsxODY3LDcgQEAgc3RhdGljIHZvaWQgdm9jX3BsYXkoaW50IGZkLCBpbnQgb2Zz LCBjaGFyICpuYW1lKQ0KIAlpZiAob2ZzKSB7DQogCQlpZiAoc2FmZV9yZWFkKGZkLCBidWYsIG9m cykgIT0gb2ZzKSB7DQogCQkJZXJyb3IoXygicmVhZCBlcnJvciIpKTsNCisJCQlpZiAocGlkZmls ZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQkJZXhpdChFWElUX0ZBSUxVUkUp Ow0KIAkJfQ0KIAl9DQpAQCAtMTgwOSw2ICsxODkyLDcgQEAgc3RhdGljIHZvaWQgdm9jX3BsYXko aW50IGZkLCBpbnQgb2ZzLCBjaGFyICpuYW1lKQ0KIAkJCQluZXh0YmxvY2sgPSBidWZbMF0gPSAw Ow0KIAkJCQlpZiAobCA9PSAtMSkgew0KIAkJCQkJcGVycm9yKG5hbWUpOw0KKwkJCQkJaWYgKHBp ZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChwaWRmaWxlX25hbWUpOw0KIAkJCQkJZXhpdChFWElUX0ZB SUxVUkUpOw0KIAkJCQl9DQogCQkJfQ0KQEAgLTE5NTMsMTEgKzIwMzcsMTMgQEAgc3RhdGljIHZv aWQgdm9jX3BsYXkoaW50IGZkLCBpbnQgb2ZzLCBjaGFyICpuYW1lKQ0KIAkJCWlmIChvdXRwdXQg JiYgIXF1aWV0X21vZGUpIHsNCiAJCQkJaWYgKHdyaXRlKDIsIGRhdGEsIGwpICE9IGwpIHsJLyog dG8gc3RkZXJyICovDQogCQkJCQllcnJvcihfKCJ3cml0ZSBlcnJvciIpKTsNCisJCQkJCWlmIChw aWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCQkJCWV4aXQoRVhJVF9G QUlMVVJFKTsNCiAJCQkJfQ0KIAkJCX0gZWxzZSB7DQogCQkJCWlmICh2b2NfcGNtX3dyaXRlKGRh dGEsIGwpICE9IGwpIHsNCiAJCQkJCWVycm9yKF8oIndyaXRlIGVycm9yIikpOw0KKwkJCQkJaWYg KHBpZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChwaWRmaWxlX25hbWUpOw0KIAkJCQkJZXhpdChFWElU X0ZBSUxVUkUpOw0KIAkJCQl9DQogCQkJfQ0KQEAgLTE5NjUsOCArMjA1MSw4IEBAIHN0YXRpYyB2 b2lkIHZvY19wbGF5KGludCBmZCwgaW50IG9mcywgY2hhciAqbmFtZSkNCiAJCX0NCiAJfQkJCS8q IHdoaWxlKDEpICovDQogICAgICAgX19lbmQ6DQotICAgICAgICB2b2NfcGNtX2ZsdXNoKCk7DQot ICAgICAgICBmcmVlKGJ1Zik7DQorCXZvY19wY21fZmx1c2goKTsNCisJZnJlZShidWYpOw0KIH0N CiAvKiB0aGF0IHdhcyBhIGJpZyBvbmUsIHBlcmhhcHMgc29tZWJvZHkgc3BsaXQgaXQgOi0pICov DQogDQpAQCAtMjAwNSw2ICsyMDkxLDcgQEAgc3RhdGljIHZvaWQgYmVnaW5fdm9jKGludCBmZCwg c2l6ZV90IGNudCkNCiANCiAJaWYgKHdyaXRlKGZkLCAmdmgsIHNpemVvZihWb2NIZWFkZXIpKSAh PSBzaXplb2YoVm9jSGVhZGVyKSkgew0KIAkJZXJyb3IoXygid3JpdGUgZXJyb3IiKSk7DQorCQlp ZiAocGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQlleGl0KEVYSVRf RkFJTFVSRSk7DQogCX0NCiAJaWYgKGh3cGFyYW1zLmNoYW5uZWxzID4gMSkgew0KQEAgLTIwMTQs NiArMjEwMSw3IEBAIHN0YXRpYyB2b2lkIGJlZ2luX3ZvYyhpbnQgZmQsIHNpemVfdCBjbnQpDQog CQlidC5kYXRhbGVuX20gPSBidC5kYXRhbGVuX2ggPSAwOw0KIAkJaWYgKHdyaXRlKGZkLCAmYnQs IHNpemVvZihWb2NCbG9ja1R5cGUpKSAhPSBzaXplb2YoVm9jQmxvY2tUeXBlKSkgew0KIAkJCWVy cm9yKF8oIndyaXRlIGVycm9yIikpOw0KKwkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAo cGlkZmlsZV9uYW1lKTsNCiAJCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCQl9DQogCQllYi50YyA9 IExFX1NIT1JUKDY1NTM2IC0gMjU2MDAwMDAwTCAvIChod3BhcmFtcy5yYXRlIDw8IDEpKTsNCkBA IC0yMDIxLDYgKzIxMDksNyBAQCBzdGF0aWMgdm9pZCBiZWdpbl92b2MoaW50IGZkLCBzaXplX3Qg Y250KQ0KIAkJZWIubW9kZSA9IDE7DQogCQlpZiAod3JpdGUoZmQsICZlYiwgc2l6ZW9mKFZvY0V4 dEJsb2NrKSkgIT0gc2l6ZW9mKFZvY0V4dEJsb2NrKSkgew0KIAkJCWVycm9yKF8oIndyaXRlIGVy cm9yIikpOw0KKwkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsN CiAJCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCQl9DQogCX0NCkBAIC0yMDMxLDEyICsyMTIwLDE0 IEBAIHN0YXRpYyB2b2lkIGJlZ2luX3ZvYyhpbnQgZmQsIHNpemVfdCBjbnQpDQogCWJ0LmRhdGFs ZW5faCA9ICh1X2NoYXIpICgoY250ICYgMHhGRjAwMDApID4+IDE2KTsNCiAJaWYgKHdyaXRlKGZk LCAmYnQsIHNpemVvZihWb2NCbG9ja1R5cGUpKSAhPSBzaXplb2YoVm9jQmxvY2tUeXBlKSkgew0K IAkJZXJyb3IoXygid3JpdGUgZXJyb3IiKSk7DQorCQlpZiAocGlkZmlsZV93cml0dGVuKSByZW1v dmUgKHBpZGZpbGVfbmFtZSk7DQogCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCX0NCiAJdmQudGMg PSAodV9jaGFyKSAoMjU2IC0gKDEwMDAwMDAgLyBod3BhcmFtcy5yYXRlKSk7DQogCXZkLnBhY2sg PSAwOw0KIAlpZiAod3JpdGUoZmQsICZ2ZCwgc2l6ZW9mKFZvY1ZvaWNlRGF0YSkpICE9IHNpemVv ZihWb2NWb2ljZURhdGEpKSB7DQogCQllcnJvcihfKCJ3cml0ZSBlcnJvciIpKTsNCisJCWlmIChw aWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCWV4aXQoRVhJVF9GQUlM VVJFKTsNCiAJfQ0KIH0NCkBAIC0yMDY0LDcgKzIxNTUsNyBAQCBzdGF0aWMgdm9pZCBiZWdpbl93 YXZlKGludCBmZCwgc2l6ZV90IGNudCkNCiAJCWJpdHMgPSAxNjsNCiAJCWJyZWFrOw0KIAljYXNl IFNORF9QQ01fRk9STUFUX1MzMl9MRToNCi0gICAgICAgIGNhc2UgU05EX1BDTV9GT1JNQVRfRkxP QVRfTEU6DQorCWNhc2UgU05EX1BDTV9GT1JNQVRfRkxPQVRfTEU6DQogCQliaXRzID0gMzI7DQog CQlicmVhazsNCiAJY2FzZSBTTkRfUENNX0ZPUk1BVF9TMjRfTEU6DQpAQCAtMjA3Myw2ICsyMTY0 LDcgQEAgc3RhdGljIHZvaWQgYmVnaW5fd2F2ZShpbnQgZmQsIHNpemVfdCBjbnQpDQogCQlicmVh azsNCiAJZGVmYXVsdDoNCiAJCWVycm9yKF8oIldhdmUgZG9lc24ndCBzdXBwb3J0ICVzIGZvcm1h dC4uLiIpLCBzbmRfcGNtX2Zvcm1hdF9uYW1lKGh3cGFyYW1zLmZvcm1hdCkpOw0KKwkJaWYgKHBp ZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChwaWRmaWxlX25hbWUpOw0KIAkJZXhpdChFWElUX0ZBSUxV UkUpOw0KIAl9DQogCWgubWFnaWMgPSBXQVZfUklGRjsNCkBAIC0yMDgzLDEwICsyMTc1LDEwIEBA IHN0YXRpYyB2b2lkIGJlZ2luX3dhdmUoaW50IGZkLCBzaXplX3QgY250KQ0KIAljZi50eXBlID0g V0FWX0ZNVDsNCiAJY2YubGVuZ3RoID0gTEVfSU5UKDE2KTsNCiANCi0gICAgICAgIGlmIChod3Bh cmFtcy5mb3JtYXQgPT0gU05EX1BDTV9GT1JNQVRfRkxPQVRfTEUpDQotICAgICAgICAgICAgICAg IGYuZm9ybWF0ID0gTEVfU0hPUlQoV0FWX0ZNVF9JRUVFX0ZMT0FUKTsNCi0gICAgICAgIGVsc2UN Ci0gICAgICAgICAgICAgICAgZi5mb3JtYXQgPSBMRV9TSE9SVChXQVZfRk1UX1BDTSk7DQorCWlm IChod3BhcmFtcy5mb3JtYXQgPT0gU05EX1BDTV9GT1JNQVRfRkxPQVRfTEUpDQorCQlmLmZvcm1h dCA9IExFX1NIT1JUKFdBVl9GTVRfSUVFRV9GTE9BVCk7DQorCWVsc2UNCisJCWYuZm9ybWF0ID0g TEVfU0hPUlQoV0FWX0ZNVF9QQ00pOw0KIAlmLmNoYW5uZWxzID0gTEVfU0hPUlQoaHdwYXJhbXMu Y2hhbm5lbHMpOw0KIAlmLnNhbXBsZV9mcSA9IExFX0lOVChod3BhcmFtcy5yYXRlKTsNCiAjaWYg MA0KQEAgLTIxMDksNiArMjIwMSw3IEBAIHN0YXRpYyB2b2lkIGJlZ2luX3dhdmUoaW50IGZkLCBz aXplX3QgY250KQ0KIAkgICAgd3JpdGUoZmQsICZmLCBzaXplb2YoV2F2ZUZtdEJvZHkpKSAhPSBz aXplb2YoV2F2ZUZtdEJvZHkpIHx8DQogCSAgICB3cml0ZShmZCwgJmNkLCBzaXplb2YoV2F2ZUNo dW5rSGVhZGVyKSkgIT0gc2l6ZW9mKFdhdmVDaHVua0hlYWRlcikpIHsNCiAJCWVycm9yKF8oIndy aXRlIGVycm9yIikpOw0KKwkJaWYgKHBpZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChwaWRmaWxlX25h bWUpOw0KIAkJZXhpdChFWElUX0ZBSUxVUkUpOw0KIAl9DQogfQ0KQEAgLTIxMzMsMTIgKzIyMjYs MTQgQEAgc3RhdGljIHZvaWQgYmVnaW5fYXUoaW50IGZkLCBzaXplX3QgY250KQ0KIAkJYnJlYWs7 DQogCWRlZmF1bHQ6DQogCQllcnJvcihfKCJTcGFyYyBBdWRpbyBkb2Vzbid0IHN1cHBvcnQgJXMg Zm9ybWF0Li4uIiksIHNuZF9wY21fZm9ybWF0X25hbWUoaHdwYXJhbXMuZm9ybWF0KSk7DQorCQlp ZiAocGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQlleGl0KEVYSVRf RkFJTFVSRSk7DQogCX0NCiAJYWguc2FtcGxlX3JhdGUgPSBCRV9JTlQoaHdwYXJhbXMucmF0ZSk7 DQogCWFoLmNoYW5uZWxzID0gQkVfSU5UKGh3cGFyYW1zLmNoYW5uZWxzKTsNCiAJaWYgKHdyaXRl KGZkLCAmYWgsIHNpemVvZihBdUhlYWRlcikpICE9IHNpemVvZihBdUhlYWRlcikpIHsNCiAJCWVy cm9yKF8oIndyaXRlIGVycm9yIikpOw0KKwkJaWYgKHBpZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChw aWRmaWxlX25hbWUpOw0KIAkJZXhpdChFWElUX0ZBSUxVUkUpOw0KIAl9DQogfQ0KQEAgLTIxNTMs NiArMjI0OCw3IEBAIHN0YXRpYyB2b2lkIGVuZF92b2MoaW50IGZkKQ0KIA0KIAlpZiAod3JpdGUo ZmQsICZkdW1teSwgMSkgIT0gMSkgew0KIAkJZXJyb3IoXygid3JpdGUgZXJyb3IiKSk7DQorCQlp ZiAocGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQogCQlleGl0KEVYSVRf RkFJTFVSRSk7DQogCX0NCiAJbGVuZ3RoX3NlZWsgPSBzaXplb2YoVm9jSGVhZGVyKTsNCkBAIC0y MjYxLDYgKzIzNTcsNyBAQCBzdGF0aWMgdm9pZCBwbGF5YmFja19nbyhpbnQgZmQsIHNpemVfdCBs b2FkZWQsIG9mZjY0X3QgY291bnQsIGludCBydHlwZSwgY2hhciAqbg0KIAkJCXIgPSBzYWZlX3Jl YWQoZmQsIGF1ZGlvYnVmICsgbCwgYyk7DQogCQkJaWYgKHIgPCAwKSB7DQogCQkJCXBlcnJvcihu YW1lKTsNCisJCQkJaWYgKHBpZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChwaWRmaWxlX25hbWUpOw0K IAkJCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCQkJfQ0KIAkJCWZkY291bnQgKz0gcjsNCkBAIC0y MzAwLDYgKzIzOTcsNyBAQCBzdGF0aWMgdm9pZCBwbGF5YmFjayhjaGFyICpuYW1lKQ0KIAl9IGVs c2Ugew0KIAkJaWYgKChmZCA9IG9wZW42NChuYW1lLCBPX1JET05MWSwgMCkpID09IC0xKSB7DQog CQkJcGVycm9yKG5hbWUpOw0KKwkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmls ZV9uYW1lKTsNCiAJCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCQl9DQogCX0NCkBAIC0yMzA3LDYg KzI0MDUsNyBAQCBzdGF0aWMgdm9pZCBwbGF5YmFjayhjaGFyICpuYW1lKQ0KIAlkdGEgPSBzaXpl b2YoQXVIZWFkZXIpOw0KIAlpZiAoKHNpemVfdClzYWZlX3JlYWQoZmQsIGF1ZGlvYnVmLCBkdGEp ICE9IGR0YSkgew0KIAkJZXJyb3IoXygicmVhZCBlcnJvciIpKTsNCisJCWlmIChwaWRmaWxlX3dy aXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCiAJ fQ0KIAlpZiAodGVzdF9hdShmZCwgYXVkaW9idWYpID49IDApIHsNCkBAIC0yMzE5LDYgKzI0MTgs NyBAQCBzdGF0aWMgdm9pZCBwbGF5YmFjayhjaGFyICpuYW1lKQ0KIAlpZiAoKHNpemVfdClzYWZl X3JlYWQoZmQsIGF1ZGlvYnVmICsgc2l6ZW9mKEF1SGVhZGVyKSwNCiAJCSBkdGEgLSBzaXplb2Yo QXVIZWFkZXIpKSAhPSBkdGEgLSBzaXplb2YoQXVIZWFkZXIpKSB7DQogCQllcnJvcihfKCJyZWFk IGVycm9yIikpOw0KKwkJaWYgKHBpZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChwaWRmaWxlX25hbWUp Ow0KIAkJZXhpdChFWElUX0ZBSUxVUkUpOw0KIAl9DQogCWlmICgob2ZzID0gdGVzdF92b2NmaWxl KGF1ZGlvYnVmKSkgPj0gMCkgew0KQEAgLTIzNDEsMTMgKzI0NDEsMTAwIEBAIHN0YXRpYyB2b2lk IHBsYXliYWNrKGNoYXIgKm5hbWUpDQogCQljbG9zZShmZCk7DQogfQ0KIA0KKy8qKg0KKyAqIG15 c3RyZnRpbWUNCisgKg0KKyAqICAgVmFyaWFudCBvZiBzdHJmdGltZSgzKSB0aGF0IHN1cHBvcnRz IGFkZGl0aW9uYWwgZm9ybWF0DQorICogICBzcGVjaWZpZXJzIGluIHRoZSBmb3JtYXQgc3RyaW5n Lg0KKyAqDQorICogUGFyYW1ldGVyczoNCisgKg0KKyAqICAgcwkgIC0gZGVzdGluYXRpb24gc3Ry aW5nDQorICogICBtYXgJLSBtYXggbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlDQorICogICB1c2Vy Zm9ybWF0IC0gZm9ybWF0IHN0cmluZw0KKyAqICAgdG0JIC0gdGltZSBpbmZvcm1hdGlvbg0KKyAq ICAgZmlsZW51bWJlciAtIHRoZSBudW1iZXIgb2YgdGhlIGZpbGUsIHN0YXJ0aW5nIGF0IDENCisg Kg0KKyAqIFJldHVybnM6IG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSBzdHJpbmcgcw0K KyAqLw0KK3NpemVfdCBteXN0cmZ0aW1lKGNoYXIgKnMsIHNpemVfdCBtYXgsIGNvbnN0IGNoYXIg KnVzZXJmb3JtYXQsDQorCQkgIGNvbnN0IHN0cnVjdCB0bSAqdG0sIGNvbnN0IGludCBmaWxlbnVt YmVyKQ0KK3sNCisJY2hhciBmb3JtYXRzdHJpbmdbUEFUSF9NQVhdID0gIiI7DQorCWNoYXIgdGVt cHN0cmluZ1tQQVRIX01BWF0gPSAiIjsNCisJY2hhciAqZm9ybWF0LCAqdGVtcHN0cjsNCisJY29u c3QgY2hhciAqcG9zX3VzZXJmb3JtYXQ7DQorDQorCWZvcm1hdCA9IGZvcm1hdHN0cmluZzsNCisN CisJLyogaWYgbXlzdHJmdGltZSBpcyBjYWxsZWQgd2l0aCB1c2VyZm9ybWF0ID0gTlVMTCB3ZSBy ZXR1cm4gYSB6ZXJvIGxlbmd0aCBzdHJpbmcgKi8NCisJaWYgKHVzZXJmb3JtYXQgPT0gTlVMTCkg ew0KKwkJKnMgPSAnXDAnOw0KKwkJcmV0dXJuIDA7DQorCX0NCisNCisJZm9yIChwb3NfdXNlcmZv cm1hdCA9IHVzZXJmb3JtYXQ7ICpwb3NfdXNlcmZvcm1hdDsgKytwb3NfdXNlcmZvcm1hdCkgew0K KwkJaWYgKCpwb3NfdXNlcmZvcm1hdCA9PSAnJScpIHsNCisJCQl0ZW1wc3RyID0gdGVtcHN0cmlu ZzsNCisJCQl0ZW1wc3RyWzBdID0gJ1wwJzsNCisJCQlzd2l0Y2ggKCorK3Bvc191c2VyZm9ybWF0 KSB7DQorDQorCQkJCWNhc2UgJ1wwJzogLy8gZW5kIG9mIHN0cmluZw0KKwkJCQkJLS1wb3NfdXNl cmZvcm1hdDsNCisJCQkJCWJyZWFrOw0KKw0KKwkJCQljYXNlICd2JzogLy8gZmlsZSBudW1iZXIg DQorCQkJCQlzcHJpbnRmKHRlbXBzdHIsICIlMDJkIiwgZmlsZW51bWJlcik7DQorCQkJCQlicmVh azsNCisNCisJCQkJZGVmYXVsdDogLy8gQWxsIG90aGVyIGNvZGVzIHdpbGwgYmUgaGFuZGxlZCBi eSBzdHJmdGltZQ0KKwkJCQkJKmZvcm1hdCsrID0gJyUnOw0KKwkJCQkJKmZvcm1hdCsrID0gKnBv c191c2VyZm9ybWF0Ow0KKwkJCQkJY29udGludWU7DQorCQkJfQ0KKw0KKwkJCS8qIElmIGEgZm9y bWF0IHNwZWNpZmllciB3YXMgZm91bmQgYW5kIHVzZWQsIGNvcHkgdGhlIHJlc3VsdC4gKi8NCisJ CQlpZiAodGVtcHN0clswXSkgew0KKwkJCQl3aGlsZSAoKCpmb3JtYXQgPSAqdGVtcHN0cisrKSAh PSAnXDAnKQ0KKwkJCQkJKytmb3JtYXQ7DQorCQkJCWNvbnRpbnVlOw0KKwkJCX0NCisJCX0NCisN CisJCS8qIEZvciBhbnkgb3RoZXIgY2hhcmFjdGVyIHRoYW4gJSB3ZSBzaW1wbHkgY29weSB0aGUg Y2hhcmFjdGVyICovDQorCQkqZm9ybWF0KysgPSAqcG9zX3VzZXJmb3JtYXQ7DQorCX0NCisNCisJ KmZvcm1hdCA9ICdcMCc7DQorCWZvcm1hdCA9IGZvcm1hdHN0cmluZzsNCisJcmV0dXJuIHN0cmZ0 aW1lKHMsIG1heCwgZm9ybWF0LCB0bSk7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbmV3X2NhcHR1cmVf ZmlsZShjaGFyICpuYW1lLCBjaGFyICpuYW1lYnVmLCBzaXplX3QgbmFtZWxlbiwNCiAJCQkgICAg aW50IGZpbGVjb3VudCkNCiB7DQotCS8qIGdldCBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGZpbGVu YW1lICovDQogCWNoYXIgKnM7DQogCWNoYXIgYnVmW1BBVEhfTUFYKzFdOw0KKwl0aW1lX3QgdDsN CisJc3RydWN0IHRtICp0bXA7DQorDQorCWlmICh1c2Vfc3RyZnRpbWUpIHsNCisJCXQgPSB0aW1l KE5VTEwpOw0KKwkJdG1wID0gbG9jYWx0aW1lKCZ0KTsNCisJCWlmICh0bXAgPT0gTlVMTCkgew0K KwkJCXBlcnJvciAoImxvY2FsdGltZSIpOw0KKwkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92 ZSAocGlkZmlsZV9uYW1lKTsNCisJCQlleGl0IChFWElUX0ZBSUxVUkUpOw0KKwkJfQ0KKwkJaWYg KG15c3RyZnRpbWUgKG5hbWVidWYsIG5hbWVsZW4sIG5hbWUsIHRtcCwgZmlsZWNvdW50KzEpID09 IDApIHsNCisJCQlpZiAocGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQor CQkJZnByaW50ZiAoc3RkZXJyLCAibXlzdHJmdGltZSByZXR1cm5lZCAwIik7DQorCQkJZXhpdCAo RVhJVF9GQUlMVVJFKTsNCisJCX0NCisJCXJldHVybiBmaWxlY291bnQ7DQorCX0NCiANCisJLyog Z2V0IGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgKi8NCiAJc3RybmNweShidWYsIG5h bWUsIHNpemVvZihidWYpKTsNCiANCiAJLyogc2VwYXJhdGUgZXh0ZW5zaW9uIGZyb20gZmlsZW5h bWUgKi8NCkBAIC0yMzc5LDYgKzI1NjYsNDQgQEAgc3RhdGljIGludCBuZXdfY2FwdHVyZV9maWxl KGNoYXIgKm5hbWUsIGNoYXIgKm5hbWVidWYsIHNpemVfdCBuYW1lbGVuLA0KIAlyZXR1cm4gZmls ZWNvdW50Ow0KIH0NCiANCisvKioNCisgKiBjcmVhdGVfcGF0aA0KKyAqDQorICogICBUaGlzIGZ1 bmN0aW9uIGNyZWF0ZXMgYSBmaWxlIHBhdGgsIGxpa2UgbWtkaXIgLXAuIA0KKyAqDQorICogUGFy YW1ldGVyczoNCisgKg0KKyAqICAgcGF0aCAtIHRoZSBwYXRoIHRvIGNyZWF0ZQ0KKyAqDQorICog UmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlDQorICogT24gZmFpbHVyZSwgYSBt ZXNzYWdlIGhhcyBiZWVuIHByaW50ZWQgdG8gc3RkZXJyLg0KKyAqLw0KK2ludCBjcmVhdGVfcGF0 aChjb25zdCBjaGFyICpwYXRoKQ0KK3sNCisJY2hhciAqc3RhcnQ7DQorCW1vZGVfdCBtb2RlID0g U19JUldYVSB8IFNfSVJHUlAgfCBTX0lYR1JQIHwgU19JUk9USCB8IFNfSVhPVEg7DQorDQorCWlm IChwYXRoWzBdID09ICcvJykNCisJCXN0YXJ0ID0gc3RyY2hyKHBhdGggKyAxLCAnLycpOw0KKwll bHNlDQorCQlzdGFydCA9IHN0cmNocihwYXRoLCAnLycpOw0KKw0KKwl3aGlsZSAoc3RhcnQpIHsN CisJCWNoYXIgKmJ1ZmZlciA9IHN0cmR1cChwYXRoKTsNCisJCWJ1ZmZlcltzdGFydC1wYXRoXSA9 IDB4MDA7DQorDQorCQlpZiAobWtkaXIoYnVmZmVyLCBtb2RlKSA9PSAtMSAmJiBlcnJubyAhPSBF RVhJU1QpIHsNCisJCQlmcHJpbnRmIChzdGRlcnIsICJQcm9ibGVtIGNyZWF0aW5nIGRpcmVjdG9y eSAlcyIsIGJ1ZmZlcik7DQorCQkJcGVycm9yICgiICIpOw0KKwkJCWZyZWUoYnVmZmVyKTsNCisJ CQlyZXR1cm4gLTE7DQorCQl9DQorCQlmcmVlKGJ1ZmZlcik7DQorCQlzdGFydCA9IHN0cmNocihz dGFydCArIDEsICcvJyk7DQorCX0NCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyB2b2lkIGNh cHR1cmUoY2hhciAqb3JpZ19uYW1lKQ0KIHsNCiAJaW50IHRvc3Rkb3V0PTA7CQkvKiBib29sZWFu IHdoaWNoIGRlc2NyaWJlcyBvdXRwdXQgc3RyZWFtICovDQpAQCAtMjM5MSw2ICsyNjE2LDggQEAg c3RhdGljIHZvaWQgY2FwdHVyZShjaGFyICpvcmlnX25hbWUpDQogCWNvdW50ID0gY2FsY19jb3Vu dCgpOw0KIAlpZiAoY291bnQgPT0gMCkNCiAJCWNvdW50ID0gTExPTkdfTUFYOw0KKwkvKiBjb21w dXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgcGVyIGZpbGUgKi8NCisJbWF4X2ZpbGVfc2l6ZSA9IG1h eF9maWxlX3RpbWUgKiBzbmRfcGNtX2Zvcm1hdF9zaXplKGh3cGFyYW1zLmZvcm1hdCwgaHdwYXJh bXMucmF0ZSAqIGh3cGFyYW1zLmNoYW5uZWxzKTsNCiAJLyogV0FWRS1maWxlIHNob3VsZCBiZSBl dmVuIChJJ20gbm90IHN1cmUpLCBidXQgd2FzdGluZyBvbmUgYnl0ZQ0KIAkgICBpc24ndCBhIHBy b2JsZW0gKHRoaXMgY2FuIG9ubHkgYmUgaW4gOCBiaXQgbW9ubykgKi8NCiAJaWYgKGNvdW50IDwg TExPTkdfTUFYKQ0KQEAgLTI0MTcsNyArMjY0NCw3IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmUoY2hh ciAqb3JpZ19uYW1lKQ0KIAkJLyogb3BlbiBhIGZpbGUgdG8gd3JpdGUgKi8NCiAJCWlmKCF0b3N0 ZG91dCkgew0KIAkJCS8qIHVwb24gdGhlIHNlY29uZCBmaWxlIHdlIHN0YXJ0IHRoZSBudW1iZXJp bmcgc2NoZW1lICovDQotCQkJaWYgKGZpbGVjb3VudCkgew0KKwkJCWlmIChmaWxlY291bnQgfCB1 c2Vfc3RyZnRpbWUpIHsNCiAJCQkJZmlsZWNvdW50ID0gbmV3X2NhcHR1cmVfZmlsZShvcmlnX25h bWUsIG5hbWVidWYsDQogCQkJCQkJCSAgICAgc2l6ZW9mKG5hbWVidWYpLA0KIAkJCQkJCQkgICAg IGZpbGVjb3VudCk7DQpAQCAtMjQyNyw4ICsyNjU0LDIyIEBAIHN0YXRpYyB2b2lkIGNhcHR1cmUo Y2hhciAqb3JpZ19uYW1lKQ0KIAkJCS8qIG9wZW4gYSBuZXcgZmlsZSAqLw0KIAkJCXJlbW92ZShu YW1lKTsNCiAJCQlpZiAoKGZkID0gb3BlbjY0KG5hbWUsIE9fV1JPTkxZIHwgT19DUkVBVCwgMDY0 NCkpID09IC0xKSB7DQotCQkJCXBlcnJvcihuYW1lKTsNCi0JCQkJZXhpdChFWElUX0ZBSUxVUkUp Ow0KKwkJCQlpZiAoKGVycm5vID09IEVOT0VOVCkgJiB1c2Vfc3RyZnRpbWUpIHsNCisJCQkJCWlm IChjcmVhdGVfcGF0aCAobmFtZSkgPT0gMCkgew0KKwkJCQkJCWlmICgoZmQgPSBvcGVuNjQgKG5h bWUsIE9fV1JPTkxZIHwgT19DUkVBVCwgMDY0NCkpID09IC0xKSB7DQorCQkJCQkJCXBlcnJvciAo bmFtZSk7DQorCQkJCQkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1l KTsNCisJCQkJCQkJZXhpdCAoRVhJVF9GQUlMVVJFKTsNCisJCQkJCQl9IA0KKwkJCQkJfSBlbHNl IHsNCisJCQkJCQlpZiAocGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZpbGVfbmFtZSk7DQor CQkJCQkJZXhpdCAoRVhJVF9GQUlMVVJFKTsNCisJCQkJCX0NCisJCQkJfSBlbHNlIHsNCisJCQkJ CXBlcnJvcihuYW1lKTsNCisJCQkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmls ZV9uYW1lKTsNCisJCQkJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJCQkJfQ0KIAkJCX0NCiAJCQlm aWxlY291bnQrKzsNCiAJCX0NCkBAIC0yNDM2LDYgKzI2NzcsNyBAQCBzdGF0aWMgdm9pZCBjYXB0 dXJlKGNoYXIgKm9yaWdfbmFtZSkNCiAJCXJlc3QgPSBjb3VudDsNCiAJCWlmIChyZXN0ID4gZm10 X3JlY190YWJsZVtmaWxlX3R5cGVdLm1heF9maWxlc2l6ZSkNCiAJCQlyZXN0ID0gZm10X3JlY190 YWJsZVtmaWxlX3R5cGVdLm1heF9maWxlc2l6ZTsNCisJCWlmIChtYXhfZmlsZV9zaXplICYmIChy ZXN0ID4gbWF4X2ZpbGVfc2l6ZSkpIHJlc3QgPSBtYXhfZmlsZV9zaXplOw0KIA0KIAkJLyogc2V0 dXAgc2FtcGxlIGhlYWRlciAqLw0KIAkJaWYgKGZtdF9yZWNfdGFibGVbZmlsZV90eXBlXS5zdGFy dCkNCkBAIC0yNDQzLDcgKzI2ODUsNyBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlKGNoYXIgKm9yaWdf bmFtZSkNCiANCiAJCS8qIGNhcHR1cmUgKi8NCiAJCWZkY291bnQgPSAwOw0KLQkJd2hpbGUgKHJl c3QgPiAwKSB7DQorCQl3aGlsZSAoKHJlc3QgPiAwKSAmIChyZWN5Y2xlX2NhcHR1cmVfZmlsZSA9 PSAwKSkgew0KIAkJCXNpemVfdCBjID0gKHJlc3QgPD0gKG9mZjY0X3QpY2h1bmtfYnl0ZXMpID8N CiAJCQkJKHNpemVfdClyZXN0IDogY2h1bmtfYnl0ZXM7DQogCQkJc2l6ZV90IGYgPSBjICogOCAv IGJpdHNfcGVyX2ZyYW1lOw0KQEAgLTI0NTEsNiArMjY5Myw3IEBAIHN0YXRpYyB2b2lkIGNhcHR1 cmUoY2hhciAqb3JpZ19uYW1lKQ0KIAkJCQlicmVhazsNCiAJCQlpZiAod3JpdGUoZmQsIGF1ZGlv YnVmLCBjKSAhPSBjKSB7DQogCQkJCXBlcnJvcihuYW1lKTsNCisJCQkJaWYgKHBpZGZpbGVfd3Jp dHRlbikgcmVtb3ZlIChwaWRmaWxlX25hbWUpOw0KIAkJCQlleGl0KEVYSVRfRkFJTFVSRSk7DQog CQkJfQ0KIAkJCWNvdW50IC09IGM7DQpAQCAtMjQ1OCw2ICsyNzAxLDEyIEBAIHN0YXRpYyB2b2lk IGNhcHR1cmUoY2hhciAqb3JpZ19uYW1lKQ0KIAkJCWZkY291bnQgKz0gYzsNCiAJCX0NCiANCisJ CS8qIHJlLWVuYWJsZSBTSUdVU1IxIHNpZ25hbCAqLw0KKwkJaWYgKHJlY3ljbGVfY2FwdHVyZV9m aWxlKSB7DQorCQkJcmVjeWNsZV9jYXB0dXJlX2ZpbGUgPSAwOw0KKwkJCXNpZ25hbChTSUdVU1Ix LCBzaWduYWxfaGFuZGxlcl9yZWN5Y2xlKTsNCisJCX0NCisNCiAJCS8qIGZpbmlzaCBzYW1wbGUg Y29udGFpbmVyICovDQogCQlpZiAoZm10X3JlY190YWJsZVtmaWxlX3R5cGVdLmVuZCAmJiAhdG9z dGRvdXQpIHsNCiAJCQlmbXRfcmVjX3RhYmxlW2ZpbGVfdHlwZV0uZW5kKGZkKTsNCkBAIC0yNDk4 LDExICsyNzQ3LDEzIEBAIHN0YXRpYyB2b2lkIHBsYXliYWNrdl9nbyhpbnQqIGZkcywgdW5zaWdu ZWQgaW50IGNoYW5uZWxzLCBzaXplX3QgbG9hZGVkLCBvZmY2NF90DQogCQkJciA9IHNhZmVfcmVh ZChmZHNbMF0sIGJ1ZnNbMF0sIGV4cGVjdGVkKTsNCiAJCQlpZiAociA8IDApIHsNCiAJCQkJcGVy cm9yKG5hbWVzW2NoYW5uZWxdKTsNCisJCQkJaWYgKHBpZGZpbGVfd3JpdHRlbikgcmVtb3ZlIChw aWRmaWxlX25hbWUpOw0KIAkJCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCQkJfQ0KIAkJCWZvciAo Y2hhbm5lbCA9IDE7IGNoYW5uZWwgPCBjaGFubmVsczsgKytjaGFubmVsKSB7DQogCQkJCWlmIChz YWZlX3JlYWQoZmRzW2NoYW5uZWxdLCBidWZzW2NoYW5uZWxdLCByKSAhPSByKSB7DQogCQkJCQlw ZXJyb3IobmFtZXNbY2hhbm5lbF0pOw0KKwkJCQkJaWYgKHBpZGZpbGVfd3JpdHRlbikgcmVtb3Zl IChwaWRmaWxlX25hbWUpOw0KIAkJCQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KIAkJCQl9DQogCQkJ fQ0KQEAgLTI1NTAsNiArMjgwMSw3IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmV2X2dvKGludCogZmRz LCB1bnNpZ25lZCBpbnQgY2hhbm5lbHMsIG9mZjY0X3QgY291bnQsIGludCBydHlwDQogCQlmb3Ig KGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgY2hhbm5lbHM7ICsrY2hhbm5lbCkgew0KIAkJCWlmICgo c2l6ZV90KXdyaXRlKGZkc1tjaGFubmVsXSwgYnVmc1tjaGFubmVsXSwgcnYpICE9IHJ2KSB7DQog CQkJCXBlcnJvcihuYW1lc1tjaGFubmVsXSk7DQorCQkJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJl bW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KIAkJCX0NCiAJ CX0NCkBAIC0yNTgzLDYgKzI4MzUsNyBAQCBzdGF0aWMgdm9pZCBwbGF5YmFja3YoY2hhciAqKm5h bWVzLCB1bnNpZ25lZCBpbnQgY291bnQpDQogCQlhbGxvY2VkID0gMTsNCiAJfSBlbHNlIGlmIChj b3VudCAhPSBjaGFubmVscykgew0KIAkJZXJyb3IoXygiWW91IG5lZWQgdG8gc3BlY2lmeSAlZCBm aWxlcyIpLCBjaGFubmVscyk7DQorCQlpZiAocGlkZmlsZV93cml0dGVuKSByZW1vdmUgKHBpZGZp bGVfbmFtZSk7DQogCQlleGl0KEVYSVRfRkFJTFVSRSk7DQogCX0NCiANCkBAIC0yNjA4LDggKzI4 NjEsMTAgQEAgc3RhdGljIHZvaWQgcGxheWJhY2t2KGNoYXIgKipuYW1lcywgdW5zaWduZWQgaW50 IGNvdW50KQ0KIAl9DQogCWlmIChhbGxvY2VkKQ0KIAkJZnJlZShuYW1lcyk7DQotCWlmIChyZXQp DQorCWlmIChyZXQpIHsNCisJCWlmIChwaWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9u YW1lKTsNCiAJCWV4aXQocmV0KTsNCisJfQ0KIH0NCiANCiBzdGF0aWMgdm9pZCBjYXB0dXJldihj aGFyICoqbmFtZXMsIHVuc2lnbmVkIGludCBjb3VudCkNCkBAIC0yNjM2LDYgKzI4OTEsNyBAQCBz dGF0aWMgdm9pZCBjYXB0dXJldihjaGFyICoqbmFtZXMsIHVuc2lnbmVkIGludCBjb3VudCkNCiAJ CWFsbG9jZWQgPSAxOw0KIAl9IGVsc2UgaWYgKGNvdW50ICE9IGNoYW5uZWxzKSB7DQogCQllcnJv cihfKCJZb3UgbmVlZCB0byBzcGVjaWZ5ICVkIGZpbGVzIiksIGNoYW5uZWxzKTsNCisJCWlmIChw aWRmaWxlX3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCWV4aXQoRVhJVF9GQUlM VVJFKTsNCiAJfQ0KIA0KQEAgLTI2NjEsNiArMjkxNyw4IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmV2 KGNoYXIgKipuYW1lcywgdW5zaWduZWQgaW50IGNvdW50KQ0KIAl9DQogCWlmIChhbGxvY2VkKQ0K IAkJZnJlZShuYW1lcyk7DQotCWlmIChyZXQpDQorCWlmIChyZXQpIHsNCisJCWlmIChwaWRmaWxl X3dyaXR0ZW4pIHJlbW92ZSAocGlkZmlsZV9uYW1lKTsNCiAJCWV4aXQocmV0KTsNCisJfQ0KIH0N Ci0tIA0KMS42LjMuMw0KDQo= --=-vfVNzqthyHe6VVpRVdmp-- --=-ZlDzgcKDETzNMrQr8WB7 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIILOTCCBN0w ggPFoAMCAQICEHGS++YZX6xNEoV0cTSiGKcwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMCR0Ix GzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwR Q29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0w NDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8 om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4IBJzCCASMwHwYDVR0j BBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYEFImCZ33EnSZwAEu0UEh83j2uBG59 MA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr BgEFBQcDBDARBgNVHSAECjAIMAYGBFUdIAAwewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5j b21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwu Y29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDARBglghkgBhvhCAQEEBAMCAQYw DQYJKoZIhvcNAQEFBQADggEBAJ2Vyzy4fqUJxB6/C8LHdo45PJTGEKpPDMngq4RdiVTgZTvzbRx8 NywlVF+WIfw3hJGdFdwUT4HPVB1rbEVgxy35l1FM+WbKPKCCjKbI8OLp1Er57D9Wyd12jMOCAU9s APMeGmF0BEcDqcZAV5G8ZSLFJ2dPV9tkWtmNH7qGL/QGrpxp7en0zykX2OBKnxogL5dMUbtGB8SK N04g4wkxaMeexIud6H4RvDJoEJYRmETYKlFgTYjrdDrfQwYyyDlWjDoRUtNBpEMD9O3vMyfbOeAU TibJ2PU54om4k123KSZB6rObroP8d3XK6Mq1/uJlSmM+RMTQw16Hc6mYHK9/FX8wggZUMIIFPKAD AgECAhEAyul/1r9bEQ78VeQYPidf2TANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UEBhMCVVMxCzAJ BgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVT VCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0BgNVBAMTLVVU Ti1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw0wOTAzMDEwMDAw MDBaFw0xMDAzMDEyMzU5NTlaMIHuMTUwMwYDVQQLEyxDb21vZG8gVHJ1c3QgTmV0d29yayAtIFBF UlNPTkEgTk9UIFZBTElEQVRFRDFGMEQGA1UECxM9VGVybXMgYW5kIENvbmRpdGlvbnMgb2YgdXNl OiBodHRwOi8vd3d3LmNvbW9kby5uZXQvcmVwb3NpdG9yeTEfMB0GA1UECxMWKGMpMjAwMyBDb21v ZG8gTGltaXRlZDEUMBIGA1UEAxMLSm9obiBTYXV0ZXIxNjA0BgkqhkiG9w0BCQEWJ2pvaG5fc2F1 dGVyQHN5c3RlbWV5ZXNjb21wdXRlcnN0b3JlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAMqyvG9cN7jE5kASp3V2C0EsTDlpxuBXwqBN/utIP19TeDz7V3/iFvYG80oXTo5O9cbQ 2Ahshlzz1pic0GDg+JKBUTfd7nicSNgyZKj9bCdTT3L4gRpHOL43RNet0tA+huQM6zz3S2+3RZnC jp/yjeh2Bu10nzDBRAs4D6Mw6CBJ7iFzW5mHNPlPAR1sFtVq/Tcc/jy3f9NKOMSJTaWz0LVUKMAm dsDwss7kwpgFqwWE4PNr+7i8DeiL8DsC0fncsO67HlhvoiPZqF1zmOHpI7P8ujtRazA8Lq1WUtOh HaMYZli52Rx1onmXWmMpiiRBncmNNZ2QLEXAuP0b2zO35XcCAwEAAaOCAikwggIlMB8GA1UdIwQY MBaAFImCZ33EnSZwAEu0UEh83j2uBG59MB0GA1UdDgQWBBTG3EgnOAC1yQkVg4DldKdKSIr+rjAO BgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAgBgNVHSUEGTAXBggrBgEFBQcDBAYLKwYBBAGy MQEDBQIwEQYJYIZIAYb4QgEBBAQDAgUgMEYGA1UdIAQ/MD0wOwYMKwYBBAGyMQECAQEBMCswKQYI KwYBBQUHAgEWHWh0dHBzOi8vc2VjdXJlLmNvbW9kby5uZXQvQ1BTMIGlBgNVHR8EgZ0wgZowTKBK oEiGRmh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1VUTi1VU0VSRmlyc3QtQ2xpZW50QXV0aGVudGlj YXRpb25hbmRFbWFpbC5jcmwwSqBIoEaGRGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9VVE4tVVNFUkZp cnN0LUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kRW1haWwuY3JsMGwGCCsGAQUFBwEBBGAwXjA2Bggr BgEFBQcwAoYqaHR0cDovL2NydC5jb21vZG9jYS5jb20vVVROQUFBQ2xpZW50Q0EuY3J0MCQGCCsG AQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wMgYDVR0RBCswKYEnam9obl9zYXV0ZXJA c3lzdGVtZXllc2NvbXB1dGVyc3RvcmUuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQB7rUiCoa34C3V4 WO5GFpMeWF+MmwSQAJtOkO2eYr2Xkz0oxn99Tq7QHxUqlC0qbSEUD1Ac+aJlmCFKxT4+WavGkdt2 43HMxYcu3gseM0n+P+nTkEvRFFEj0Q/7DxIBFzMBaTFdFZgC9a4U2v0krm5agR8OBLG+1IwAQS6H uS3gjI5JWx9s7InLOHYce0bg5n8hwX9YPA0nYoXVrNwm2WcnbfQZ1qJMpdh+LBIx+sxes5pjGKAc OZvCDK6OCFAxgPiJyEG6cKpnLTE2bsaVzB2SaGlcgD/x/4m95CEMu/M3/CIgyD5fzEuLgyRdA61l zPdBPorTun+WLcwnHNvz667JMYICSzCCAkcCAQEwgcQwga4xCzAJBgNVBAYTAlVTMQswCQYDVQQI EwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0 d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1c3QuY29tMTYwNAYDVQQDEy1VVE4tVVNF UkZpcnN0LUNsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgRW1haWwCEQDK6X/Wv1sRDvxV5Bg+J1/Z MAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0x MDAxMDIwMzU0NDRaMCMGCSqGSIb3DQEJBDEWBBRei0eafbDkwA40QEYkGjV4EHxQHzANBgkqhkiG 9w0BAQEFAASCAQDGd+bBdPHtMFLius53cer/pMm4qUtrdOqSiOWlR67yp260qFKbL9RHkZQ2P9iN Xv+1wk4wVGY4527nAoQGzKZuDdsKjlsnNjd7aOaMRnkSAW/GQDdVtArU5o2SWV9PYijTcyJYXYGA 6vbq6vj+fe7MyPyOv5DS9mwn3Y6uXCFI/EEH8twpNBe+ocNQZW8+1dmKYPq7cdSnDrYs/PtQo8UR SCION9zxYJWO1iuujEcU7jiGmB4z05Bf/fs1xx60SCquacveS6akUxHq8vuVXy/4hgJu3NsAL5Cc 78suSxm7fLffV11CFLJx1f3ugY8enFFg94gRhOE8DnbfKoFmjwiRAAAAAAAA --=-ZlDzgcKDETzNMrQr8WB7-- --===============1349186106409210933== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel --===============1349186106409210933==--