[prev] [thread] [next] [lurker] [Date index for 2003/08/02]
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@xxxxxxxxx.xxx.xxxxxxxxxx.xxx for more info. ---1463760359-894031124-1059781923=:5155 Content-Type: TEXT/PLAIN; charset=US-ASCII On Fri, 1 Aug 2003, Jody Belka wrote: > Over the last couple of days i've been playing about with the dispatch > engine of nacho. Attached is the result, together with a modified version > of a module that is required by it. > After a discussion with richard, here's a new version. The script from last time (with some small modifications), has been renamed nacho-ex, and there is a new script that proxies into it, converting from the positional parameter system into the named parameter system. As before, feedback welcome and preferred. Jody ---1463760359-894031124-1059781923=:5155 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=nacho-ex Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.44.0308020052030.5155@xxxx.xxxx.xxxxxxxxxxx.xxx> Content-Description: 'nacho' from last time, with small changes Content-Disposition: attachment; filename=nacho-ex IyEvdXNyL2Jpbi9wZXJsIC13DQojICRJZCQNCnVzZSBzdHJpY3Q7DQp1c2Ug RmlsZTo6UGF0aCBxdyhta3BhdGgpOw0KdXNlIEZpbGU6OkJhc2VuYW1lOw0K dXNlIERhdGE6OkR1bXBlcjsNCnVzZSBTdHJpbmc6OlNoZWxsUXVvdGU7DQp1 c2UgVU5JVkVSU0FMOjpyZXF1aXJlOw0KdXNlIFBvZDo6VXNhZ2U7DQp1c2Ug R2V0b3B0OjpBcmd2RmlsZSBxdyhhcmd2RmlsZSk7DQp1c2UgR2V0b3B0OjpM b25nOw0KDQp1c2UgdmFycyBxdy8gJFZFUlNJT04gJUNPTU1BTkRTIC87DQok VkVSU0lPTiA9ICIxLjEiOw0KDQojIyBUT0RPDQojIHNldHRpbmcgcGVyc29u YWwgcGx1Z2lucw0KDQoNCj1oZWFkMSBOQU1FDQoNCm5hY2hvLWV4IC0gdGhl IHNpZXN0YSBjb21tYW5kIGxpbmUgY29uZmlndXJhdGlvbiB0b29sDQoNCj1o ZWFkMSBTWU5PUFNJUw0KDQpuYWNoby1leCBbY29tbWFuZCBbb3B0aW9uc10u Li5dDQoNCiBHZW5lcmljIE9wdGlvbnM6DQogICAtZCwgLS1kYXRhYmFzZT1E QklfVVJJICBcIHRoZXNlIHR3byBvcHRpb25zIGFsbG93IHlvdSB0byBvdmVy cmlkZQ0KICAgLWYsIC0tY29uZmlnLWZpbGU9RklMRSAgLyB0aGUgdmFsdWVz IGRlZmluZWQgaW4gU2llc3RhOjpDb25maWcNCg0KICAgLWgsIC0taGVscCAg ICAgICAgICAgaGVscCB0ZXh0IGRldGFpbGluZyB0aGUgY29tbWFuZHMgYW5k IHRoZWlyIG9wdGlvbnMNCiAgIC1WLCAtLXZlcnNpb24gICAgICAgIHByaW50 cyB0aGUgdmVyc2lvbiBudW1iZXINCg0KDQogTWlzYyBDb21tYW5kczogICBj cmVhdGUtZGF0YWJhc2UgIHJ1bi1tYXJpYWNoZSAgICAgIGNyZWF0ZS1iYWNr dXANCiBMaXN0IENvbW1hbmRzOiAgIHNob3ctbGlzdHMgICAgICAgc2hvdy1h bGlhcyAgICAgICAgZGVzY3JpYmUtbGlzdA0KICAgICAgICAgICAgICAgICAg Y3JlYXRlLWxpc3QgICAgICBtb2RpZnktbGlzdCAgICAgICBkZWxldGUtbGlz dCAgICANCiAgICAgICAgICAgICAgICAgIHNldC1wbHVnaW5zICAgICAgYWRk LW1lbWJlciAgICAgICAgcmVtb3ZlLW1lbWJlcg0KIE1lbWJlciBDb21tYW5k czogc2hvdy1tZW1iZXJzICAgICBkZXNjcmliZS1tZW1iZXIgICBjcmVhdGUt bWVtYmVyDQogICAgICAgICAgICAgICAgICBtb2RpZnktbWVtYmVyICAgIGRl bGV0ZS1tZW1iZXINCiBQbHVnaW4gQ29tbWFuZHM6IHNob3ctcGx1Z2lucyAg ICAgZGVzY3JpYmUtcGx1Z2lucyAgbW9kaWZ5LXBsdWdpbg0KDQogT3B0aW9u cyBhbmQgY29tbWFuZHMgbWF5IGJlIHJlYWQgZnJvbSBhIGZpbGUgYnkgZ2l2 aW5nIHRoZSBuYW1lIG9mIHRoZQ0KIGZpbGUgcHJlZml4ZWQgYnkgYSBALiBU aGUgZGF0YWJhc2UgYW5kIGNvbmZpZy1maWxlIG9wdGlvbnMgYWZmZWN0IGFs bA0KIG9mIHRoZSBzdXBwbGllZCBjb21tYW5kcy4gaWYgZWl0aGVyIG9mIHRo ZW0gaXMgc3VwcGxpZWQgbW9yZSB0aGFuIG9uY2UsDQogdGhlIGxhc3Qgb25l IHdpbGwgdGFrZSBwcmlvcml0eS4NCg0KPWhlYWQxIE9QVElPTlMNCiANCiBO T1RFOiBBbGwgY29tbWFuZCBvcHRpb25zIGFyZSBtYW5kYXRvcnkgdW5sZXNz IG90aGVyd2lzZSBzdGF0ZWQNCg0KIE1pc2MgQ29tbWFuZHM6DQogICBjcmVh dGUtZGF0YWJhc2UgICAgICBpbml0aWFsaXNlcyBhIG5ldyBkYXRhYmFzZQ0K ICAgcnVuLW1hcmlhY2hpICAgICAgICAgaW52b2tlIG1hcmlhY2hpIHRvIG1h a2Ugd2ViaWZpZWQgYXJjaGl2ZXMNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgKGRlcGVuZHMgb24gdGhlIEFyY2hpdmUgcGx1Z2luKQ0KICAgY3JlYXRl LWJhY2t1cCAgICAgICAgcHJpbnRzIG91dCBhIHNoZWxsIHNjcmlwdCB0aGF0 IHdpbGwgcmVzdG9yZSB5b3VyIHN5c3RlbSB3aGVuIHJ1bg0KICAgICAtbCwg LS1saXN0PU5BTUUgICAgbGltaXQgdGhlIGJhY2t1cCBzY3JpcHQgdG8gdGhp cyBsaXN0IChvcHRpb25hbCkNCg0KICBMaXN0IENvbW1hbmRzOg0KICAgc2hv dy1saXN0cyAgICAgICAgICAgc2hvd3MgYWxsIHRoZSBsaXN0cyB0aGF0IGFy ZSBpbiB0aGUgc3lzdGVtDQogICBjcmVhdGUtbGlzdCAgICAgICAgICBjcmVh dGVzIGEgbmV3IGxpc3QNCiAgICAgLWwsIC0tbGlzdD1OQU1FICAgICAgICB0 aGUgbmFtZSBvZiB0aGUgbGlzdA0KICAgICAtbywgLS1vd25lcj1FTUFJTCAg ICAgIHRoZSBhZG1pbmlzdHJhdG9yIG9mIHRoZSBsaXN0DQogICAgIC1wLCAt LXBvc3Q9RU1BSUwgICAgICAgdGhlIGFkZHJlc3MgdG8gc2VuZCBtYWlsIHRv IGZvciBwb3N0aW5nIHRvIHRoZSBsaXN0DQogICAgIC1iLCAtLWJvdW5jZXM9 RU1BSUwgICAgdGhlIGFkZHJlc3MgdGhhdCBib3VuY2VzIHNob3VsZCBjb21l IGJhY2sgdG8NCg0KICAgc2hvdy1hbGlhcyAgICAgICAgICAgcHJpbnRzIG91 dCBhbiBhbGlhcyBmaWxlIGVudHJ5IGZvciBhIGxpc3QNCiAgICAgLWwsIC0t bGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0aGUgbGlzdA0K DQogICBkZXNjcmliZS1saXN0ICAgICAgICBzaG93cyBhbGwgdGhlIHByb3Bl cnRpZXMgb2YgYSBsaXN0IGFuZCB0aGVpciB2YWx1ZXMNCiAgICAgLWwsIC0t bGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0aGUgbGlzdA0K DQogICBtb2RpZnktbGlzdCAgICAgICAgICBjaGFuZ2Ugb25lIG9yIG1vcmUg cHJvcGVydGllcyBvZiBhIGxpc3QNCiAgICAgLWwsIC0tbGlzdD1OQU1FfElE ICAgICB0aGUgbmFtZSBvciBpZCBvZiB0aGUgbGlzdA0KICAgICAtcHIsIC0t cHJvcGVydHkgS0VZPVZBTFVFDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2V0cyB0aGUgcHJvcGVydHkgS0VZIHRvIFZBTFVFIChyZXBlYXRhYmxl KQ0KDQogICAgICBOb3RlOiB5b3UgY2FuIGVmZmVjdGl2ZWx5IGNvcHkgdGhl IGNvbmZpZ3VyYXRpb24gb2YgYSBsaXN0IGJ5IG1vZGlmaXlpbmcNCiAgICAg ICAgICAgIHRoZSAnaWQnIHByb3BlcnR5IC0gYSBuZXcgbGlzdCB3aXRoIHRo ZSBuZXcgaWQgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UuDQoNCiAgIGRlbGV0 ZS1saXN0ICAgICAgICAgIHJlbW92ZSBhIGxpc3RzIGZyb20gdGhlIHN5c3Rl bQ0KICAgICAtbCwgLS1saXN0PU5BTUV8SUQgICAgIHRoZSBuYW1lIG9yIGlk IG9mIHRoZSBsaXN0DQoNCiAgIHNldC1wbHVnaW5zICAgICAgICAgIHNldHMg dGhlIHBsdWdpbnMgb2YgYSBsaXN0DQogICAgICAgICAgICAgICAgICAgICAg ICAgIChhbnkgZXhpc3RpbmcgcGx1Z2lucyBub3Qgc3BlY2lmaWVkIHdpbGwg YmUgZGVsZXRlZCkNCiAgICAgLWwsIC0tbGlzdD1OQU1FfElEICAgICB0aGUg bmFtZSBvciBpZCBvZiB0aGUgbGlzdA0KICAgICAtcSwgLS1xdWV1ZT1OQU1F ICAgICAgIHRoZSBuYW1lIG9mIHRoZSBxdWV1ZSAoZWcgcG9zdCwgc3ViLCB1 bnN1YiwgLi4uKQ0KICAgICAtcCwgLS1wbHVnaW49TkFNRSAgICAgIHRoZSBu YW1lIG9mIGEgcGx1Z2luIChyZXBlYXRhYmxlKQ0KICAgICANCiAgIGFkZC1t ZW1iZXIgICAgICAgICAgIGFkZHMgb25lIG9yIG1vcmUgbWVtYmVycyB0byBh IGxpc3QNCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbGwgY3JlYXRl IG5ldyBtZW1iZXJzIGlmIG5lY2Vzc2FyeSkNCiAgICAgLWwsIC0tbGlzdD1O QU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0aGUgbGlzdA0KICAgICAt bSwgLS1tZW1iZXI9RU1BSUwgICAgIHRoZSBlbWFpbCBhZGRyZXNzIG9mIGEg bWVtYmVyIChyZXBlYXRhYmxlKQ0KDQogICByZW1vdmUtbWVtYmVyICAgICAg ICByZW1vdmVzIG9uZSBvciBtb3JlIG1lbWJlcnMgZnJvbSBhIGxpc3QNCiAg ICAgLWwsIC0tbGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0 aGUgbGlzdA0KICAgICAtbSwgLS1tZW1iZXI9RU1BSUwgICAgIHRoZSBlbWFp bCBhZGRyZXNzIG9mIGEgbWVtYmVyIChyZXBlYXRhYmxlKQ0KDQogICANCiBN ZW1iZXIgQ29tbWFuZHM6DQogICBzaG93LW1lbWJlcnMgICAgICAgICBzaG93 cyB0aGUgbWVtYmVycyBpbiB0aGUgc3lzdGVtLCBvciBvbmUgb3IgbW9yZSBs aXN0cw0KICAgICAtbCwgLS1saXN0PU5BTUV8SUQgICAgIHNob3cgdGhlIG1l bWJlcnMgc3ViYmVkIHRvIHRoaXMgbGlzdCAob3B0aW9uYWwsIHJlcGVhdGFi bGUpDQoNCiAgIGNyZWF0ZS1tZW1iZXIgICAgICAgIGFkZHMgb25lIG9yIG1v cmUgbmV3IG1lbWJlcnMgdG8gdGhlIHN5c3RlbQ0KICAgICAtbSwgLS1tZW1i ZXI9RU1BSUwgICAgIHRoZSBlbWFpbCBhZGRyZXNzIG9mIGEgbWVtYmVyIChy ZXBlYXRhYmxlKQ0KDQogICBkZXNjcmliZS1tZW1iZXIgICAgICBzaG93cyBh bGwgdGhlIHByb3BlcnRpZXMgb2YgYSBtZW1iZXIgYW5kIHRoZWlyIHZhbHVl cw0KICAgICAtbSwgLS1tZW1iZXI9RU1BSUx8SUQgIHRoZSBlbWFpbCBhZGRy ZXNzIG9yIGlkIG9mIGEgbWVtYmVyDQoNCiAgIG1vZGlmeS1tZW1iZXIgICAg ICAgIGNoYW5nZSBvbmUgb3IgbW9yZSBwcm9wZXJ0aWVzIG9mIGEgbWVtYmVy DQogICAgIC1tLCAtLW1lbWJlcj1FTUFJTHxJRCAgdGhlIGVtYWlsIGFkZHJl c3Mgb3IgaWQgb2YgYSBtZW1iZXINCiAgICAgLXByLCAtLXByb3BlcnR5IEtF WT1WQUxVRQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHMgdGhl IHByb3BlcnR5IEtFWSB0byBWQUxVRSAocmVwZWF0YWJsZSkNCg0KICAgICAg Tm90ZTogeW91IGNhbiBlZmZlY3RpdmVseSBjb3B5IHRoZSBjb25maWd1cmF0 aW9uIG9mIGEgbWVtYmVyIGJ5IG1vZGlmaXlpbmcNCiAgICAgICAgICAgIHRo ZSAnaWQnIHByb3BlcnR5IC0gYSBuZXcgbWVtYmVyIHdpdGggdGhlIG5ldyBp ZCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdS4NCg0KICAgZGVsZXRlLW1lbWJl ciAgICAgICAgcmVtb3ZlcyBvbmUgb3IgbW9yZSBtZW1iZXJzIGZyb20gdGhl IHN5c3RlbQ0KICAgICAtbSwgLS1tZW1iZXI9RU1BSUx8SUQgIHRoZSBlbWFp bCBhZGRyZXNzIG9yIGlkIG9mIGEgbWVtYmVyIChyZXBlYXRhYmxlKQ0KDQog UGx1Z2luIENvbW1hbmRzOg0KICAgc2hvdy1wbHVnaW5zICAgICAgICAgZGlz cGxheSBhIGxpc3Qgb2YgcGx1Z2lucyAob24gdGhlIHN5c3RlbSwgb3Igc2V0 IG9uIGxpc3RzKSAgDQogICAgIC1sLCAtLWxpc3Q9TkFNRXxJRCAgICAgc2hv dyB0aGUgcGx1Z2lucyBzZXQgb24gdGhpcyBsaXN0IChvcHRpb25hbCwgcmVw ZWF0YWJsZSkNCg0KICAgZGVzY3JpYmUtcGx1Z2luICAgICAgc2hvd3MgYWxs IHRoZSBvcHRpb25zIGZvciBhIHBhcnRpY3VsYXIgcGx1Z2luDQogICAgIC1w LCAtLXBsdWdpbj1OQU1FICAgICAgdGhlIG5hbWUgb2YgdGhlIHBsdWdpbg0K ICAgICAtbCwgLS1saXN0PU5BTUV8SUQgICAgIHNob3cgdGhlIGN1cnJlbnQg c2V0dGluZ3MgZm9yIHRoaXMgbGlzdCAob3B0aW9uYWwpDQogICAgIC1tLCAt LW1lbWJlcj1FTUFJTHxJRCAgc2hvdyB0aGUgb3B0aW9ucyBmb3IgdGhpcyBt ZW1iZXIgZm9yIHRoZSBzcGVjaWZpZWQgbGlzdCAob3B0aW9uYWwpDQoNCiAg IG1vZGlmeS1wbHVnaW4gICAgICAgIHNldHMgb25lIG9yIG1vcmUgcGx1Z2lu IHByZWZlcmVuY2VzIGZvciBhIGxpc3QNCiAgICAgLXBsLCAtLXBsdWdpbj1O QU1FICAgICB0aGUgbmFtZSBvZiB0aGUgcGx1Z2luDQogICAgIC1sLCAtLWxp c3Q9TkFNRXxJRCAgICAgdGhlIG5hbWUgb3IgaWQgb2YgYSBsaXN0DQogICAg IC1tLCAtLW1lbWJlcj1FTUFJTHxJRCAgc2V0IHRoZSBwZXJzb25hbCBwcmVm ZXJlbmNlIG9mIHRoaXMgbWVtYmVyIGZvciB0aGlzIGxpc3QgKG9wdGlvbmFs KQ0KICAgICAtcHIsIC0tcHJlZmVyZW5jZSBLRVk9VkFMVUUNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXRzIHRoZSBwcm9wZXJ0eSBLRVkgdG8g VkFMVUUgKHJlcGVhdGFibGUpDQoNCj1jdXQNCg0KQkVHSU57DQoNCgkjIyMj Iw0KCSMNCgkjIE1pc2Mgc3R1ZmYNCgkjDQoJIyMjIyMNCg0KCSRDT01NQU5E U3snY3JlYXRlLWRhdGFiYXNlJ30gPSB7DQoJYWN0aW9uID0+IHN1YiB7DQoJ CXJlcXVpcmUgU2llc3RhOjpEQkk7DQoJCVNpZXN0YTo6REJJLT5pbml0X2Ri Ow0KCX0NCgl9Ow0KDQoJJENPTU1BTkRTeydydW4tbWFyaWFjaGknfSA9IHsN CglhY3Rpb24gPT4gc3ViIHsNCgkgICAgZm9yIG15ICRsaXN0ICggbWFwIHsg JF8tPm5hbWUgfSBTaWVzdGE6Okxpc3QtPnJldHJpZXZlX2FsbCApIHsNCgkJ CW15ICRpbnB1dDsNCgkJCW15ICRvdXRwdXQ7DQoJCQl7DQoJCQkJbm8gd2Fy bmluZ3M7DQoJCSAgICAgICAgJGlucHV0ICA9ICRTaWVzdGE6OkNvbmZpZzo6 QVJDSElWRSAuICIvJGxpc3QiOw0KCQkgICAgICAgICRvdXRwdXQgPSAkU2ll c3RhOjpDb25maWc6OlJPT1QgLiAiL21hcmlhY2hpLWh0bWwvJGxpc3QiOw0K CQkJfQ0KCSAgICAgICAgbWtwYXRoKCRvdXRwdXQpOw0KCSAgICAgICAgcHJp bnQgImludm9raW5nIG1hcmlhY2hpIGZvciAkbGlzdFxuIjsNCgkgICAgICAg IHN5c3RlbSAnbWFyaWFjaGknLCAnLWknLCAkaW5wdXQsICctbycsICRvdXRw dXQsICctbicsICRsaXN0Ow0KCSAgICB9DQoJfQ0KCX07DQoNCgkkQ09NTUFO RFN7J2NyZWF0ZS1iYWNrdXAnfSA9IHsNCglvcHRpb25hbCA9PiBbcXcvIGxp c3Q9cyAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMgPSBAXzsN Cg0KCQlteSBAbWVtYmVyczsNCgkJbXkgQGxpc3RzOw0KCQkNCgkJI2hhdmUg d2UgYmVlbiBwYXNzZWQgYSBsaXN0DQoJCWlmIChkZWZpbmVkICRvcHRze2xp c3R9KSB7DQoJCQlteSAkbGlzdCA9IFNpZXN0YTo6TGlzdC0+bG9hZCgkXykg DQoJCQkgIG9yIGRpZSAiY3JlYXRlLWJhY2t1cDogTm8gc3VjaCBsaXN0ICck XydcbiI7DQoJCQlwdXNoIEBsaXN0cywgJGxpc3Q7DQoJCQlAbWVtYmVycyA9 ICRsaXN0LT5tZW1iZXJzKCk7DQoJCQ0KCQkjIG90aGVyd2lzZSBkbyBldmVy eXRoaW5nDQoJCX0gZWxzZSB7DQoJCQlAbWVtYmVycyA9IFNpZXN0YTo6TWVt YmVyLT5yZXRyaWV2ZV9hbGw7DQoJCQlAbGlzdHMgICA9IFNpZXN0YTo6TGlz dC0+cmV0cmVpdmVfYWxsOw0KCQl9DQoNCgkJcHJpbnQgU2llc3RhLT5iYWtl KCdiYWNrdXAnLA0KCQkgICAgICAgICAgICAgICAgICAgJ21lbWJlcnMnID0+ IFxAbWVtYmVycywNCgkJICAgICAgICAgICAgICAgICAgICdsaXN0cycgICA9 PiBcQGxpc3RzLA0KCQkgICAgICAgICAgICAgICAgICAgJ3NoZWxscScgID0+ IHN1YiB7IHJldHVybiBzaGVsbF9xdW90ZSAkX1swXSB9LA0KCQkgICAgICAg ICAgICAgICAgICApOw0KCX0NCgl9OyANCg0KCSMjIyMjDQoJIw0KCSMgTGlz dCBzdHVmZg0KCSMNCgkjIyMjIw0KDQoNCgkkQ09NTUFORFN7J3Nob3ctbGlz dHMnfSA9IHsNCglhY3Rpb24gPT4gc3ViIHsNCgkJZm9yZWFjaCBteSAkbGlz dCAoIFNpZXN0YTo6TGlzdC0+cmV0cmlldmVfYWxsICkgew0KCQkJcHJpbnQg JGxpc3QtPm5hbWUgLiAiXG4iOw0KCQl9DQoJfQ0KCX07DQoJDQoJJENPTU1B TkRTeydjcmVhdGUtbGlzdCd9ID0gew0KCXJlcXVpcmVkID0+IFtxdy8gbGlz dD1zIG93bmVyPXMgcG9zdD1zIGJvdW5jZT1zIC9dLA0KCWFjdGlvbiA9PiBz dWIgew0KCQlteSAlb3B0cyA9IEBfOw0KDQoJCW15ICRsaXN0ID0gU2llc3Rh OjpMaXN0LT5uZXcoDQoJCQluYW1lICAgICAgICAgPT4gJG9wdHN7bGlzdH0s DQoJCQlvd25lciAgICAgICAgPT4gU2llc3RhOjpNZW1iZXItPmZpbmRfb3Jf Y3JlYXRlKHsgZW1haWwgPT4gJG9wdHN7b3duZXJ9IH0pLA0KCQkJcG9zdF9h ZGRyZXNzID0+ICRvcHRze3Bvc3R9LA0KCQkJcmV0dXJuX3BhdGggID0+ICRv cHRze2JvdW5jZX0sDQoJCSAgICkNCgkJICBvciBkaWUgImNyZWF0ZS1saXN0 OiBGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IGxpc3RcbiI7DQoNCgkJIyBzZXQg dXAgZGVmYXVsdCBwbHVnaW4gcXVldWVzDQoJCSRsaXN0LT5zZXRfcGx1Z2lu cyggcG9zdCAgPT4gcXcoIEFyY2hpdmUgU2VuZCApICk7DQoJCSRsaXN0LT5z ZXRfcGx1Z2lucyggc3ViICAgPT4gcXcoIFN1YnNjcmliZSApICk7DQoJCSRs aXN0LT5zZXRfcGx1Z2lucyggdW5zdWIgPT4gcXcoIFVuU3Vic2NyaWJlICkg KTsNCg0KCQlwcmludCAiQ3JlYXRlZCB0aGUgbmV3IGxpc3QgJyRvcHRze2xp c3R9JyA8JG9wdHN7cG9zdH0+XG4iOw0KCQlwcmludCAibmFjaG8gc2hvdy1h bGlhcyB3aWxsIHNob3cgeW91IHdoYXQgdG8gaW5jbHVkZSBpbiAvZXRjL2Fs aWFzZXNcbiI7DQoJfQ0KCX07DQoNCgkkQ09NTUFORFN7J3Nob3ctYWxpYXMn fSA9IHsNCglyZXF1aXJlZCA9PiBbcXcvIGxpc3Q9cyAvXSwNCglhY3Rpb24g PT4gc3ViIHsNCgkJbXkgJW9wdHMgPSBAXzsNCg0KCQlteSAkbGlzdCA9IFNp ZXN0YTo6TGlzdC0+bG9hZCggJG9wdHN7bGlzdH0gKQ0KCQkgIG9yIGRpZSAi c2hvdy1hbGlhczogTm90IGEgdmFsaWQgbGlzdCBuYW1lIG9yIGlkXG4iOw0K DQoJCXByaW50ICRsaXN0LT5hbGlhcygnbmFjaG8gKHRoZSBzaWVzdGEgY29u ZmlndXJhdGlvbiB0b29sKScpOw0KCX0NCgl9Ow0KDQoJJENPTU1BTkRTeydk ZXNjcmliZS1saXN0J30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3LyBsaXN0PXMg L10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87DQoNCgkJ bXkgJGxpc3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoICRvcHRze2xpc3R9ICkN CgkJICBvciBkaWUgImRlc2NyaWJlLWxpc3Q6IE5vdCBhIHZhbGlkIGxpc3Qg bmFtZSBvciBpZFxuIjsNCgkJDQoJCWZvcmVhY2ggbXkgJGtleSAoJGxpc3Qt PmNvbHVtbnMpIHsNCgkJCW15ICR2YWx1ZSA9ICRsaXN0LT4ka2V5KCkgfHwg Jyc7DQoJCQlwcmludCAiJGtleSA9ICR2YWx1ZVxuIjsNCgkJfQ0KDQoJCWZv ciBteSAkcXVldWUgKCRsaXN0LT5xdWV1ZXMpIHsgDQoJCQlwcmludCAiJHF1 ZXVlIHBsdWdpbnM6ICIsIGpvaW4oICcgJywgbWFwIHsgKCRfLT5wZXJzb25h bCk/ICIrIi4kXy0+bmFtZTokXy0+bmFtZSAgfSAkbGlzdC0+cGx1Z2lucygg JHF1ZXVlICkpLCAiXG4iOw0KCQl9DQoJfQ0KCX07DQoNCgkkQ09NTUFORFN7 J21vZGlmeS1saXN0J30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3LyBsaXN0PXMg cHJvcGVydHk9cyUgL10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRz ID0gQF87DQoNCgkJbXkgJGxpc3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoICRv cHRze2xpc3R9ICkNCgkJICBvciBkaWUgIm1vZGlmeS1saXN0OiBOb3QgYSB2 YWxpZCBsaXN0IG5hbWUgb3IgaWRcbiI7DQoNCgkJd2hpbGUgKG15ICgka2V5 LCAkdmFsdWUpID0gZWFjaCAleyRvcHRze3Byb3BlcnR5fX0pIHsNCgkJCW15 ICVmaWVsZHMgPSBtYXAgeyAkXyA9PiAxIH0gJGxpc3QtPmNvbHVtbnM7DQoJ CQlkaWUgIm1vZGlmeS1saXN0OiAnJGtleScgaXMgbm90IGEgdmFsaWQgcHJv cGVydHkgLSB2YWxpZCBwcm9wZXJ0aWVzIGFyZVxuIiwNCgkJCQkoam9pbiAi XG4iLCRsaXN0LT5jb2x1bW5zKSwiXG4iIHVubGVzcyAkZmllbGRzeyRrZXl9 Ow0KDQoJCQkkbGlzdC0+JGtleSgkdmFsdWUpOw0KCQkJcHJpbnQgIlByb3Bl cnR5ICcka2V5JyBzZXQgdG8gJyR2YWx1ZScgZm9yIHRoZSBsaXN0ICRvcHRz e2xpc3R9XG4iOw0KCQl9DQoJfQ0KCX07DQoNCgkkQ09NTUFORFN7J2RlbGV0 ZS1saXN0J30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3LyBsaXN0PXMgL10sDQoJ YWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87DQoNCgkJbXkgJGxp c3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoICRvcHRze2xpc3R9ICkNCgkJICBv ciBkaWUgImRlbGV0ZS1saXN0OiBOb3QgYSB2YWxpZCBsaXN0IG5hbWUgb3Ig aWRcbiI7DQoJDQoJCSMgZ29zaCwgQ2xhc3M6OkRCSSBtYWtlcyB0aGlzIGVh c3kNCgkJJGxpc3QtPmRlbGV0ZTsNCgkJDQoJCXByaW50ICJMaXN0ICckb3B0 c3tsaXN0fScgZGVsZXRlZFxuIjsNCgl9DQoJfTsNCg0KCSRDT01NQU5EU3sn c2V0LXBsdWdpbnMnfSA9IHsNCglyZXF1aXJlZCA9PiBbcXcvIGxpc3Q9cyBx dWV1ZT1zIC9dLA0KCW9wdGlvbmFsID0+IFtxdy8gcGx1Z2luPXNAIC9dLA0K CWFjdGlvbiA9PiBzdWIgew0KCQlteSAlb3B0cyA9IEBfOw0KDQoJCW15ICRs aXN0ID0gU2llc3RhOjpMaXN0LT5sb2FkKCAkb3B0c3tsaXN0fSApDQoJCSAg b3IgZGllICJzZXQtcGx1Z2luczogTm90IGEgdmFsaWQgbGlzdCBuYW1lIG9y IGlkXG4iOw0KDQoJCSRsaXN0LT5zZXRfcGx1Z2lucyggJG9wdHN7cXVldWV9 ID0+IEB7JG9wdHN7cGx1Z2lufX0gKQ0KCQkgIG9yIGRpZSAic2V0LXBsdWdp bnM6IFNvcnJ5LCBjb3VsZG4ndCBkbyB0aGF0IGZvciBzb21lIHJlYXNvblxu IjsNCg0KCQl1bmxlc3MgKEB7JG9wdHN7cGx1Z2lufX0pIHsNCgkJCXByaW50 ICJEZWxldGVkIHBsdWdpbnMgZnJvbSAkb3B0c3tsaXN0fVxuIjsNCgkJCXJl dHVybjsNCgkJfQ0KCX0NCgl9Ow0KDQoJJENPTU1BTkRTeydhZGQtbWVtYmVy J30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3LyBsaXN0PXMgbWVtYmVyPXNAIC9d LA0KCWFjdGlvbiA9PiBzdWIgew0KCQlteSAlb3B0cyA9IEBfOw0KDQoJCW15 ICRsaXN0ID0gU2llc3RhOjpMaXN0LT5sb2FkKCAkb3B0c3tsaXN0fSApDQoJ CSAgb3IgZGllICJhZGQtbWVtYmVyOiBOb3QgYSB2YWxpZCBsaXN0IG5hbWUg b3IgaWRcbiI7DQoNCgkJZm9yIG15ICRtZW1iZXJfaWQgKEB7JG9wdHN7bWVt YmVyfX0pIHsNCgkJCW15ICRtZW1iZXIgPSBTaWVzdGE6Ok1lbWJlci0+Zmlu ZF9vcl9jcmVhdGUoeyBlbWFpbCA9PiAkbWVtYmVyX2lkIH0pDQoJCQkgIG9y IGRpZSAiYWRkLW1lbWJlcjogQ291bGRuJ3QgZ2V0L2NyZWF0ZSBhIG1lbWJl ciAnJG1lbWJlcl9pZCdcbiI7DQoNCgkJCSRsaXN0LT5hZGRfbWVtYmVyKCRt ZW1iZXIpOw0KCQkJcHJpbnQgIk1lbWJlciA8Ii4kbWVtYmVyLT5lbWFpbC4i PiAoIi4kbWVtYmVyLT5pZC4iKSBhZGRlZCB0byBsaXN0ICckb3B0c3tsaXN0 fSdcbiI7DQoJCX07DQoJfQ0KCX07DQoNCgkkQ09NTUFORFN7J3JlbW92ZS1t ZW1iZXInfSA9IHsNCglyZXF1aXJlZCA9PiBbcXcvIGxpc3Q9cyBtZW1iZXI9 c0AgL10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87DQoN CgkJbXkgJGxpc3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoICRvcHRze2xpc3R9 ICkNCgkJICBvciBkaWUgInJlbW92ZS1tZW1iZXI6IE5vdCBhIHZhbGlkIGxp c3QgbmFtZSBvciBpZFxuIjsNCg0KCQlmb3IgbXkgJG1lbWJlcl9pZCAoQHsk b3B0c3ttZW1iZXJ9fSkgew0KCQkJbXkgJG1lbWJlciA9IFNpZXN0YTo6TWVt YmVyLT5sb2FkKCRtZW1iZXJfaWQpDQoJCQkgIG9yIGRpZSAicmVtb3ZlLW1l bWJlcjogJG1lbWJlcl9pZCBpcyBub3QgYSB2YWxpZCBtZW1iZXIgaWRcbiI7 DQoJCQkNCgkJCSRsaXN0LT5yZW1vdmVfbWVtYmVyKCRtZW1iZXIpOw0KCQkJ cHJpbnQgIk1lbWJlciAnJG1lbWJlcl9pZCcgcmVtb3ZlZCBmcm9tIGxpc3Qg JyRvcHRze2xpc3R9J1xuIjsNCgkJfTsNCgl9DQoJfTsNCg0KCSMjIyMjDQoJ Iw0KCSMgTWVtYmVyIHN0dWZmDQoJIw0KCSMjIyMjDQoNCg0KCSRDT01NQU5E U3snc2hvdy1tZW1iZXJzJ30gPSB7DQoJb3B0aW9uYWwgPT4gW3F3LyBsaXN0 PXNAIC9dLA0KCWFjdGlvbiA9PiBzdWIgew0KCQlteSAlb3B0cyA9IEBfOw0K DQoJCWlmICghZGVmaW5lZCAkb3B0c3tsaXN0fSkgew0KCQkJcHJpbnQgIkFs bCBtZW1iZXJzIGZvciBzeXN0ZW06XG4iOw0KCQkJZm9yZWFjaCBteSAkbWVt YmVyICggU2llc3RhOjpNZW1iZXItPnJldHJpZXZlX2FsbCApIHsNCgkJCQlw cmludCAkbWVtYmVyLT5lbWFpbCwgIlxuIjsNCgkJCX0NCgkJCXJldHVybjsN CgkJfSBlbHNlIHsNCgkJCWZvciAoQHskb3B0c3tsaXN0fX0pIHsNCgkJCQlt eSAkbGlzdCA9IFNpZXN0YTo6TGlzdC0+bG9hZCgkXykNCgkJCQkgIG9yIGRp ZSAic2hvdy1tZW1iZXJzOiBObyBsaXN0ICckXychXG4iOw0KCQkJCXByaW50 ICJNZW1iZXJzIG9mICRfOlxuIjsNCgkNCgkJCQlmb3JlYWNoIG15ICRtZW1i ZXIgKCRsaXN0LT5tZW1iZXJzKSB7DQoJCQkJCXByaW50ICRtZW1iZXItPmVt YWlsLCAiXG4iOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCgl9Ow0KDQoJJENP TU1BTkRTeydjcmVhdGUtbWVtYmVyJ30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3 LyBtZW1iZXI9c0AgL10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRz ID0gQF87DQoNCgkJZm9yIG15ICRtZW1iZXJfaWQgKEB7JG9wdHN7bWVtYmVy fX0pIHsNCgkJCW15ICRtZW1iZXIgPSBTaWVzdGE6Ok1lbWJlci0+ZmluZF9v cl9jcmVhdGUoeyBlbWFpbCA9PiAkbWVtYmVyX2lkIH0pDQoJCQkgIG9yIGRp ZSAiYWRkLW1lbWJlcjogQ291bGRuJ3QgY3JlYXRlIGEgbWVtYmVyICckbWVt YmVyX2lkJ1xuIjsNCg0KCQkJcHJpbnQgIk1lbWJlciAkbWVtYmVyX2lkIGFk ZGVkXG4iOw0KCQl9DQoJfQ0KCX07DQoNCgkkQ09NTUFORFN7J2Rlc2NyaWJl LW1lbWJlcid9ID0gew0KCXJlcXVpcmVkID0+IFtxdy8gbWVtYmVyPXMgL10s DQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87DQoNCgkJbXkg JG1lbWJlciA9IFNpZXN0YTo6TWVtYmVyLT5sb2FkKCRvcHRze21lbWJlcn0p IA0KCQkgIG9yIGRpZSAiZGVzY3JpYmUtbWVtYmVyOiAkb3B0c3ttZW1iZXJ9 IGlzIG5vdCBhIHZhbGlkIG1lbWJlciBpZFxuIjsNCg0KCQlmb3JlYWNoIG15 ICRrZXkgKCRtZW1iZXItPmNvbHVtbnMpIHsNCgkJCW15ICR2YWx1ZSA9ICRt ZW1iZXItPiRrZXkoKSB8fCAnJzsNCgkJCXByaW50ICIka2V5ID0gJHZhbHVl XG4iOw0KCQl9DQoNCgkJcHJpbnQgIlN1YnNjcmliZWQgdG8gOiAiLCAoam9p biAiLCAiLCBtYXAgeyAkXy0+bmFtZSB9ICRtZW1iZXItPmxpc3RzKSwgIlxu IjsNCgl9DQoJfTsNCg0KCSRDT01NQU5EU3snbW9kaWZ5LW1lbWJlcid9ID0g ew0KCXJlcXVpcmVkID0+IFtxdy8gbWVtYmVyPXMgcHJvcGVydHk9cyUgL10s DQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87DQoNCgkJbXkg JG1lbWJlciA9IFNpZXN0YTo6TWVtYmVyLT5sb2FkKCAkb3B0c3ttZW1iZXJ9 ICkNCgkJICBvciBkaWUgIm1vZGlmeS1tZW1iZXI6IE5vdCBhIHZhbGlkIG1l bWJlciBpZFxuIjsNCg0KCQl3aGlsZSAobXkgKCRrZXksICR2YWx1ZSkgPSBl YWNoICV7JG9wdHN7cHJvcGVydHl9fSkgew0KCQkJbXkgJWZpZWxkcyA9IG1h cCB7ICRfID0+IDEgfSAkbWVtYmVyLT5jb2x1bW5zOw0KCQkJZGllICJtb2Rp ZnktbWVtYmVyOiAnJGtleScgaXMgbm90IGEgdmFsaWQgcHJvcGVydHkgLSB2 YWxpZCBwcm9wZXJ0aWVzIGFyZVxuIiwNCgkJCQkoam9pbiAiXG4iLCRtZW1i ZXItPmNvbHVtbnMpLCJcbiIgdW5sZXNzICRmaWVsZHN7JGtleX07DQoNCgkJ CSRtZW1iZXItPiRrZXkoJHZhbHVlKTsNCgkJCXByaW50ICJQcm9wZXJ0eSAn JGtleScgc2V0IHRvICckdmFsdWUnIGZvciB0aGUgbWVtYmVyICRvcHRze21l bWJlcn1cbiI7DQoJCX0NCgl9DQoJfTsNCg0KCSRDT01NQU5EU3snZGVsZXRl LW1lbWJlcid9ID0gew0KCXJlcXVpcmVkID0+IFtxdy8gbWVtYmVyPXNAIC9d LA0KCWFjdGlvbiA9PiBzdWIgew0KCQlteSAlb3B0cyA9IEBfOw0KDQoJCWZv cmVhY2ggbXkgJG1lbWJlcl9pZCAoQHskb3B0c3ttZW1iZXJ9fSkgew0KCQkJ bXkgJG1lbWJlciA9IFNpZXN0YTo6TWVtYmVyLT5sb2FkKCRtZW1iZXJfaWQp DQoJCQkgIG9yIGRpZSAiZGVsZXRlLW1lbWJlcjogJG1lbWJlcl9pZCBpcyBu b3QgYSB2YWxpZCBtZW1iZXIgaWRcbiI7DQoJCQkNCgkJCWZvcmVhY2ggbXkg JGxpc3QgKCBTaWVzdGE6Okxpc3QtPnJldHJpZXZlX2FsbCApIHsNCgkJCQkk bGlzdC0+cmVtb3ZlX21lbWJlcigkbWVtYmVyKTsNCgkJCX0NCg0KCQkJJG1l bWJlci0+ZGVsZXRlOw0KDQoJCQlwcmludCAiTWVtYmVyICckbWVtYmVyX2lk JyBkZWxldGVkXG4iOw0KCQl9DQoJfQ0KCX07DQoNCgkjIyMjIw0KCSMNCgkj IFBsdWdpbiBzdHVmZg0KCSMNCgkjIyMjIw0KDQoNCgkkQ09NTUFORFN7J3No b3ctcGx1Z2lucyd9ID0gew0KCW9wdGlvbmFsID0+IFtxdy8gbGlzdD1zQCAv XSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMgPSBAXzsNCg0KCQlp ZiAoIWRlZmluZWQgJG9wdHN7bGlzdH0pIHsNCgkJCXByaW50ICJUaGlzIHN5 c3RlbSBjdXJyZW50bHkgaGFzIHRoZXNlIHBsdWdpbnMgaW5zdGFsbGVkOiBc blxuIjsNCgkJCWZvcmVhY2ggbXkgJG5hbWUgKCBTaWVzdGEtPmF2YWlsYWJs ZV9wbHVnaW5zICkgew0KCQkJCW15ICRwID0gIlNpZXN0YTo6UGx1Z2luOjok bmFtZSI7DQoJCQkJJHAtPnJlcXVpcmU7DQoJCQkJcHJpbnRmICIlc1xuIC1c biAlc1xuXG4iLCAkbmFtZSwgJHAtPmRlc2NyaXB0aW9uOw0KCQkJfQ0KCQl9 IGVsc2Ugew0KCQkJZm9yIChAeyRvcHRze2xpc3R9fSkgew0KCQkJCW15ICRs aXN0ID0gU2llc3RhOjpMaXN0LT5sb2FkKCRfKQ0KCQkJCSAgb3IgZGllICJz aG93LXBsdWdpbnM6IE5vIGxpc3QgJyRfJyFcbiI7DQoJCQkJcHJpbnQgIlBs dWdpbnMgZm9yICRfOlxuIjsNCgkJCQlmb3JlYWNoIG15ICRwbHVnaW4gKCRs aXN0LT5wbHVnaW5zKCdwb3N0JykpIHsNCgkJCQkJcHJpbnQgJHBsdWdpbi0+ bmFtZSwgIlxuIjsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoJfTsNCg0KCSRD T01NQU5EU3snZGVzY3JpYmUtcGx1Z2luJ30gPSB7DQoJcmVxdWlyZWQgPT4g W3F3LyBwbHVnaW49cyAvXSwNCglvcHRpb25hbCA9PiBbcXcvIGxpc3Q9cyBt ZW1iZXI9cyAvXSwNCglkZXBlbmRlbmNpZXMgPT4geyBtZW1iZXIgPT4gJ2xp c3QnIH0sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87DQoN CgkJaWYgKGRlZmluZWQgJG9wdHN7bGlzdH0pIHsNCgkJCV9wbHVnaW5fbGlz dF9vcHRpb25zKCVvcHRzKTsNCgkJfSBlbHNlIHsNCgkJCV9wbHVnaW5fb3B0 aW9ucygkb3B0c3twbHVnaW59KTsNCgkJfQ0KCX0NCgl9Ow0KDQoJJENPTU1B TkRTeydtb2RpZnktcGx1Z2luJ30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3LyBw bHVnaW49cyBsaXN0PXMgL10sDQoJb3B0aW9uYWwgPT4gW3F3LyBtZW1iZXI9 cyBwcmVmZXJlbmNlPXMlIC9dLA0KCWFjdGlvbiA9PiBzdWIgew0KCQlteSAl b3B0cyA9IEBfOw0KDQoJCW15ICRsaXN0ID0gU2llc3RhOjpMaXN0LT5sb2Fk KCRvcHRze2xpc3R9KQ0KCQkgIG9yIGRpZSAibW9kaWZ5LXBsdWdpbjogTm90 IGEgdmFsaWQgbGlzdCAkb3B0c3tsaXN0fVxuIjsNCg0KCQlteSAlcGx1Z2lu cyA9IG1hcCB7ICRfLT5uYW1lID0+ICRfIH0gJGxpc3QtPnBsdWdpbnM7DQoJ CW15ICRwbHVnaW4gID0gJHBsdWdpbnN7JG9wdHN7cGx1Z2lufX0NCgkJICBv ciBkaWUgIm1vZGlmeS1wbHVnaW46IE5vdCBhIHZhbGlkIHBsdWdpbiAkb3B0 c3twbHVnaW59XG4iOw0KDQoJCW15ICRtZW1iZXI7DQoJCWlmIChkZWZpbmVk ICRvcHRze21lbWJlcn0pIHsNCgkJCSRtZW1iZXIgPSBTaWVzdGE6Ok1lbWJl ci0+bG9hZCgkb3B0c3ttZW1iZXJ9KQ0KCQkJICBvciBkaWUgIm1vZGlmeS1w bHVnaW46IE5vIHN1Y2ggbWVtYmVyICRvcHRze21lbWJlcn1cbiI7DQoNCgkJ CWRpZSAibW9kaWZ5LXBsdWdpbjogJG9wdHN7bWVtYmVyfSBpcyBub3Qgc3Vi c2NyaWJlZCB0byAkb3B0c3tsaXN0fVxuIg0KCQkJICB1bmxlc3MgJGxpc3Qt PmlzX21lbWJlcigkbWVtYmVyKTsNCg0KCQkJJHBsdWdpbi0+bWVtYmVyKCRt ZW1iZXIpOw0KCQl9DQoNCgkJd2hpbGUgKG15ICgka2V5LCAkdmFsdWUpID0g ZWFjaCAleyRvcHRze3ByZWZlcmVuY2V9fSkgew0KCQkJJHBsdWdpbi0+cHJl Zigka2V5LCAkdmFsdWUpOw0KCQl9DQoNCgkJbXkgJG9wdGlvbnMgPSAkcGx1 Z2luLT5vcHRpb25zOw0KDQoJCWlmIChkZWZpbmVkICRtZW1iZXIpIHsNCgkJ CXByaW50ZiAiUGVyc29uYWwgcHJlZmVyZW5jZXMgZm9yIG1lbWJlciAlcyBv biBsaXN0ICVzXG4iLA0KCQkJICAkb3B0c3ttZW1iZXJ9LCAkb3B0c3tsaXN0 fTsNCgkJfSBlbHNlIHsNCgkJCXByaW50ZiAiUHJlZmVyZW5jZXMgZm9yIGxp c3QgJXNcbiIsICRvcHRze2xpc3R9Ow0KCQl9DQoNCgkJZm9yZWFjaCBteSAk b3B0aW9uICgga2V5cyAleyRvcHRpb25zfSApIHsNCgkJCXByaW50ICIgLSAi LCAkb3B0aW9uLCAiIDogIiwgJHBsdWdpbi0+cHJlZigkb3B0aW9uKSwgIlxu IjsNCgkJfQ0KCX0NCgl9Ow0KDQoJYXJndkZpbGU7DQp9DQoNCnN1YiBfcGx1 Z2luX29wdGlvbnMgew0KCW15ICRwbHVnaW5faWQgPSBzaGlmdDsNCg0KICAg IG15ICVwbHVnaW5zID0gbWFwIHsgJF8gPT4gMSB9IFNpZXN0YS0+YXZhaWxh YmxlX3BsdWdpbnM7DQoNCiAgICBkaWUgImRlc2NyaWJlLXBsdWdpbjogTm90 IGEgdmFsaWQgcGx1Z2luXG4iIHVubGVzcyAkcGx1Z2luc3skcGx1Z2luX2lk fTsNCg0KICAgIG15ICRjbGFzcyA9ICJTaWVzdGE6OlBsdWdpbjo6JHBsdWdp bl9pZCI7DQogICAgJGNsYXNzLT5yZXF1aXJlOw0KDQogICAgbXkgJG9wdGlv bnMgPSAkY2xhc3MtPm9wdGlvbnM7DQoNCiAgICBwcmludCAiXG5cblRoZSBw bHVnaW4gJHBsdWdpbl9pZCBoYXMgdGhlIGZvbGxvd2luZyBvcHRpb25zIDpc biI7DQogICAgZm9yZWFjaCBteSAkb3B0aW9uICgga2V5cyAleyRvcHRpb25z fSApIHsNCiAgICAgICAgcHJpbnQgIiAtICIsICRvcHRpb24sICIgOiAiLCAk b3B0aW9ucy0+eyRvcHRpb259LT57ZGVzY3JpcHRpb259LCAiXG4iOw0KICAg IH0NCiAgICBwcmludCAiXG4iOw0KfQ0KDQpzdWIgX3BsdWdpbl9saXN0X29w dGlvbnMgew0KCW15ICVvcHRzID0gQF87DQoNCiAgICBteSAkbGlzdCA9IFNp ZXN0YTo6TGlzdC0+bG9hZCgkb3B0c3tsaXN0fSkNCiAgICAgIG9yIGRpZSAi ZGVzY3JpYmUtcGx1Z2luOiBOb3QgYSB2YWxpZCBsaXN0ICRvcHRze2xpc3R9 XG4iOw0KDQogICAgbXkgJXBsdWdpbnMgPSBtYXAgeyAkXy0+bmFtZSA9PiAk XyB9ICRsaXN0LT5wbHVnaW5zOw0KICAgIG15ICRwbHVnaW4gID0gJHBsdWdp bnN7JG9wdHN7cGx1Z2lufX0NCiAgICAgIG9yIGRpZSAiZGVzY3JpYmUtcGx1 Z2luOiBUaGF0IHBsdWdpbiBpcyBub3QgdXNlZCBpbiB0aGUgbGlzdCAnJG9w dHN7bGlzdH0nXG4iOw0KDQoNCiAgICBteSAkbWVtYmVyOw0KICAgIGlmIChk ZWZpbmVkICRvcHRze21lbWJlcn0pIHsNCiAgICAgICAgJG1lbWJlciA9IFNp ZXN0YTo6TWVtYmVyLT5sb2FkKCRvcHRze21lbWJlcn0pDQogICAgICAgICAg b3IgZGllICJkZXNjcmliZS1wbHVnaW46IE5vdCBhIHZhbGlkIG1lbWJlciBp ZFxuIjsNCg0KICAgICAgICBkaWUgImRlc2NyaWJlLXBsdWdpbjogJG9wdHN7 bWVtYmVyfSBpcyBub3Qgc3Vic2NyaWJlZCB0byAkb3B0c3tsaXN0fVxuIg0K ICAgICAgICAgIHVubGVzcyAkbGlzdC0+aXNfbWVtYmVyKCRtZW1iZXIpOw0K DQogICAgICAgICRwbHVnaW4tPm1lbWJlcigkbWVtYmVyKTsNCiAgICB9DQoN CiAgICBteSAkb3B0aW9ucyA9ICRwbHVnaW4tPm9wdGlvbnM7DQoNCiAgICBp ZiAoZGVmaW5lZCAkbWVtYmVyKSB7DQogICAgICAgIHByaW50ZiAiUGVyc29u YWwgcHJlZmVyZW5jZXMgZm9yIG1lbWJlciAlcyBvbiBsaXN0ICVzXG4iLCAk b3B0c3ttZW1iZXJ9LCAkb3B0c3tsaXN0fTsNCiAgICB9DQogICAgZWxzZSB7 DQogICAgICAgIHByaW50ZiAiUHJlZmVyZW5jZXMgZm9yIGxpc3QgJXNcbiIs ICRvcHRze2xpc3R9Ow0KICAgIH0NCg0KICAgIGZvcmVhY2ggbXkgJG9wdGlv biAoIGtleXMgJXskb3B0aW9uc30gKSB7DQogICAgICAgIHByaW50ICIgLSAi LCAkb3B0aW9uLCAiIDogIiwgJHBsdWdpbi0+cHJlZigkb3B0aW9uKSwgIlxu IjsNCiAgICB9DQogICAgICAgIHByaW50ICRwbHVnaW4tPm5hbWUsIiBpcyBz ZXQgcGVyc29uYWxcbiIgaWYgJHBsdWdpbi0+cGVyc29uYWwoKTsNCn0NCg0K IyMjIyMNCiMNCiMgRGlzcGF0Y2ggc3R1ZmYNCiMNCiMjIyMjDQoNCg0KdXNl IEdldG9wdDo6QXV0byAoDQoJbWFwIHsgbXkgJG5hbWUgPSAkXzsgWyAkbmFt ZSwgJycsIHN1YiB7IHJ1bigkbmFtZSkgfSBdIH0gDQoJCWtleXMgJUNPTU1B TkRTDQopOw0KDQpCRUdJTnsNCglubyB3YXJuaW5nczsNCgkqR2V0b3B0OjpB dXRvOjpoZWxwbWUgPSBcJmhlbHBtZTsNCgkqR2V0b3B0OjpBdXRvOjp1bnJl Y29nbml6ZWQgPSBcJnVucmVjb2duaXplZDsNCn0NCg0KdXNlIFNpZXN0YTo6 Q29uZmlnOw0KQkVHSU57DQoJbXkgJGRhdGFiYXNlOw0KCW15ICRjb25maWc7 DQoNCglHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZSAoInBhc3NfdGhyb3VnaCIp Ow0KCUdldE9wdGlvbnMoJ2RhdGFiYXNlPXMnID0+IFwkZGF0YWJhc2UsDQog ICAgICAgICAgICAgICAnY29uZmlnLWZpbGV8Zj1zJyA9PiBcJGNvbmZpZyk7 DQoNCglAU2llc3RhOjpDb25maWc6OlNUT1JBR0UgPSBzcGxpdCAvIC8sICRk YXRhYmFzZSBpZiBkZWZpbmVkICRkYXRhYmFzZTsNCgkkU2llc3RhOjpDb25m aWc6OkNPTkZJR19GSUxFID0gJGNvbmZpZyBpZiBkZWZpbmVkICRjb25maWc7 DQp9DQoNCnN1YiBydW4gew0KCW15ICRjb21tYW5kID0gc2hpZnQ7DQoJDQoJ aWYgKCRjb21tYW5kIG5lICJjcmVhdGUtZGF0YWJhc2UiKSB7DQoJCWV2YWwg ew0KCQkJcmVxdWlyZSBTaWVzdGE7DQoJCQlyZXF1aXJlIFNpZXN0YTo6TGlz dDsNCgkJfTsNCgkJaWYgKCRAKSB7DQoJCQlwcmludCAiRXJyb3IgaW5pdGlh bGl6aW5nIFNpZXN0YTpcbiRAXG4iOw0KCQkJcHJpbnQgIlxuXG5UcnkgJ25h Y2hvIGNyZWF0ZS1kYXRhYmFzZScgaWYgeW91IGFyZSBpbnN0YWxsaW5nIHNp ZXN0YSBmb3IgdGhlIGZpcnN0IHRpbWVcbiI7DQoJCQlleGl0Ow0KCQl9DQoJ fQ0KDQoJbXkgJWggPSAoKTsNCglteSBAb3B0aW9ucyA9IGdyZXAgeyBkZWZp bmVkIH0gKA0KCQlAeyRDT01NQU5EU3skY29tbWFuZH17cmVxdWlyZWR9fSwg DQoJCUB7JENPTU1BTkRTeyRjb21tYW5kfXtvcHRpb25hbH19DQoJKTsNCgkN CglHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZSAoIm5vX3Bhc3NfdGhyb3VnaCIs ICJyZXF1aXJlX29yZGVyIik7DQoJR2V0T3B0aW9ucyhcJWgsIEBvcHRpb25z KSBvciBleGl0KDIpOw0KDQoJbXkgQG1pc3Npbmc7DQoJZm9yIG15ICRyZXF1 aXJlZCAoQHskQ09NTUFORFN7JGNvbW1hbmR9e3JlcXVpcmVkfX0pIHsNCgkJ bXkgJHJlcXVpcmVkMiA9ICRyZXF1aXJlZDsNCgkJJHJlcXVpcmVkMiA9fiBz L1teYS16QS1aXS4qLy87DQoJCXB1c2ggQG1pc3NpbmcsICRyZXF1aXJlZDIg aWYgIWRlZmluZWQgJGh7JHJlcXVpcmVkMn07DQoJfQ0KCXdoaWxlIChteSAo JGtleSwgJHZhbHVlKSA9IGVhY2ggJXskQ09NTUFORFN7JGNvbW1hbmR9e2Rl cGVuZGVuY2llc319ICkgew0KCQlwdXNoIEBtaXNzaW5nLCAkdmFsdWUgaWYg ZGVmaW5lZCAkaHska2V5fSBhbmQgIWRlZmluZWQgJGh7JHZhbHVlfTsNCgl9 DQoJaWYgKHNjYWxhciBAbWlzc2luZykgew0KCQlsb2NhbCAkIiA9ICIsICI7 DQoJCXByaW50ICJUaGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gdGhlIGNvbW1h bmQgJGNvbW1hbmQgYXJlIG1pc3Npbmc6XG4iOw0KCQlwcmludCAiICAgICIg LiAiQG1pc3NpbmdcbiI7DQoJCWV4aXQoMik7DQoJfQ0KCQ0KCWV2YWwgeyAk Q09NTUFORFN7JGNvbW1hbmR9e2FjdGlvbn0tPiglaCk7IH07DQoJaWYgKCRA KSB7DQoJCXByaW50ICRAOw0KCQlyZXR1cm4gMDsNCgl9DQoNCglpZiAoc2Nh bGFyIEBBUkdWICE9IDApIHsNCgkJcHJpbnQgIiMjIyMjIyMjIyMjIyMjIyMj XG4iOw0KCQlwcmludCAiIyMgZW5kIG9mIGNvbW1hbmRcbiI7DQoJCXByaW50 ICIjIyMjIyMjIyMjIyMjIyMjI1xuIjsNCgkNCgkJcmV0dXJuIDE7DQoJfSBl bHNlIHsNCgkJcmV0dXJuIDA7DQoJfQ0KfQ0KDQpzdWIgdW5yZWNvZ25pemVk IHsNCiAgICBteSAkY29tbWFuZCA9IHNoaWZ0Ow0KDQogICAgcHJpbnQgU1RE RVJSICJVbnJlY29nbmlzZWQgY29tbWFuZCAkY29tbWFuZFxuIjsNCiAgICBo ZWxwbWUoMCk7DQp9DQoNCiMjIyMjDQojDQojIEhlbHAgc3R1ZmYNCiMNCiMj IyMjDQoNCg0Kc3ViIGhlbHBtZSB7DQoJbXkgJHZlcmJvc2l0eSA9IHNoaWZ0 Ow0KCQ0KCSR2ZXJib3NpdHkgPSAxIGlmICFkZWZpbmVkICR2ZXJib3NpdHk7 DQoNCglwb2QydXNhZ2UoLXZlcmJvc2UgPT4gJHZlcmJvc2l0eSk7DQp9DQoN CnN1YiBkZWZhdWx0IHsNCgloZWxwbWUoMCk7DQp9DQoNCj1oZWFkMSBTRUUg QUxTTw0KDQpMPFNpZXN0YT4sIEw8U2llc3RhOjpVc2VyR3VpZGU+DQoNCj1o ZWFkMSBBVVRIT1INCg0KV3JpdHRlbiBieSBTaW1vbiBXaXN0b24gPHNpbW9u QHRoZWdlc3RhbHQub3JnPg0KDQpOZXcgZGlzcGF0Y2ggY29kZSB3cml0dGVu IGJ5IEpvZHkgQmVsa2EgPGJlbGtham0tY3BhbkBhYXJkdmFyay1zcy5jb20+ DQoNCj1oZWFkMSBDT1BZUklHSFQNCg0KKEMpb3B5cmlnaHQgMjAwMiB0aGUg U2llc3RhIGRldiB0ZWFtLg0KDQpEaXN0cmlidXRlZCB1bmRlciB0aGUgc2Ft ZSB0ZXJtcyBhcyBQZXJsIGl0c2VsZi4NCg0KPWN1dA0KDQo= ---1463760359-894031124-1059781923=:5155 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=nacho Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.44.0308020052031.5155@xxxx.xxxx.xxxxxxxxxxx.xxx> Content-Description: nacho-ex proxy Content-Disposition: attachment; filename=nacho IyEvdXNyL2Jpbi9wZXJsIC13DQojICRJZCQNCnVzZSBzdHJpY3Q7DQp1c2Ug RmlsZTo6UGF0aCBxdyhta3BhdGgpOw0KdXNlIEZpbGU6OkJhc2VuYW1lOw0K dXNlIERhdGE6OkR1bXBlcjsNCnVzZSBTdHJpbmc6OlNoZWxsUXVvdGU7DQp1 c2UgVU5JVkVSU0FMOjpyZXF1aXJlOw0KdXNlIFBvZDo6VXNhZ2U7DQp1c2Ug R2V0b3B0OjpBcmd2RmlsZSBxdyhhcmd2RmlsZSk7DQp1c2UgR2V0b3B0OjpM b25nOw0KdXNlIEZpbmRCaW47DQoNCnVzZSB2YXJzIHF3LyAkVkVSU0lPTiAl Q09NTUFORFMgLzsNCiRWRVJTSU9OID0gIjEuMSI7DQoNCiMjIFRPRE8NCiMg c2V0dGluZyBwZXJzb25hbCBwbHVnaW5zDQoNCg0KPWhlYWQxIE5BTUUNCg0K bmFjaG8gLSB0aGUgc2llc3RhIGNvbW1hbmQgbGluZSBjb25maWd1cmF0aW9u IHRvb2wNCg0KPWhlYWQxIFNZTk9QU0lTDQoNCm5hY2hvIFtjb21tYW5kIFtv cHRpb25zXS4uLl0NCg0KIEdlbmVyaWMgT3B0aW9uczoNCiAgIC1kLCAtLWRh dGFiYXNlPURCSV9VUkkgIFwgdGhlc2UgdHdvIG9wdGlvbnMgYWxsb3cgeW91 IHRvIG92ZXJyaWRlDQogICAtZiwgLS1jb25maWctZmlsZT1GSUxFICAvIHRo ZSB2YWx1ZXMgZGVmaW5lZCBpbiBTaWVzdGE6OkNvbmZpZw0KDQogICAtaCwg LS1oZWxwICAgICAgICAgICBoZWxwIHRleHQgZGV0YWlsaW5nIHRoZSBjb21t YW5kcyBhbmQgdGhlaXIgb3B0aW9ucw0KICAgLVYsIC0tdmVyc2lvbiAgICAg ICAgcHJpbnRzIHRoZSB2ZXJzaW9uIG51bWJlcg0KDQoNCiBNaXNjIENvbW1h bmRzOiAgIGNyZWF0ZS1kYXRhYmFzZSAgcnVuLW1hcmlhY2hlICAgICAgY3Jl YXRlLWJhY2t1cA0KIExpc3QgQ29tbWFuZHM6ICAgc2hvdy1saXN0cyAgICAg ICBzaG93LWFsaWFzICAgICAgICBkZXNjcmliZS1saXN0DQogICAgICAgICAg ICAgICAgICBjcmVhdGUtbGlzdCAgICAgIG1vZGlmeS1saXN0ICAgICAgIGRl bGV0ZS1saXN0ICAgIA0KICAgICAgICAgICAgICAgICAgc2V0LXBsdWdpbnMg ICAgICBhZGQtbWVtYmVyICAgICAgICByZW1vdmUtbWVtYmVyDQogTWVtYmVy IENvbW1hbmRzOiBzaG93LW1lbWJlcnMgICAgIGRlc2NyaWJlLW1lbWJlciAg IGNyZWF0ZS1tZW1iZXINCiAgICAgICAgICAgICAgICAgIG1vZGlmeS1tZW1i ZXIgICAgZGVsZXRlLW1lbWJlcg0KIFBsdWdpbiBDb21tYW5kczogc2hvdy1w bHVnaW5zICAgICBkZXNjcmliZS1wbHVnaW5zICBtb2RpZnktcGx1Z2luDQoN CiBPcHRpb25zIGFuZCBjb21tYW5kcyBtYXkgYmUgcmVhZCBmcm9tIGEgZmls ZSBieSBnaXZpbmcgdGhlIG5hbWUgb2YgdGhlDQogZmlsZSBwcmVmaXhlZCBi eSBhIEAuIFRoZSBkYXRhYmFzZSBhbmQgY29uZmlnLWZpbGUgb3B0aW9ucyBh ZmZlY3QgYWxsDQogb2YgdGhlIHN1cHBsaWVkIGNvbW1hbmRzLiBpZiBlaXRo ZXIgb2YgdGhlbSBpcyBzdXBwbGllZCBtb3JlIHRoYW4gb25jZSwNCiB0aGUg bGFzdCBvbmUgd2lsbCB0YWtlIHByaW9yaXR5Lg0KDQo9aGVhZDEgT1BUSU9O Uw0KIA0KIE5PVEU6IEFsbCBjb21tYW5kIG9wdGlvbnMgYXJlIG1hbmRhdG9y eSB1bmxlc3Mgb3RoZXJ3aXNlIHN0YXRlZA0KDQogTWlzYyBDb21tYW5kczoN CiAgIGNyZWF0ZS1kYXRhYmFzZQ0KICAgICAgaW5pdGlhbGlzZXMgYSBuZXcg ZGF0YWJhc2UNCg0KICAgcnVuLW1hcmlhY2hpDQogICAgICBpbnZva2UgbWFy aWFjaGkgdG8gbWFrZSB3ZWJpZmllZCBhcmNoaXZlcw0KICAgICAgZGVwZW5k cyBvbiB0aGUgQXJjaGl2ZSBwbHVnaW4NCg0KICAgY3JlYXRlLWJhY2t1cCBb IDxsaXN0X2lkPiBdDQogICAgICBwcmludHMgb3V0IGEgc2hlbGwgc2NyaXB0 IHRoYXQgd2lsbCByZXN0b3JlIHlvdXIgc3lzdGVtIHdoZW4gcnVuDQogICAg ICBpZiBhIGxpc3RfaWQgaXMgc3VwcGxpZWQgd2lsbCBsaW1pdCB0aGUgYmFj a3VwIHNjcmlwdCB0byB0aGF0IGxpc3QNCg0KICBMaXN0IENvbW1hbmRzOg0K ICAgc2hvdy1saXN0cw0KICAgICAgc2hvd3MgYWxsIHRoZSBsaXN0cyB0aGF0 IGFyZSBpbiB0aGUgc3lzdGVtDQoNCiAgIGNyZWF0ZS1saXN0IDxsaXN0X25h bWU+IDxsaXN0X293bmVyPiA8cG9zdF9hZGRyZXNzPiA8cmV0dXJuX3BhdGg+ DQogICAgICBjcmVhdGVzIGEgbmV3IGxpc3QNCg0KICAgc2hvdy1hbGlhcyA8 bGlzdF9pZD4NCiAgICAgIHByaW50cyBvdXQgYW4gYWxpYXMgZmlsZSBlbnRy eSBmb3IgYSBsaXN0DQoNCiAgIGRlc2NyaWJlLWxpc3QgPGxpc3RfaWQ+DQog ICAgICBzaG93cyBhbGwgdGhlIHByb3BlcnRpZXMgb2YgYSBsaXN0IGFuZCB0 aGVpciB2YWx1ZXMNCg0KICAgbW9kaWZ5LWxpc3QgPGxpc3RfaWQ+IDxrZXk+ IDx2YWx1ZT4NCiAgICAgIGNoYW5nZSBhIHByb3BlcnR5IG9mIGEgbGlzdA0K ICAgICAgDQogICAgICB5b3UgY2FuIGVmZmVjdGl2ZWx5IGNvcHkgdGhlIGNv bmZpZ3VyYXRpb24gb2YgYSBsaXN0IGJ5IG1vZGlmaXlpbmcNCiAgICAgIHRo ZSAnaWQnIHByb3BlcnR5IC0gYSBuZXcgbGlzdCB3aXRoIHRoZSBuZXcgaWQg d2lsbCBiZSBjcmVhdGVkIGZvciB5b3UuDQoNCiAgIGRlbGV0ZS1saXN0IDxs aXN0X2lkPg0KICAgICAgcmVtb3ZlIGEgbGlzdHMgZnJvbSB0aGUgc3lzdGVt DQoNCiAgIHNldC1wbHVnaW5zIDxsaXN0X2lkPiA8cXVldWU+IFsgPHBsdWdp bj4gWyA8cGx1Z2luPi4uLiBdIF0NCiAgICAgIHNldHMgdGhlIHBsdWdpbnMg b2YgYSBsaXN0LiANCiAgICAgIGFueSBleGlzdGluZyBwbHVnaW5zIG5vdCBz cGVjaWZpZWQgd2lsbCBiZSByZW1vdmVkDQogICAgIA0KICAgYWRkLW1lbWJl ciA8bGlzdF9pZD4gPG1lbWJlcj4gWyA8bWVtYmVyPi4uLiBdDQogICAgICBh ZGRzIG9uZSBvciBtb3JlIG1lbWJlcnMgdG8gYSBsaXN0LiANCiAgICAgIHdp bGwgY3JlYXRlIG5ldyBtZW1iZXJzIGlmIG5lY2Vzc2FyeQ0KDQogICByZW1v dmUtbWVtYmVyIDxsaXN0X2lkPiA8bWVtYmVyPiBbIDxtZW1iZXI+Li4uIF0N CiAgICAgIHJlbW92ZXMgb25lIG9yIG1vcmUgbWVtYmVycyBmcm9tIGEgbGlz dA0KDQogICANCiBNZW1iZXIgQ29tbWFuZHM6DQogICBzaG93LW1lbWJlcnMg PGxpc3RfaWQ+IFsgPGxpc3RfaWQ+Li4uIF0NCiAgICAgIHNob3dzIHRoZSBt ZW1iZXJzIGluIHRoZSBzeXN0ZW0sIG9yIG9uZSBvciBtb3JlIGxpc3RzDQoN CiAgIGNyZWF0ZS1tZW1iZXIgPG1lbWJlcl9lbWFpbD4NCiAgICAgIGFkZHMg YSBuZXcgbWVtYmVyIHRvIHRoZSBzeXN0ZW0NCg0KICAgZGVzY3JpYmUtbWVt YmVyIDxtZW1iZXJfaWQ+DQogICAgICBzaG93cyBhbGwgdGhlIHByb3BlcnRp ZXMgb2YgYSBtZW1iZXIgYW5kIHRoZWlyIHZhbHVlcw0KDQogICBtb2RpZnkt bWVtYmVyIDxtZW1iZXJfaWQ+IDxrZXk+IDx2YWx1ZT4NCiAgICAgIGNoYW5n ZSBhIHByb3BlcnR5IG9mIGEgbWVtYmVyDQoNCiAgICAgIHlvdSBjYW4gZWZm ZWN0aXZlbHkgY29weSB0aGUgY29uZmlndXJhdGlvbiBvZiBhIG1lbWJlciBi eSBtb2RpZml5aW5nDQogICAgICB0aGUgJ2lkJyBwcm9wZXJ0eSAtIGEgbmV3 IG1lbWJlciB3aXRoIHRoZSBuZXcgaWQgd2lsbCBiZSBjcmVhdGVkIGZvciB5 b3UuDQoNCiAgIGRlbGV0ZS1tZW1iZXIgPG1lbWJlcl9pZD4NCiAgICAgIHJl bW92ZXMgb25lIG9yIG1vcmUgbWVtYmVycyBmcm9tIHRoZSBzeXN0ZW0NCg0K IFBsdWdpbiBDb21tYW5kczoNCiAgIHNob3ctcGx1Z2lucyA8bGlzdF9pZD4g WyA8bGlzdF9pZD4uLi4gXQ0KICAgICAgZGlzcGxheSBhIGxpc3Qgb2YgcGx1 Z2lucyAob24gdGhlIHN5c3RlbSwgb3Igc2V0IG9uIGxpc3RzKSAgDQoNCiAg IGRlc2NyaWJlLXBsdWdpbiA8cGx1Z2luPiBbIDxsaXN0X2lkPiBbIDxtZW1i ZXJfaWQ+IF0gXQ0KICAgICAgc2hvd3MgYWxsIHRoZSBvcHRpb25zIGZvciBh IHBhcnRpY3VsYXIgcGx1Z2luDQoNCiAgIG1vZGlmeS1wbHVnaW4gPHBsdWdp bj4gPGxpc3RfaWQ+IDxrZXk+IDx2YWx1ZT4gWyA8bWVtYmVyX2lkPiBdDQog ICAgICBzZXRzIGEgcGx1Z2luIHByZWZlcmVuY2UgZm9yIGEgbGlzdCAob3Ig bWVtYmVyIG9mIGEgbGlzdCkNCg0KPWN1dA0KDQpCRUdJTnsNCg0KCSMjIyMj DQoJIw0KCSMgTWlzYyBzdHVmZg0KCSMNCgkjIyMjIw0KDQoJJENPTU1BTkRT eydjcmVhdGUtZGF0YWJhc2UnfSA9IHt9Ow0KDQoJJENPTU1BTkRTeydydW4t bWFyaWFjaGknfSA9IHt9Ow0KDQoJJENPTU1BTkRTeydjcmVhdGUtYmFja3Vw J30gPSB7DQoJCXBhcmFtcyA9PiBbcXcvIGxpc3QgL10sDQoJfTsgDQoNCgkj IyMjIw0KCSMNCgkjIExpc3Qgc3R1ZmYNCgkjDQoJIyMjIyMNCg0KDQoJJENP TU1BTkRTeydzaG93LWxpc3RzJ30gPSB7fTsNCgkNCgkkQ09NTUFORFN7J2Ny ZWF0ZS1saXN0J30gPSB7DQoJCXBhcmFtcyA9PiBbcXcvIGxpc3Qgb3duZXIg cG9zdCBib3VuY2UgL10NCgl9OwkNCg0KCSRDT01NQU5EU3snc2hvdy1hbGlh cyd9ID0gew0KCQlwYXJhbXMgPT4gW3F3LyBsaXN0IC9dDQoJfTsNCg0KCSRD T01NQU5EU3snZGVzY3JpYmUtbGlzdCd9ID0gew0KCQlwYXJhbXMgPT4gW3F3 LyBsaXN0IC9dDQoJfTsNCg0KCSRDT01NQU5EU3snbW9kaWZ5LWxpc3QnfSA9 IHsNCgkJcGFyYW1zID0+IFtxdy8gbGlzdCBwcm9wZXJ0eSA9IC9dDQoJfTsN Cg0KCSRDT01NQU5EU3snZGVsZXRlLWxpc3QnfSA9IHsNCgkJcGFyYW1zID0+ IFtxdy8gbGlzdCAvXQ0KCX07DQoNCgkkQ09NTUFORFN7J3NldC1wbHVnaW5z J30gPSB7DQoJCXBhcmFtcyA9PiBbcXcvIGxpc3QgcXVldWUgL10sDQoJCXJl cGVhdCA9PiAncGx1Z2luJw0KCX07DQoNCgkkQ09NTUFORFN7J2FkZC1tZW1i ZXInfSA9IHsNCgkJcGFyYW1zID0+IFtxdy8gbGlzdCBtZW1iZXIgL10sDQoJ CXJlcGVhdCA9PiAnbWVtYmVyJw0KCX07DQoNCgkkQ09NTUFORFN7J3JlbW92 ZS1tZW1iZXInfSA9IHsNCgkJcGFyYW1zID0+IFtxdy8gbGlzdCBtZW1iZXIg L10sDQoJCXJlcGVhdCA9PiAnbWVtYmVyJw0KCX07DQoNCgkjIyMjIw0KCSMN CgkjIE1lbWJlciBzdHVmZg0KCSMNCgkjIyMjIw0KDQoNCgkkQ09NTUFORFN7 J3Nob3ctbWVtYmVycyd9ID0gew0KCQlyZXBlYXQgPT4gJ2xpc3QnDQoJfTsN Cg0KCSRDT01NQU5EU3snY3JlYXRlLW1lbWJlcid9ID0gew0KCQlwYXJhbXMg PT4gW3F3LyBtZW1iZXIgL10NCgl9Ow0KDQoJJENPTU1BTkRTeydkZXNjcmli ZS1tZW1iZXInfSA9IHsNCgkJcGFyYW1zID0+IFtxdy8gbWVtYmVyIC9dDQoJ fTsNCg0KCSRDT01NQU5EU3snbW9kaWZ5LW1lbWJlcid9ID0gew0KCQlwYXJh bXMgPT4gW3F3LyBtZW1iZXIgcHJvcGVydHkgPSAvXQ0KCX07DQoNCgkkQ09N TUFORFN7J2RlbGV0ZS1tZW1iZXInfSA9IHsNCgkJcGFyYW1zID0+IFtxdy8g bWVtYmVyIC9dDQoJfTsNCg0KCSMjIyMjDQoJIw0KCSMgUGx1Z2luIHN0dWZm DQoJIw0KCSMjIyMjDQoNCg0KCSRDT01NQU5EU3snc2hvdy1wbHVnaW5zJ30g PSB7DQoJCXJlcGVhdCA9PiAnbGlzdCcNCgl9Ow0KDQoJJENPTU1BTkRTeydk ZXNjcmliZS1wbHVnaW4nfSA9IHsNCgkJcGFyYW1zID0+IFtxdy8gcGx1Z2lu IGxpc3QgbWVtYmVyIC9dDQoJfTsNCg0KCSRDT01NQU5EU3snbW9kaWZ5LXBs dWdpbid9ID0gew0KCQlwYXJhbXMgPT4gW3F3LyBwbHVnaW4gbGlzdCBwcmVm ZXJlbmNlID0gbWVtYmVyIC9dDQoJfTsNCg0KCWFyZ3ZGaWxlOw0KDQp9DQoN Cg0KIyMjIyMNCiMNCiMgRGlzcGF0Y2ggc3R1ZmYNCiMNCiMjIyMjDQoNCnVz ZSBHZXRvcHQ6OkF1dG8gKA0KCW1hcCB7IG15ICRuYW1lID0gJF87IFsgJG5h bWUsICcnLCBzdWIgeyBydW4oJG5hbWUpIH0gXSB9IA0KCQlrZXlzICVDT01N QU5EUw0KKTsNCg0KQkVHSU57DQoJbm8gd2FybmluZ3M7DQoJKkdldG9wdDo6 QXV0bzo6aGVscG1lID0gXCZoZWxwbWU7DQoJKkdldG9wdDo6QXV0bzo6dW5y ZWNvZ25pemVkID0gXCZ1bnJlY29nbml6ZWQ7DQp9DQoNCg0KbXkgJGNvbW1h bmRsaW5lOw0KDQpCRUdJTnsNCglteSAkZGF0YWJhc2U7DQoJbXkgJGNvbmZp ZzsNCgkNCglHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZSAoInBhc3NfdGhyb3Vn aCIpOw0KCUdldE9wdGlvbnMoJ2RhdGFiYXNlPXMnID0+IFwkZGF0YWJhc2Us DQogICAgICAgICAgICAgICAnY29uZmlnLWZpbGV8Zj1zJyA9PiBcJGNvbmZp Zyk7DQoNCgkkY29tbWFuZGxpbmUgLj0gIiAtLWRhdGFiYXNlPVwiJGRhdGFi YXNlXCIiIGlmIGRlZmluZWQgJGRhdGFiYXNlOw0KCSRjb21tYW5kbGluZSAu PSAiIC0tY29uZmlnLWZpbGU9XCIkY29uZmlnXCIiIGlmIGRlZmluZWQgJGNv bmZpZzsNCn0NCg0Kc3ViIHJ1biB7DQoJbXkgJGNvbW1hbmQgPSBzaGlmdDsN Cg0KCWZvciBteSAkcGFyYW0gKEB7JENPTU1BTkRTeyRjb21tYW5kfXtwYXJh bXN9fSkgew0KCQlteSAkYXJnID0gc2hpZnQgQEFSR1Y7DQoJCWlmIChkZWZp bmVkICRhcmcpIHsNCgkJCWlmICgkcGFyYW0gZXEgIj0iKSB7DQoJCQkJJGNv bW1hbmRsaW5lIC49ICI9XCIkYXJnXCIiOw0KCQkJfSBlbHNlIHsNCgkJCQkk Y29tbWFuZGxpbmUgLj0gIiAtLSRwYXJhbT1cIiRhcmdcIiI7DQoJCQl9DQoJ CX0NCgl9DQoNCglpZiAoZGVmaW5lZCBAeyRDT01NQU5EU3skY29tbWFuZH17 cmVwZWF0fX0pIHsNCgkJbXkgJHBhcmFtID0gQHskQ09NTUFORFN7JGNvbW1h bmR9e3JlcGVhdH19Ow0KCQl3aGlsZSAoQEFSR1YpIHsNCgkJCSRjb21tYW5k bGluZSAuPSAiIC0tJHBhcmFtPVwiJF9cIiI7DQoJCQlzaGlmdDsNCgkJfQ0K CX0NCg0KCXN5c3RlbSAiJEZpbmRCaW46OkJpbi9uYWNoby1leCAkY29tbWFu ZCAkY29tbWFuZGxpbmUiOw0KDQoJcmV0dXJuIDA7DQp9DQoNCnN1YiB1bnJl Y29nbml6ZWQgew0KICAgIG15ICRjb21tYW5kID0gc2hpZnQ7DQoNCiAgICBw cmludCBTVERFUlIgIlVucmVjb2duaXNlZCBjb21tYW5kICRjb21tYW5kXG4i Ow0KICAgIGhlbHBtZSgwKTsNCn0NCg0KIyMjIyMNCiMNCiMgSGVscCBzdHVm Zg0KIw0KIyMjIyMNCg0KDQpzdWIgaGVscG1lIHsNCglteSAkdmVyYm9zaXR5 ID0gc2hpZnQ7DQoJDQoJJHZlcmJvc2l0eSA9IDEgaWYgIWRlZmluZWQgJHZl cmJvc2l0eTsNCg0KCXBvZDJ1c2FnZSgtdmVyYm9zZSA9PiAkdmVyYm9zaXR5 KTsNCn0NCg0Kc3ViIGRlZmF1bHQgew0KCWhlbHBtZSgwKTsNCn0NCg0KPWhl YWQxIFNFRSBBTFNPDQoNCkw8U2llc3RhPiwgTDxTaWVzdGE6OlVzZXJHdWlk ZT4NCg0KPWhlYWQxIEFVVEhPUg0KDQpXcml0dGVuIGJ5IEpvZHkgQmVsa2Eg PGJlbGtham0tY3BhbkBhYXJkdmFyay1zcy5jb20+DQoNCj1oZWFkMSBDT1BZ UklHSFQNCg0KKEMpb3B5cmlnaHQgMjAwMiB0aGUgU2llc3RhIGRldiB0ZWFt Lg0KDQpEaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSB0ZXJtcyBhcyBQZXJs IGl0c2VsZi4NCg0KPWN1dA0KDQo= ---1463760359-894031124-1059781923=:5155--
Generated at 13:56 on 01 Jul 2004 by mariachi 0.52