Subject: Cochlear filter inversion From: #DONNY TAGORA SUHARTONO# <G200536(at)NTU.EDU.SG> Date: Sun, 3 Feb 2002 22:39:57 +0800This is a multi-part message in MIME format. ------_=_NextPart_001_01C1ACC0.A6A92DB6 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Dear list member; =20 I have a problem in getting back original source back after I've = done some filtering on it. Actually what I've done is some sort of = continuation of Malcolm Slaney work. And filtering in this case is a = cochlear filtering based on Lyon's ear model.=20 I've done some try out with no avail. Hope somebody can help me. thsk in = advance. Attached is the source code involve in the process. =20 Regards Donny <<soscascade.c>> = <<invsoscascade.c>> <<experiment.m>> <<DesignLyonFilters.m>>=20 ------_=_NextPart_001_01C1ACC0.A6A92DB6 Content-Type: application/octet-stream; name="soscascade.c" Content-Transfer-Encoding: base64 Content-Description: soscascade.c Content-Disposition: attachment; filename="soscascade.c" LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKgkJc29zY2FzY2FkZS5jIAlNYWluIGNvZGUgZm9yIGRvaW5nIGNv Y2hsZWFyIGZpbHRlciAKKgkJCQlvcGVyYXRpb25zIGZvciB0aGUgc2Vjb25kIG9yZGVyIAoqCQkJ CXNlY3Rpb24gKHNvcykgbW9kZWwuICBBc3N1bWVzIHRoYXQgCioJCQkJdGhlIGZpbHRlciBjb2Vm ZmljaWVudHMgaGF2ZSBiZWVuIAoqCQkJCWRlc2lnbmVkLiAgVGhpcyBpbXBsZW1lbnRzIGEgQ0FT Q0FERQoqCQkJCW9mIHNlY29uZCBvcmRlciBzZWN0aW9ucy4KKgkKKgkJV3JpdHRlbiA6IAlKYW51 YXJ5IDcsIDE5OTIKKgkJYnkgOgkJRGFuaWVsIE5hYXIJCioJCQkJCQkJCQkKKgkJQ2hhbmdlcwk6 CUNsZWFuZWQgdXAgYnkgTWFsY29sbQoqCQkJCUp1bmUgMTEsIDE5OTMtTWFyY2ggOCwgMTk5NAoq CQkJCU5vdmVtYmVyIDExLCAxOTk3IG1hbGNvbG1AaW50ZXJ2YWwuY29tCioJCQkJU2VwdGVtYmVy IDE3LCAxOTk4IG1hbGNvbG1AaW50ZXJ2YWwuY29tCioJCShjKSAxOTk3IEludGVydmFsIFJlc2Vh cmNoIENvcnBvcmF0aW9uCioJCVtvdXRwdXQsc3RhdGVdID0gc29zY2FzY2FkZShpbnB1dCwgQ29l ZmZzLCBzdGF0ZXMpCiogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KCi8qCiAqCVRlc3QgdGhpcyBjb21tYW5k IGJ5IHRyeWluZyB0aGUgZm9sbG93aW5nLi4uIHRoZSBjb3JyZWN0IHJlc3VsdHMgYXJlIAogKglz aG93biBiZWxvdy4gIChUaGUgZmlyc3QgZmlsdGVyIGlzIGEgc2ltcGxlIGV4cG9uZW50aWFsIGRl Y2F5LiAgVGhlCiAqCXNlY29uZCBmaWx0ZXIgc3VtcyB0aGUgbGFzdCB0d28gb3V0cHV0cyBmcm9t IGZpbHRlciBvbmUuKQogKgogKgk+PnNvc2Nhc2NhZGUoWzEgMCAwIDAgMF0sWzEgMCAwIC0uOSAw OzEgMSAwIDAgMF0pIAogKglhbnMgPQogKgogKgkgICAgIDEuMDAwMCAgICAwLjkwMDAgICAgMC44 MTAwICAgIDAuNzI5MCAgICAwLjY1NjEKICoJICAgICAxLjAwMDAgICAgMS45MDAwICAgIDEuNzEw MCAgICAxLjUzOTAgICAgMS4zODUxCiAqCQogKglUbyBjaGVjayB0aGUgc3RhdGUgdmFyaWFibGUg dXNhZ2UgY29tcGFyZSB0aGUgb3V0cHV0IG9mIHRoZXNlIHR3bwogKglzZXRzIG9mIGNvbW1hbmRz CiAqCT4+c29zY2FzY2FkZShbMSAwIDAgMCAwIDAgMCAwIDAgMF0sWzEgMCAwIC0uOSAwOzEgMSAw IDAgMF0pCiAqCWFuZAogKgk+Plt5LHNdID0gc29zY2FzY2FkZShbMSAwIDAgMCAwXSxbMSAwIDAg LS45IDA7MSAxIDAgMCAwXSkKICoJPj5zb3NjYXNjYWRlKFswIDAgMCAwIDBdLFsxIDAgMCAtLjkg MDsxIDEgMCAwIDBdLCBzKQogKi8KCiNkZWZpbmUJcElOUFVUTQkJCXByaHNbMF0KI2RlZmluZQlw Q09FRkZTTQkJcHJoc1sxXQojZGVmaW5lIHBTVEFURU0JCQlwcmhzWzJdCgojZGVmaW5lCWtOdW1T dGF0ZVZhcnMJCTIKCiNpbmNsdWRlCTxzdGRpby5oPgojaW5jbHVkZSAJPG1hdGguaD4KI2luY2x1 ZGUJIm1leC5oIgoKI2lmbmRlZglET1VCTEUKI2RlZmluZQlET1VCTEUJZG91YmxlCiNlbmRpZgoK I2lmbmRlZglJTlQKI2RlZmluZQlJTlQJaW50CiNlbmRpZgoKI2RlZmluZQlteEdldFNpemUobSkJ KG14R2V0TihtKSAqIG14R2V0TShtKSkKCgkJCQkJLyogT0ssIHRoaXMgaXMgc2xlYXp5Li4uLiBi dXQKCQkJCQkgKiB3ZSBvbmx5IHdhbnQgdG8gc2F2ZSB0aGlzIAoJCQkJCSAqIGluZm9ybWF0aW9u IGJldHdlZW4gdGhlIENoZWNrQXJncygpCgkJCQkJICogZnVuY3Rpb24gYW5kIHRoZSBtYWluIHBy b2dyYW0uICBUaGlzCgkJCQkJICogd29ya3MgYXMgbG9uZyBhcyB3ZSBhcmVuJ3QgbXVsdGktCgkJ CQkJICogdGhyZWFkZWQuCgkJCQkJICovCnN0YXRpYyBET1VCTEUJKmlucHV0RGF0YSwgKm91dHB1 dERhdGEsICpzdGF0ZTEsICpzdGF0ZTI7CnN0YXRpYyBET1VCTEUJKmEwLCAqYTEsICphMiwgKmIx LCAqYjI7CnN0YXRpYyBJTlQJblNhbXBsZXMsIG5DaGFubmVsczsKc3RhdGljIG14QXJyYXkJKm91 dHB1dE1hdHJpeCA9IDAsICpzdGF0ZU1hdHJpeCA9MDsKCi8qID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qCUZ1 bmN0aW9uIHRvIGRldGVybWluZSBpZiBhcmd1bWVudHMgYXJlIHZhbGlkLiAJCQkqLwovKglBbHNv IGZpbGwgaW4gc29tZSBwb2ludGVycyB3ZSB3aWxsIG5lZWQgbGF0ZXIuCQkJKi8KCnN0YXRpYyAg aW50IENoZWNrQXJndW1lbnRzKGludCBubGhzLCBteEFycmF5ICpwbGhzW10sIAoJCQkJaW50IG5y aHMsIGNvbnN0IG14QXJyYXkgKnByaHNbXSkKeyAgICAgCglET1VCTEUJKnN0YXRlRGF0YTsKCglp ZiAobnJocyA8IDIgfHwgbnJocyA+IDMgfHwgbmxocyA+IDIpewoJCXByaW50ZigiSW5jb3JyZWN0 IGNhbGxpbmcgc3ludGF4OlxuIFtvdXRwdXQsc3RhdGVdID0gIik7CgkJcHJpbnRmKCJzb3NmaWx0 ZXIoaW5wdXQsIENvZWZmcywgc3RhdGUpXG4iKTsKCQlwcmludGYoIiAgICAgICAgaW5wdXQgaGFz IE4gc2FtcGxlc1xuIik7CgkJcHJpbnRmKCIgICAgICAgIENvZWZmcyBpcyBDIHggNSB3aGVyZSBD IGlzIHRoZSBudW1iZXIgb2YgIgoJCQkiY2hhbm5lbHNcbiIpOwoJCXByaW50ZigiICAgICAgICBz dGF0ZSBpcyBDIHggMlxuIik7CgkJcHJpbnRmKCIgICAgICAgIG91dHB1dCBpcyBDIHggTlxuIik7 CgkJcHJpbnRmKCJubGhzIGlzICVkLCBucmhzIGlzICVkLlxuIiwgbmxocywgbnJocyk7CgkJcmV0 dXJuIDE7Cgl9CgovKi0tLS0tLS0tLS0tLSBDaGVjayBpbnB1dCBpcyBub3QgZW1wdHkgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCQoJblNhbXBsZXMgPSBteEdldFNpemUocElOUFVU TSk7CglpZihuU2FtcGxlcyA9PSAwKSAgIHsKCQlwcmludGYoIklucHV0IGFycmF5IGlzIGVtcHR5 XG4iKTsKCQlyZXR1cm4gMTsKCX0KCWlucHV0RGF0YSA9IG14R2V0UHIocElOUFVUTSk7CgkKLyot LS0tLS0tLS0tLS0gQ2hlY2sgdG8gU2VlIGlmIENvZWZmcyBNYXRyaXggSXMgdGhlIHJpZ2h0IFNp emUgLS0tLS0tLSAqLwoJaWYgKCBteEdldE4ocENPRUZGU00pICE9IDUpIHsKCQlwcmludGYoIkNv ZWZmaWNpZW50IE1hdHJpeCBNdXN0IGhhdmUgNSBDb2x1bW5zOiAiKTsKCQlwcmludGYoIkNvZWZm cz1bQTAgQTEgQTIgQjEgQjJdXG4iKTsKCQlyZXR1cm4gMTsKCX0KCW5DaGFubmVscyA9IG14R2V0 TShwQ09FRkZTTSk7CglhMCA9ICYobXhHZXRQcihwQ09FRkZTTSlbMCpuQ2hhbm5lbHNdKTsKCWEx ID0gJihteEdldFByKHBDT0VGRlNNKVsxKm5DaGFubmVsc10pOwoJYTIgPSAmKG14R2V0UHIocENP RUZGU00pWzIqbkNoYW5uZWxzXSk7CgliMSA9ICYobXhHZXRQcihwQ09FRkZTTSlbMypuQ2hhbm5l bHNdKTsKCWIyID0gJihteEdldFByKHBDT0VGRlNNKVs0Km5DaGFubmVsc10pOwoJCi8qLS0tLS0t LS0tLS0tLS0tLS0tLS0gQ3JlYXRlIHRoZSBvdXRwdXQgbWF0cml4IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tICovCglvdXRwdXRNYXRyaXggPSBteENyZWF0ZURvdWJsZU1hdHJpeChuQ2hhbm5lbHMs IG5TYW1wbGVzLCBteFJFQUwpOwoJb3V0cHV0RGF0YSA9IG14R2V0UHIob3V0cHV0TWF0cml4KTsK Ci8qLS0tLSBDcmVhdGUgdGhlIHN0YXRlIG1hdHJpeCwgZmlsbCBpbiB0aGUgaW5wdXQgdmFsdWVz IGlmIHNwZWNpZmllZCAtLSovCglzdGF0ZU1hdHJpeCA9IG14Q3JlYXRlRG91YmxlTWF0cml4KG5D aGFubmVscywga051bVN0YXRlVmFycywgbXhSRUFMKTsKCXN0YXRlRGF0YSA9IG14R2V0UHIoc3Rh dGVNYXRyaXgpOwoJaWYgKCBucmhzID49IDMgKSB7CgkJRE9VQkxFCSppbnB1dFN0YXRlQXJyYXk7 CgkJaW50CWk7CgoJCWlmICggbXhHZXRNKHBTVEFURU0pICE9IG5DaGFubmVscyB8fCAKCQkgICAg IG14R2V0TihwU1RBVEVNKSAhPSBrTnVtU3RhdGVWYXJzKXsKCQkJbWV4UHJpbnRmKCJNRVggZmls ZSBzb3NjYXNjYWRlIGdvdCBhIGJhZCBzdGF0ZSAiCgkJCQkiaW5wdXQuIFNob3VsZCBiZSBzaXpl ICVkeCVkLlxuIiwgCgkJCQluQ2hhbm5lbHMsIGtOdW1TdGF0ZVZhcnMpOwoJCQlyZXR1cm4gMTsK CQl9CgkJaW5wdXRTdGF0ZUFycmF5ID0gbXhHZXRQcihwU1RBVEVNKTsKCQlmb3IgKGk9MDsgaTxt eEdldFNpemUocFNUQVRFTSk7IGkrKykKCQkJc3RhdGVEYXRhW2ldID0gaW5wdXRTdGF0ZUFycmF5 W2ldOwoJfQoJc3RhdGUxID0gJnN0YXRlRGF0YVswKm5DaGFubmVsc107CglzdGF0ZTIgPSAmc3Rh dGVEYXRhWzEqbkNoYW5uZWxzXTsKCglyZXR1cm4gMDsKfSAgCgovKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov CgoKI2RlZmluZQlrQ29tbWFuZFNpemUJMjAKCnZvaWQgbWV4RnVuY3Rpb24oaW50IG5saHMsIG14 QXJyYXkgKnBsaHNbXSwgaW50IG5yaHMsIGNvbnN0IG14QXJyYXkgKnByaHNbXSkgIAp7IAkKCXJl Z2lzdGVyIGludAlpLCBuOwoJcmVnaXN0ZXIgZG91YmxlCWluLCAqb3V0cHV0OwoKCWlmIChucmhz ID49IDEgJiYgbXhJc0NoYXIocHJoc1swXSkpewoJCQkJCQkvKiBPYnNvbGV0ZSBjb21tYW5kcyBp Z25vcmVkICovCgkJcmV0dXJuOwoJfQoKCWlmIChDaGVja0FyZ3VtZW50cyhubGhzLCBwbGhzLCBu cmhzLCBwcmhzKSApewoJCW1leEVyck1zZ1R4dCgic29zY2FzY2FkZSBhcmd1bWVudCBjaGVja2lu ZyBmYWlsZWQuIik7CgkJcmV0dXJuIDsKCX0KCglmb3IgKG49MDsgbjwwKm5DaGFubmVsczsgbisr KXsKCQlwcmludGYoIiBDaGFubmVsICVkOiAlZyAlZyAlZywgJWcgJWRcbiIsIG4sIGEwW25dLCBh MVtuXSwgCgkJCWEyW25dLCBiMVtuXSwgYjJbbl0pOwoJCXByaW50ZigiICAgIHN0YXRlMSBpcyAl Zywgc3RhdGUyIGlzICVnLlxuIiwgc3RhdGUxW25dLCAKCQkJc3RhdGUyW25dKTsKCX0KCglmb3Ig KG49MDsgbjxuU2FtcGxlczsgbisrKXsKCQlpbiA9IGlucHV0RGF0YVtuXTsKCQlvdXRwdXQgPSAm b3V0cHV0RGF0YVtuKm5DaGFubmVsc107CgkJZm9yIChpPTA7IGk8bkNoYW5uZWxzOyBpKyspewoJ CQlvdXRwdXRbaV0gPSBhMFtpXSAqIGluICAgICAgICAgICAgICAgICAgICAgKyBzdGF0ZTFbaV07 CgkJCXN0YXRlMVtpXSA9IGExW2ldICogaW4gLSBiMVtpXSAqIG91dHB1dFtpXSArIHN0YXRlMltp XTsKCQkJc3RhdGUyW2ldID0gYTJbaV0gKiBpbiAtIGIyW2ldICogb3V0cHV0W2ldOwoJCQlpbiA9 IG91dHB1dFtpXTsKCQl9Cgl9CgkJCQkJCS8qIEFzc2lnbiBvdXRwdXQgcG9pbnRlcnMgKi8KCXBs aHNbMF0gPSBvdXRwdXRNYXRyaXg7IAoJaWYgKG5saHMgPiAxKQoJCXBsaHNbMV0gPSBzdGF0ZU1h dHJpeDsKCWVsc2UKCQlteERlc3Ryb3lBcnJheShzdGF0ZU1hdHJpeCk7Cn0K ------_=_NextPart_001_01C1ACC0.A6A92DB6 Content-Type: application/octet-stream; name="invsoscascade.c" Content-Transfer-Encoding: base64 Content-Description: invsoscascade.c Content-Disposition: attachment; filename="invsoscascade.c" LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKgkJaW52c29zY2FzY2FkZS5jIE1haW4gY29kZSBmb3IgaW52ZXJ0 aW5nIGEgY29jaGxlYXIgZmlsdGVyIAoqCQkJCWJhbmsuICBBc3N1bWVzIHRoYXQgdGhlIGZpbHRl ciBjb2VmZmljaWVudHMgCioJCQkJaGF2ZSBiZWVuIGRlc2lnbmVkLiAgVGhpcyBkb2VzIG5vdCBy dW4gdGhlCioJCQkJc2lnbmFsIGJhY2t3YXJkcy4KKgkKKgkJV3JpdHRlbiA6IAlKYW51YXJ5LCAx OTkyCioJCWJ5IDoJCURhbmllbCBOYWFyCQoqCQkJCQkJCQkJCioJCUNoYW5nZXMJOglDbGVhbmVk IHVwIGJ5IE1hbGNvbG0KKgkJCQlKdW5lIDI5LCAxOTkzLU1hcmNoIDgsIDE5OTQKKgkJCQlOb3Zl bWJlciAxMSwgMTk5NyBtYWxjb2xtQGludGVydmFsLmNvbQoqCQkoYykgMTk5NyBJbnRlcnZhbCBS ZXNlYXJjaCBDb3Jwb3JhdGlvbgoqCQlbb3V0cHV0XSA9IGludnNvc2Nhc2NhZGUoaW5wdXQsIENv ZWZmcywgb3V0cHV0LCBzdGF0ZXMpCiogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KCi8qCiAqCVRlc3QgdGhp cyBjb21tYW5kIGJ5IHRyeWluZyB0aGUgZm9sbG93aW5nLi4uIHRoZSBjb3JyZWN0IHJlc3VsdHMg YXJlIAogKglzaG93biBiZWxvdy4gIChUaGUgZmlyc3QgZmlsdGVyIGlzIGEgc2ltcGxlIGV4cG9u ZW50aWFsIGRlY2F5LiAgVGhlCiAqCXNlY29uZCBmaWx0ZXIgc3VtcyB0aGUgbGFzdCB0d28gb3V0 cHV0cyBmcm9tIGZpbHRlciBvbmUuKQogKgogKgk+PmludnNvc2Nhc2NhZGUoWzEgMCAwIDAgMDsx IDAgMCAwIDBdLFsxIDAgMCAtLjkgMDsxIDEgMCAwIDBdKSAKICoJYW5zID0KICoJICAgIDIuMDAw MCAgICAyLjgwMDAgICAgMi41MjAwICAgIDIuMjY4MCAgICAyLjA0MTIKICoKICoKICovCgojZGVm aW5lCXBJTlBVVE0JCQlwcmhzWzBdCiNkZWZpbmUJcENPRUZGU00JCXByaHNbMV0KI2RlZmluZQlw R0FJTk0JCQlwcmhzWzJdCiNkZWZpbmUgcFNUQVRFTQkJCXByaHNbM10KCiNkZWZpbmUJa051bVN0 YXRlVmFycwkJMgoKI2luY2x1ZGUJPHN0ZGlvLmg+CiNpbmNsdWRlIAk8bWF0aC5oPgojaW5jbHVk ZQkibWV4LmgiCiAKI2lmbmRlZglET1VCTEUKI2RlZmluZQlET1VCTEUJZG91YmxlCiNlbmRpZgoK I2lmbmRlZglJTlQKI2RlZmluZQlJTlQJaW50CiNlbmRpZgoKI2RlZmluZQlteEdldFNpemUobSkJ KG14R2V0TihtKSAqIG14R2V0TShtKSkKCgkJCQkJLyogT0ssIHRoaXMgaXMgc2xlYXp5Li4uLiBi dXQKCQkJCQkgKiB3ZSBvbmx5IHdhbnQgdG8gc2F2ZSB0aGlzIAoJCQkJCSAqIGluZm9ybWF0aW9u IGJldHdlZW4gdGhlIENoZWNrQXJncygpCgkJCQkJICogZnVuY3Rpb24gYW5kIHRoZSBtYWluIHBy b2dyYW0uCgkJCQkJICovCnN0YXRpYyBET1VCTEUJKmlucHV0RGF0YSwgKm91dHB1dERhdGEsICpz dGF0ZTEsICpzdGF0ZTI7CnN0YXRpYyBET1VCTEUJKmEwLCAqYTEsICphMiwgKmIxLCAqYjIsICpn YWluczsKc3RhdGljIElOVAluU2FtcGxlcywgbkNoYW5uZWxzOwpzdGF0aWMgbXhBcnJheQkqb3V0 cHV0TWF0cml4LCAqc3RhdGVNYXRyaXg7CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLyoJRnVuY3Rpb24g dG8gZGV0ZXJtaW5lIGlmIGFyZ3VtZW50cyBhcmUgdmFsaWQuIAkJCSovCi8qCUFsc28gZmlsbCBp biBzb21lIHBvaW50ZXJzIHdlIHdpbGwgbmVlZCBsYXRlci4JCQkqLwoKI2lmZGVmCWNhbGxvYwoj dW5kZWYJY2FsbG9jCiNlbmRpZgoKc3RhdGljIGludCBDaGVja0FyZ3VtZW50cyhpbnQgbmxocywg bXhBcnJheSAqcGxoc1tdLCAKCQkJaW50IG5yaHMsIGNvbnN0IG14QXJyYXkgKnByaHNbXSkKeyAg ICAgCglpbnQJaTsKCURPVUJMRQkqc3RhdGVEYXRhOwoJCglpZiAobnJocyA8IDIgfHwgbnJocyA+ IDQgfHwgbmxocyA+IDIpewoJCW1leFByaW50ZigiSW5jb3JyZWN0IGNhbGxpbmcgc3ludGF4Olxu IFtvdXRwdXQsIHN0YXRlXSA9ICIpOwoJCW1leFByaW50ZigiaW52c29zY2FzY2FkZShpbnB1dCwg Q29lZmZzLCBnYWlucywgc3RhdGUpXG4iKTsKCQltZXhQcmludGYoIiAgIGlucHV0IGhhcyBDIHgg TiBzYW1wbGVzXG4iKTsKCQltZXhQcmludGYoIiAgIENvZWZmcyBpcyBDIHggNSB3aGVyZSBDIGlz IHRoZSBudW1iZXIgb2YgIgoJCQkiY2hhbm5lbHNcbiIpOwoJCW1leFByaW50ZigiICAgZ2FpbnMg aXMgYSBDIHggMSBhcnJheSBvZiBjaGFubmVsIGdhaW5zXG4iKTsKCQltZXhQcmludGYoIiAgIHN0 YXRlIGlzIEMgeCAyIik7CgkJbWV4UHJpbnRmKCIgICBvdXRwdXQgaXMgMSB4IE5cbiIpOwoJCXJl dHVybiAxOwoJfQoKLyotLS0tLS0tLS0tLS0gQ2hlY2sgaW5wdXQgaXMgbm90IGVtcHR5IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwkKCW5TYW1wbGVzID0gbXhHZXROKHBJTlBVVE0p OwoJaWYoblNhbXBsZXMgPT0gMCkgewoJCW1leFByaW50ZigiSW5wdXQgYXJyYXkgaXMgZW1wdHku XG4iKTsKCQlyZXR1cm4gMTsKCX0KCWlucHV0RGF0YSA9IG14R2V0UHIocElOUFVUTSk7CgluQ2hh bm5lbHMgPSBteEdldE0ocElOUFVUTSk7CgkKLyotLS0tLS0tLS0tLS0gQ2hlY2sgdG8gU2VlIGlm IENvZWZmcyBNYXRyaXggSXMgdGhlIHJpZ2h0IFNpemUgLS0tLS0tLSAqLwoJaWYgKCBteEdldE4o cENPRUZGU00pICE9IDUpIHsKCQltZXhQcmludGYoIkNvZWZmaWNpZW50IE1hdHJpeCBNdXN0IGhh dmUgNSBDb2x1bW5zOiAiKTsKCQltZXhQcmludGYoIkNvZWZmcz1bQTAgQTEgQTIgQjEgQjJdXG4i KTsKCQlyZXR1cm4gMTsKCX0KCWlmICggbXhHZXRNKHBDT0VGRlNNKSAhPSBuQ2hhbm5lbHMpIHsK CQltZXhQcmludGYoIk51bWJlciBvZiBpbnB1dCBjaGFubmVscyBtdXN0IGJlIHNhbWUgYXMgbnVt YmVyIik7CgkJbWV4UHJpbnRmKCIgb2YgZmlsdGVyIGNoYW5uZWxzIChyb3dzKS5cbiIpOwoJCXJl dHVybiAxOwoJfQoJYTAgPSAmKG14R2V0UHIocENPRUZGU00pWzAqbkNoYW5uZWxzXSk7CglhMSA9 ICYobXhHZXRQcihwQ09FRkZTTSlbMSpuQ2hhbm5lbHNdKTsKCWEyID0gJihteEdldFByKHBDT0VG RlNNKVsyKm5DaGFubmVsc10pOwoJYjEgPSAmKG14R2V0UHIocENPRUZGU00pWzMqbkNoYW5uZWxz XSk7CgliMiA9ICYobXhHZXRQcihwQ09FRkZTTSlbNCpuQ2hhbm5lbHNdKTsKCQoJaWYgKCBucmhz ID4gMiApewoJCWludAlpID0gbXhHZXRNKHBHQUlOTSkgKiBteEdldE4ocEdBSU5NKTsKCgkJaWYg KGkgPT0gbkNoYW5uZWxzKXsKCQkJZ2FpbnMgPSBteEdldFByKHBHQUlOTSk7CgkJfSBlbHNlIHsK CQkJbWV4UHJpbnRmKCJOdW1iZXIgb2YgZ2FpbiB0ZXJtcyBtdXN0IGJlIHNhbWUgYXMgIgoJCQkJ Im51bWJlciBvZiBmaWx0ZXIgY2hhbm5lbHMgKHJvd3MpLlxuIik7CgkJCXJldHVybiAxOwoJCX0K CX0gZWxzZSB7CgkJZ2FpbnMgPSAwOwoJfQoJCi8qLS0tLS0tLS0tLS0tIEFsbG9jYXRlIHRoZSBv dXRwdXQgbWF0cml4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8JCglvdXRwdXRN YXRyaXggPSBteENyZWF0ZURvdWJsZU1hdHJpeCgoSU5UKTEsIG5TYW1wbGVzLCBteFJFQUwpOwoJ b3V0cHV0RGF0YSA9IG14R2V0UHIob3V0cHV0TWF0cml4KTsKCi8qLS0tLSBDcmVhdGUgdGhlIHN0 YXRlIG1hdHJpeCwgZmlsbCBpbiB0aGUgaW5wdXQgdmFsdWVzIGlmIHNwZWNpZmllZCAtLSovCglz dGF0ZU1hdHJpeCA9IG14Q3JlYXRlRG91YmxlTWF0cml4KG5DaGFubmVscywga051bVN0YXRlVmFy cywgbXhSRUFMKTsKCXN0YXRlRGF0YSA9IG14R2V0UHIoc3RhdGVNYXRyaXgpOwoJaWYgKCBucmhz ID49IDQgKSB7CgkJRE9VQkxFCSppbnB1dFN0YXRlQXJyYXk7CgkJaW50CWk7CgoJCWlmICggbXhH ZXRNKHBTVEFURU0pICE9IG5DaGFubmVscyB8fCAKCQkgICAgIG14R2V0TihwU1RBVEVNKSAhPSBr TnVtU3RhdGVWYXJzKXsKCQkJbWV4UHJpbnRmKCJNRVggZmlsZSBzb3NjYXNjYWRlIGdvdCBhIGJh ZCBzdGF0ZSAiCgkJCQkiaW5wdXQuIFNob3VsZCBiZSBzaXplICVkeCVkLlxuIiwgCgkJCQluQ2hh bm5lbHMsIGtOdW1TdGF0ZVZhcnMpOwoJCQlyZXR1cm4gMTsKCQl9CgkJaW5wdXRTdGF0ZUFycmF5 ID0gbXhHZXRQcihwU1RBVEVNKTsKCQlmb3IgKGk9MDsgaTxteEdldFNpemUocFNUQVRFTSk7IGkr KykKCQkJc3RhdGVEYXRhW2ldID0gaW5wdXRTdGF0ZUFycmF5W2ldOwoJfQoJc3RhdGVEYXRhID0g bXhHZXRQcihzdGF0ZU1hdHJpeCk7CglzdGF0ZTEgPSAmc3RhdGVEYXRhWzAqbkNoYW5uZWxzXTsK CXN0YXRlMiA9ICZzdGF0ZURhdGFbMSpuQ2hhbm5lbHNdOwoJCglyZXR1cm4gMDsKfSAgCgovKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSovCgojZGVmaW5lCWtDb21tYW5kU2l6ZQkyMAoKdm9pZCBtZXhGdW5jdGlv bihpbnQgbmxocywgbXhBcnJheSAqcGxoc1tdLCBpbnQgbnJocywgY29uc3QgbXhBcnJheSAqcHJo c1tdKQp7IAkKCXJlZ2lzdGVyIGludAlpLCBuOwoJcmVnaXN0ZXIgRE9VQkxFCWluLCBvdXRwdXQs ICppbnB1dDsKCglpZiAobnJocyA+PSAxICYmIG14SXNDaGFyKHByaHNbMF0pKXsKCQkJCQkJLyog SWdub3JlIG9ic29sZXRlIHRleHQgY21kcyAqLwoJCXJldHVybjsKCX0KCQoJaWYgKENoZWNrQXJn dW1lbnRzKG5saHMsIHBsaHMsIG5yaHMsIHByaHMpICl7CgkJbWV4RXJyTXNnVHh0KCJpbnZzb3Nj YXNjYWRlIGFyZ3VtZW50IGNoZWNraW5nIGZhaWxlZC4iKTsKCQlyZXR1cm4gOwoJfQoKCWZvciAo bj0wOyBuPG5TYW1wbGVzOyBuKyspewoJCW91dHB1dCA9IDA7CgkJaW5wdXQgPSAmaW5wdXREYXRh W24qbkNoYW5uZWxzXTsKCQlmb3IgKGk9bkNoYW5uZWxzLTE7IGk+PTA7IGktLSl7CgkJCWlmIChn YWlucykKCQkJCWluID0gb3V0cHV0ICsgZ2FpbnNbaV0qaW5wdXRbaV07CgkJCWVsc2UKCQkJCWlu ID0gb3V0cHV0ICsgaW5wdXRbaV07CgkJCW91dHB1dCAgICA9IGEwW2ldICogaW4gICAgICAgICAg ICAgICAgICArIHN0YXRlMVtpXTsKCQkJc3RhdGUxW2ldID0gYTFbaV0gKiBpbiAtIGIxW2ldICog b3V0cHV0ICsgc3RhdGUyW2ldOwoJCQlzdGF0ZTJbaV0gPSBhMltpXSAqIGluIC0gYjJbaV0gKiBv dXRwdXQ7CgkJfQoJCW91dHB1dERhdGFbbl0gPSBvdXRwdXQ7Cgl9CgkJCQkJCS8qIEFzc2lnbiBv dXRwdXQgcG9pbnRlcnMgKi8KCXBsaHNbMF0gPSBvdXRwdXRNYXRyaXg7IAp9Cg== ------_=_NextPart_001_01C1ACC0.A6A92DB6 Content-Type: application/octet-stream; name="experiment.m" Content-Transfer-Encoding: base64 Content-Description: experiment.m Content-Disposition: attachment; filename="experiment.m" ZW5mdW5jdGlvbiB4PWV4cGVyaW1lbnQoeCxzcixkZixlYXJRLHN0ZXBmYWN0b3IsZGlmZmVyLGFn Y2YsdGF1ZmFjdG9yKQ0KJSB5PUx5b25QYXNzaXZlRWFyKGlucHV0LCBzYW1wbGVfcmF0ZSwgZGVj aW1hdGlvbiwgZWFyUSwgc3RlcGZhY3Rvcik7DQolDQolIENoYW5nZXMNCiUgWmVyb2VkIG91dCB0 aGUgcHJlZW1waGFzaXMgY2hhbm5lbHMgYmVmb3JlIGRvaW5nIHRoZSBBR0MuICBUaGlzIGlzIG5l ZWRlZA0KJSBzbyB0aGF0IGNvY2hsZWFyIGludmVyc2lvbiBpcyBwb3NzaWJsZSAoc2luY2Ugd2Ug ZG9uJ3QgaGF2ZSB0aG9zZSBjaGFubmVscywNCiUgd2UgY2FuJ3QgaW52ZXJ0IHRoZWlyIGdhaW4u KS4uLi4uIE1hbGNvbG0gNi8yNi85NQ0KDQolIChjKSAxOTk4IEludGVydmFsIFJlc2VhcmNoIENv cnBvcmF0aW9uICANCg0KaWYgbmFyZ2luIDwgMw0KCWZwcmludGYoJ1N5bnRheDogeT1MeW9uUGFz c2l2ZUVhcihpbnB1dCwgc2FtcGxlX3JhdGUsIGRlY2ltYXRpb24sIGVhclEsIHN0ZXBmYWN0b3Ip XG4nKTsNCglmcHJpbnRmKCcgVGhlIGlucHV0LCBzYW1wbGVfcmF0ZSwgYW5kIGRlY2ltYXRpb24g cGFyYW1ldGVycyBhcmUgbWFuZGF0b3J5LlxuJyk7DQoJcmV0dXJuOw0KZW5kDQoNCmlmIGRmIDwg MTsgZGYgPSAxOyBlbmQNCmlmIG5hcmdpbiA8IDQ7IGVhclEgPSA4OyBlbmQNCmlmIG5hcmdpbiA8 IDU7IHN0ZXBmYWN0b3IgPSBlYXJRLzMyOyBlbmQNCmlmIG5hcmdpbiA8IDY7IGRpZmZlcj0xOyBl bmQNCmlmIG5hcmdpbiA8IDc7IGFnY2Y9MTsgZW5kDQppZiBuYXJnaW4gPCA4OyB0YXVmYWN0b3I9 MzsgZW5kDQoNCltlYXJGaWx0ZXJzLENGcmVxLEdnYWluXSA9IERlc2lnbkx5b25GaWx0ZXJzKHNy LCBlYXJRLCBzdGVwZmFjdG9yKTsNClt5LHNdID0gc29zY2FzY2FkZSh4LGVhckZpbHRlcnMpOw0K W1Jvd1ksQ29sdW1uWV0gPSBzaXplKHkpOw0KW1Jvd1MsQ29sdW1uU10gPSBzaXplKHMpOw0KDQp0 ZW1wID0gemVyb3MoUm93WSxDb2x1bW5ZKTsNCiUgdGltZSByZXZlcnNpbmcgdGhlIGRhdGENCmZv ciBpID0gMTpSb3dZDQogICAgZm9yIGogPSAxOkNvbHVtblkNCiAgICAgICAgdGVtcChpLENvbHVt blktaisxKT15KGksaik7DQogICAgZW5kICAgIA0KZW5kDQoNCnkgPSB0ZW1wOyANCiV0aW1lIHJl dmVyc2luZyBzdGF0ZQ0KdGVtcCA9IHplcm9zKFJvd1MsQ29sdW1uUyk7DQoNCmZvciBpID0gMTpS b3dTDQogICAgZm9yIGogPSAxOkNvbHVtblMNCiAgICAgICAgdGVtcChpLENvbHVtblMtaisxKSA9 IHMoaSxqKTsNCiAgICBlbmQNCmVuZA0KcyA9IHRlbXA7DQoNCnggPSBpbnZzb3NjYXNjYWRlKHks ZWFyRmlsdGVycyxHZ2FpbixzKTsNCg0KDQo= ------_=_NextPart_001_01C1ACC0.A6A92DB6 Content-Type: application/octet-stream; name="DesignLyonFilters.m" Content-Transfer-Encoding: base64 Content-Description: DesignLyonFilters.m Content-Disposition: attachment; filename="DesignLyonFilters.m" JSBbZmlsdGVycywgZnJlcXNdID0gRGVzaWduTHlvbkZpbHRlcnMoZnMsRWFyUSxTdGVwRmFjdG9y KQolIERlc2lnbiB0aGUgY2FzY2FkZSBvZiBzZWNvbmQgb3JkZXIgZmlsdGVycyBhbmQgdGhlIGZy b250IGZpbHRlcnMKJSAob3V0ZXIvbWlkZGxlIGFuZCBjb21wZW5zYXRvcikgbmVlZGVkIGZvciBM eW9uJ3MgUGFzc2l2ZSBTaG9ydCBXYXZlCiUgKFNlY29uZCBPcmRlciBTZWN0aW9ucykgY29jaGxl YXIgbW9kZWwuICBUaGUgdmFyaWFibGVzIHVzZWQgaGVyZSBjb21lCiUgZnJvbSBBcHBsZSBBVEcg VGVjaG5pY2FsIFJlcG9ydCAjMTMgdGl0bGVkICJMeW9uJ3MgQ29jaGxlYXIgTW9kZWwiLgolCiUg TW9zdCBvZiB0aGUgcGFyYW1ldGVycyBhcmUgaGFyZHdpcmVkIGludG8gdGhpcyBtLWZ1bmN0aW9u LiAgVGhlIHVzZXIKJSBzZXR0YWJsZSBwYXJhbWV0ZXJzIGFyZSB0aGUgZGlnaXRhbCBzYW1wbGlu ZyByYXRlLCB0aGUgYmFzaWMgUSBvZiB0aGUKJSBlYWNoIHN0YWdlICh1c3VhbGx5IDggb3IgNCks IGFuZCB0aGUgc3BhY2luZyBmYWN0b3IgYmV0d2VlbiBjaGFubmVscwolICh1c3VhbGx5IC4yNSBh bmQgLjEyNSwgcmVzcGVjdGl2ZWx5LikKJQolIFRoZSByZXN1bHQgaXMgcmV0dXJuZWQgYXMgcm93 cyBvZiBzZWNvbmQgb3JkZXIgZmlsdGVyczsgdGhyZWUgY29lZmZpY2llbnRzCiUgZm9yIHRoZSBu dW1lcmF0b3IgYW5kIHR3byBmb3IgdGhlIGRlbm9taWF0b3IuICBUaGUgY29lZmZpY2llbnRzIGFy ZQolIFtBMCBBMSBBMiBCMSBCMl0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLihNYWxjb2xtIDEg RmViLiAxOTkzKQolCgolIChjKSAxOTk4IEludGVydmFsIFJlc2VhcmNoIENvcnBvcmF0aW9uICAK ZnVuY3Rpb24gW2ZpbHRlcnMsIENlbnRlckZyZXFzLCBnYWluc10gPSBEZXNpZ25MeW9uRmlsdGVy cyhmcyxFYXJRLFN0ZXBGYWN0b3IpCgppZiBuYXJnaW4gPCAyCglFYXJRID0gODsKZW5kCgppZiBu YXJnaW4gPCAzCglTdGVwRmFjdG9yPUVhclEvMzI7CmVuZAoKRWIgPSAxMDAwLjA7CkVhclplcm9P ZmZzZXQgPSAxLjU7CkVhclNoYXJwbmVzcyA9IDUuMDsKRWFyUHJlbXBoQ29ybmVyID0gMzAwOwoK JSBGaW5kIHRvcCBmcmVxdWVuY3ksIGFsbG93aW5nIHNwYWNlIGZvciBmaXJzdCBjYXNjYWRlIGZp bHRlci4KdG9wZiA9IGZzLzIuMDsKdG9wZiA9IHRvcGYgLSAoc3FydCh0b3BmXjIrRWJeMikvRWFy USpTdGVwRmFjdG9yKkVhclplcm9PZmZzZXQpKyAuLi4KCQkJCQlzcXJ0KHRvcGZeMitFYl4yKS9F YXJRKlN0ZXBGYWN0b3I7CgolIEZpbmQgcGxhY2Ugd2hlcmUgQ2FzY2FkZVBvbGVRIDwgLjUKbG93 ZiA9IEViL3NxcnQoNCpFYXJRXjItMSk7Ck51bWJlck9mQ2hhbm5lbHMgPSBmbG9vcigoRWFyUSoo LWxvZyhsb3dmICsgc3FydChsb3dmXjIgKyBFYl4yKSkgKyAuLi4KICAgICAgICAgbG9nKHRvcGYg KyBzcXJ0KEViXjIgKyB0b3BmXjIpKSkpL1N0ZXBGYWN0b3IpOwoKJSBOb3cgbWFrZSBhbiBhcnJh eSBvZiBDZW50ZXJGcmVxcy4uLi4uIFRoaXMgZXhwcmVzc2lvbiB3YXMgZGVyaXZlZCBieQolIE1h dGhlbWF0aWNhIGJ5IGludGVncmF0aW5nIDEvRWFyQmFuZHdpZHRoKGNmKSBhbmQgc29sdmluZyBm b3IgZiBhcyBhIAolIGZ1bmN0aW9uIG9mIGNoYW5uZWwgbnVtYmVyLgpjbiA9IDE6TnVtYmVyT2ZD aGFubmVsczsKQ2VudGVyRnJlcXMgPSAoLSgoZXhwKChjbipTdGVwRmFjdG9yKS9FYXJRKSpFYl4y KS8gLi4uCiAgICAgICAgICAodG9wZiArIHNxcnQoRWJeMiArIHRvcGZeMikpKSArIC4uLgogICAg ICAgKHRvcGYgKyBzcXJ0KEViXjIgKyB0b3BmXjIpKS4vZXhwKChjbipTdGVwRmFjdG9yKS9FYXJR KSkvMjsKCiUgT0ssIG5vdyB3ZSBjYW4gZmlndXJlIG91dCB0aGUgcGFyYW1ldGVycyBvZiBlYWNo IHN0YWdlIGZpbHRlci4KRWFyQmFuZHdpZHRoID0gc3FydChDZW50ZXJGcmVxcy5eMitFYl4yKS9F YXJROwpDYXNjYWRlWmVyb0NGID0gQ2VudGVyRnJlcXMgKwlFYXJCYW5kd2lkdGggKiBTdGVwRmFj dG9yICogRWFyWmVyb09mZnNldDsKQ2FzY2FkZVplcm9RID0gRWFyU2hhcnBuZXNzKkNhc2NhZGVa ZXJvQ0YuL0VhckJhbmR3aWR0aDsKQ2FzY2FkZVBvbGVDRiA9IENlbnRlckZyZXFzOwpDYXNjYWRl UG9sZVEgPSBDZW50ZXJGcmVxcy4vRWFyQmFuZHdpZHRoOwoKJSBOb3cgbGV0cyBmaW5kIHNvbWUg ZmlsdGVycy4uLi4gZmlyc3QgdGhlIHplcm9zIHRoZW4gdGhlIHBvbGVzCnplcm9maWx0cyA9IFNl Y29uZE9yZGVyRmlsdGVyKENhc2NhZGVaZXJvQ0YsIENhc2NhZGVaZXJvUSwgZnMpOwpwb2xlZmls dHMgPSBTZWNvbmRPcmRlckZpbHRlcihDYXNjYWRlUG9sZUNGLCBDYXNjYWRlUG9sZVEsIGZzKTsK ZmlsdGVycyA9IFt6ZXJvZmlsdHMgcG9sZWZpbHRzKDosMjozKV07CgolIE5vdyB3ZSBjYW4gc2V0 IHRoZSBEQyBnYWluIG9mIGVhY2ggc3RhZ2UuCmRjZ2FpbigyOk51bWJlck9mQ2hhbm5lbHMpPUNl bnRlckZyZXFzKDE6TnVtYmVyT2ZDaGFubmVscy0xKS4vIC4uLgoJCQkJCUNlbnRlckZyZXFzKDI6 TnVtYmVyT2ZDaGFubmVscyk7CmRjZ2FpbigxKSA9IGRjZ2FpbigyKTsKZm9yIGk9MTpOdW1iZXJP ZkNoYW5uZWxzCiAgICAgZmlsdGVycyhpLDopID0gU2V0R2FpbihmaWx0ZXJzKGksOiksIGRjZ2Fp bihpKSwgMCwgZnMpOwplbmQKCiUgRmluYWxseSwgbGV0J3MgZGVzaWduIHRoZSBmcm9udCBmaWx0 ZXJzLgpmcm9udCgxLDopID0gU2V0R2FpbihbMCAxIC1leHAoLTIqcGkqRWFyUHJlbXBoQ29ybmVy L2ZzKSAwIDBdLCAxLCBmcy80LCBmcyk7CnRvcFBvbGVzID0gU2Vjb25kT3JkZXJGaWx0ZXIodG9w ZixDYXNjYWRlUG9sZVEoMSksIGZzKTsKZnJvbnQoMiw6KSA9IFNldEdhaW4oWzEgMCAtMSB0b3BQ b2xlcygyOjMpXSwgMSwgZnMvNCwgZnMpOwoKJSBOb3csIHB1dCB0aGVtIGFsbCB0b2dldGhlci4K ZmlsdGVycyA9IFtmcm9udDsgZmlsdGVyc107CgppZiBuYXJnb3V0ID4gMgoJJSBDb21wdXRlIHRo ZSBnYWlucyBuZWVkZWQgc28gdGhhdCBldmVyeXRoaW5nIGlzIGZsYXQKCSUgd2hlbiB3ZSBkbyB0 aGUgZmlsdGVyIGludmVyc2lvbi4KCVtjaGFubmVscywgd2lkdGhdID0gc2l6ZShmaWx0ZXJzKTsK CWxlbiA9IGxlbmd0aChDZW50ZXJGcmVxcyk7CgljbGVhciBjZnMyOwoJY2ZzMigxKSA9IGZzLzI7 CgljZnMyKDE6MjoyKmxlbikgPSBDZW50ZXJGcmVxczsKCWNmczIoMjoyOjIqbGVuLTEpID0gKENl bnRlckZyZXFzKDE6bGVuLTEpICsgQ2VudGVyRnJlcXMoMjpsZW4pKS8yOwolCWNmczIgPSBDZW50 ZXJGcmVxczsKCQoJcmVzcCA9IHplcm9zKGxlbmd0aChjZnMyKSwgY2hhbm5lbHMpOwoJZm9yIGk9 MTpjaGFubmVscwoJCXJlc3AoOixpKSA9IEZyZXFSZXNwKGZpbHRlcnMoaSw6KSwgY2ZzMiwgZnMp JzsKCWVuZAoJJSBFYWNoIGNvbHVtbiB2ZWN0b3Igb2YgcmVzcCBjb250YWlucyBvbmUgY2hhbm5l bCdzIHJlc3BvbnNlCgklIGFjcm9zcyBhbGwgZnJlcXVlbmNpZXMgKGluIGRCKS4KCWN1bXJlc3Ag PSBjdW1zdW0ocmVzcCcpJzsKCSUgY3VtcmVzcCBub3cgY29udGFpbnMgdGhlIHRvdGFsIGdhaW4g YXQgb3V0cHV0IG9mIGkndGggY2hhbm5lbCBhdCAKCSUgZnJlcXVlbmN5IGYKCWE9MTAuXihjdW1y ZXNwKDosMzpjaGFubmVscykvMjApOwoJYSA9IGEuKiBhOwkJCSUgSGF2ZSB0byBnbyB0aHJvdWdo IGVhY2ggZmlsdGVyIHR3aWNlLgoJZ2FpbnMgPSBbMDsgMDsgYSBcIG9uZXMobGVuZ3RoKGNmczIp LDEpXTsKZW5kCg== ------_=_NextPart_001_01C1ACC0.A6A92DB6--