# Name: rah_plugin v0.01bRC2 # Type: Client side plugin # Plugins are articles and frontend lists # Author: Jukka Svahn # URL: http://rahforum.biz # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEwOiJyYWhfcGx1Z2luIjtzOjY6ImF1dGhvciI7czoxMToi SnVra2EgU3ZhaG4iO3M6MTA6ImF1dGhvcl91cmkiO3M6MTk6Imh0dHA6Ly9yYWhmb3J1bS5i aXoiO3M6NzoidmVyc2lvbiI7czo4OiIwLjAxYlJDMiI7czoxMToiZGVzY3JpcHRpb24iO3M6 Mzk6IlBsdWdpbnMgYXJlIGFydGljbGVzIGFuZCBmcm9udGVuZCBsaXN0cyI7czo0OiJoZWxw IjtzOjI1OTAzOiIJPGgxPnJhaF9wbHVnaW48L2gxPgoKCTxwPkFsbG93cyB5b3UgdG8gZGlz cGxheSBpbnN0YWxsZWQgcGx1Z2lucyBhbmQgcGx1Z2luIGRhdGEgbGlrZSBhcnRpY2xlcyBv biBmcm9udGVuZC4gV2l0aCB0aGUgaGVscCBvZiAyMCB1bmlxdWUgdGFncyB5b3UgY2FuIGNy ZWF0ZSBhIGxpc3Qgb2YgaW5zdGFsbGVkIHBsdWdpbnMsIGluZGl2aWR1YWwgcGx1Z2luIGNv bnRleHQgbGF5b3V0cy4gR28gZmFuY3kgYW5kIGRpc3BsYXkgcGx1Z2lucyBjb2RlLCBtZDUg aGFzaGVzLCBoZWxwIGZpbGVzIGFuZC9vciBldmVuIHBhZ2luYXRlIGxpc3RzLjwvcD4KCgk8 dWw+CgkJPGxpPlZlcnNpb246IDAuMSBQdWJsaWMgQmV0YSBQcmUgUmVsZXNlIENhbmRpdGF0 ZSAyPC9saT4KCQk8bGk+VXBkYXRlZDogMjAwOS8wNC8yNyA2OjMwIFBNIDxzcGFuIGNsYXNz PSJjYXBzIj5HTVQ8L3NwYW4+KzM8L2xpPgoJPC91bD4KCgk8aDM+VGFibGUgb2YgQ29udGVu dHM8L2gzPgoKCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2ludHJvLWFuZC1kZXNjcmlwdGlvbiI+ SW50cm8gYW5kIGRlc2NyaXB0aW9uPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNsaXN0LW9m LWZlYXR1cmVzIj5MaXN0IG9mIGZlYXR1cmVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNy ZXF1aXJlbWVudHMiPlJlcXVpcmVtZW50czwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjaW5z dGFsbGF0aW9uLWFuZC11c2FnZSI+SW5zdGFsbGF0aW9uIGFuZCB1c2FnZTwvYT48L2xpPgoJ CTxsaT48YSBocmVmPSIjYXR0cmlidXRlcyI+QXR0cmlidXRlcyBhbmQgdGFnczwvYT4KCTx1 bD4KCQk8bGk+TGlzdCB0YWdzCgk8dWw+CgkJPGxpPjxhIGhyZWY9IiN0eHAtcmFoLXBsdWdp bi1saXN0Ij50eHA6cmFoX3BsdWdpbl9saXN0PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN0 eHAtcmFoLXBsdWdpbi1saXN0LWN1c3RvbSI+dHhwOnJhaF9wbHVnaW5fbGlzdF9jdXN0b208 L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+Q29udGV4dCB0YWdzCgk8dWw+CgkJPGxpPjxh IGhyZWY9IiN0eHAtcmFoLXBsdWdpbi1wZXJtbGluayI+dHhwOnJhaF9wbHVnaW5fcGVybWxp bms8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3R4cC1yYWgtcGx1Z2luLW5hbWUiPnR4cDpy YWhfcGx1Z2luX25hbWU8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3R4cC1yYWgtcGx1Z2lu LXByZWZpeCI+dHhwOnJhaF9wbHVnaW5fcHJlZml4PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9 IiN0eHAtcmFoLXBsdWdpbi1zdGF0dXMiPnR4cDpyYWhfcGx1Z2luX3N0YXR1czwvYT48L2xp PgoJCTxsaT48YSBocmVmPSIjdHhwLXJhaC1wbHVnaW4tYXV0aG9yIj50eHA6cmFoX3BsdWdp bl9hdXRob3I8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3R4cC1yYWgtcGx1Z2luLWF1dGhv ci11cmkiPnR4cDpyYWhfcGx1Z2luX2F1dGhvcl91cmk8L2E+PC9saT4KCQk8bGk+PGEgaHJl Zj0iI3R4cC1yYWgtcGx1Z2luLXZlcnNpb24iPnR4cDpyYWhfcGx1Z2luX3ZlcnNpb248L2E+ PC9saT4KCQk8bGk+PGEgaHJlZj0iI3R4cC1yYWgtcGx1Z2luLWRlc2NyaXB0aW9uIj50eHA6 cmFoX3BsdWdpbl9kZXNjcmlwdGlvbjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjdHhwLXJh aC1wbHVnaW4taGVscCI+dHhwOnJhaF9wbHVnaW5faGVscDwvYT48L2xpPgoJCTxsaT48YSBo cmVmPSIjdHhwLXJhaC1wbHVnaW4tY29kZSI+dHhwOnJhaF9wbHVnaW5fY29kZTwvYT48L2xp PgoJCTxsaT48YSBocmVmPSIjdHhwLXJhaC1wbHVnaW4tY29kZS1yZXN0b3JlIj50eHA6cmFo X3BsdWdpbl9jb2RlX3Jlc3RvcmU8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3R4cC1yYWgt cGx1Z2luLWNvZGUtbWQ1Ij50eHA6cmFoX3BsdWdpbl9jb2RlX21kNTwvYT48L2xpPgoJCTxs aT48YSBocmVmPSIjdHhwLXJhaC1wbHVnaW4tdHlwZSI+dHhwOnJhaF9wbHVnaW5fdHlwZTwv YT48L2xpPgoJCTxsaT48YSBocmVmPSIjdHhwLXJhaC1wbHVnaW4tbG9hZC1vcmRlciI+dHhw OnJhaF9wbHVnaW5fbG9hZF9vcmRlcjwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT5Db25k aXRpb25hbCB0YWdzCgk8dWw+CgkJPGxpPjxhIGhyZWY9IiN0eHAtcmFoLXBsdWdpbi1pZi1m aXJzdCI+dHhwOnJhaF9wbHVnaW5faWZfZmlyc3Q8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0i I3R4cC1yYWgtcGx1Z2luLWlmLWxhc3QiPnR4cDpyYWhfcGx1Z2luX2lmX2xhc3Q8L2E+PC9s aT4KCQk8bGk+PGEgaHJlZj0iI3R4cC1yYWgtcGx1Z2luLWlmLWluZGl2aWR1YWwiPnR4cDpy YWhfcGx1Z2luX2lmX2luZGl2aWR1YWw8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3R4cC1y YWgtcGx1Z2luLWlmLWxpc3QiPnR4cDpyYWhfcGx1Z2luX2lmX2xpc3Q8L2E+PC9saT4KCTwv dWw+PC9saT4KCQk8bGk+VW5maW5pc2hlZCB0YWdzCgk8dWw+CgkJPGxpPjxhIGhyZWY9IiN0 eHAtcmFoLXBsdWdpbi1wYWdlLXByZXYiPnR4cDpyYWhfcGx1Z2luX3BhZ2VfcHJldjwvYT48 L2xpPgoJCTxsaT48YSBocmVmPSIjdHhwLXJhaC1wbHVnaW4tcGFnZS1uZXh0Ij50eHA6cmFo X3BsdWdpbl9wYWdlX25leHQ8L2E+PC9saT4KCTwvdWw+PC9saT4KCTwvdWw+PC9saT4KCQk8 bGk+PGEgaHJlZj0iI2V4YW1wbGUiPkV4YW1wbGU8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0i I2NoYW5nZWxvZyI+Q2hhbmdlbG9nPC9hPjwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0ibGlzdC1v Zi1mZWF0dXJlcyI+TGlzdCBvZiBmZWF0dXJlczwvaDM+CgoJPHVsPgoJCTxsaT5PdXRwdXQg bGlzdHMgb2YgcGx1Z2luIGRhdGEgd2l0aCA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiB0YWdzIGxpa2UgYXJ0aWNsZXMgb24gZnJvbnRlbmQuPC9saT4KCQk8bGk+SW5jbHVkZXMg MjIgbmV3IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MuPC9saT4KCQk8bGk+ QWxzbyBzdXBwb3J0cyA8Y29kZT5yYWhfcGx1Z2luX2Rvd25sb2FkczwvY29kZT4gZmlsdGVy aW5nIHByZWZlbmNlcy48L2xpPgoJCTxsaT5GaWx0ZXIgYW5kIHNldCB1cCBwbHVnaW4gbGlz dHMgYW5kIGluZGl2aWR1YWwgcGx1Z2luIHBhZ2VzIHdpdGggbWFueSBhdHRyaWJ1dGVzIGFu ZCBzZXR0aW5ncy48L2xpPgoJCTxsaT5EaXNwbGF5IGFsbCBjb3JlIGluZm9ybWF0aW9uIHRo YXQgaXMgc3RvcmVkIGluc2lkZSBwbHVnaW5zIGRiLjwvbGk+CgkJPGxpPkNvbG9yaXplLCBl c2NhcGUgYW5kL29yIHBhcnNlIHBsdWdpbiBjb2RlIG91dHB1dC48L2xpPgoJCTxsaT5Vc2Ug PHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4mIzgyMTc7cyBzZWFyY2ggZnVuY3Rpb25z IHRvIHNlYXJjaCBwbHVnaW4gbGlzdHMuPC9saT4KCTwvdWw+CgoJPGgzIGlkPSJyZXF1aXJl bWVudHMiPlJlcXVpcmVtZW50czwvaDM+CgoJPHA+TWluaW11bSByZXF1aXJlbWVudHM6PC9w PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gNC40LjArPC9s aT4KCQk8bGk+VGV4dHBhdHRlcm4gNC4wLjcrPC9saT4KCTwvdWw+CgoJPHA+UmVjb21tZW5k ZWQ6PC9wPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gNS4x LjIrPC9saT4KCQk8bGk+VGV4dHBhdHRlcm4gNC4wLjgrPC9saT4KCTwvdWw+CgoJPGgzIGlk PSJpbnN0YWxsYXRpb24tYW5kLXVzYWdlIj5JbnN0YWxsYXRpb24gYW5kIHVzYWdlPC9oMz4K Cgk8cD5UaGUgZ2VuZXJhbCBiZWhhdmlvciBzdGFuZHM6IHBhc3RlIHBsdWdpbiBjb2RlIHRv IHRoZSBwbHVnaW4gaW5zdGFsbGVyIHRleHRhcmVhIGFuZCBydW4gdGhlIGF1dG9tYXRpYyBz ZXR1cC4gVGhlbiBqdXN0IGFjdGl2YXRlIHRoZSBwbHVnaW4gYW5kIHlvdSBhcmUgcmVhZHkg dG8gdXNlIG5ldyB0YWdzIHRoYXQgcGx1Z2luIGluY2x1ZGVzIGxpa2Ugb3RoZXJzLjwvcD4K Cgk8aDMgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXMgYW5kIHRhZ3M8L2gzPgoKCTxoNCBp ZD0idHhwLXJhaC1wbHVnaW4tbGlzdCI+PGNvZGU+Jmx0O3R4cDpyYWhfcGx1Z2luX2xpc3Qg LyZndDs8L2NvZGU+PC9oND4KCgk8cD5UaGUgdGFnLCA8Y29kZT4mbHQ7dHhwOnJhaF9wbHVn aW5fbGlzdCAvJmd0OzwvY29kZT4sIGlzIGEgc2luZ2xlIHRhZyBhbmQgaXMgdXNlZCB0byBv dXRwdXQgb25lIG9yIG1vcmUgcGx1Z2lucyBkZXBlbmRpbmcgb24gdGhlIGF0dHJpYnV0ZXMg dXNlZC4gRGVmYXVsdCBhdHRyaWJ1dGVzIHdpbGwgYmUgdXNlZCB3aGVuIG5vdGhpbmcgc3Bl Y2lmaWMgaXMgYXNzaWduZWQuIFRoZSA8Y29kZT4mbHQ7dHhwOnJhaF9wbHVnaW5fbGlzdCAv Jmd0OzwvY29kZT4gdGFnIGlzIGNvbnRleHQgc2Vuc2l0aXZlLiBJdCB3aWxsIG91dHB1dCBk aWZmZXJlbnQgcmVzdWx0cyBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgcGFnZSBiZWluZyB2 aWV3ZWQsIGlzIGFuIHBsdWdpbiBsaXN0IG9yIGFuIGluZGl2aWR1YWwgcGx1Z2luLiBBdHRy aWJ1dGVzIGZvbGxvdy48L3A+CgoJPHA+PHN0cm9uZz5mb3JtPC9zdHJvbmc+PGJyIC8+ClVz ZSBhIG1pc2MgZm9ybSB0byBmb3JtYXQgYW5kIGRpc3BsYXkgdGhlIHBsdWdpbnMuPGJyIC8+ CkRlZmF1bHQ6IDxjb2RlPmZvcm09JnF1b3Q7cGx1Z2luJnF1b3Q7PC9jb2RlPiBFeGFtcGxl OiA8Y29kZT4mcXVvdDtteXBsdWdpbmZvcm0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJv bmc+bGltaXQ8L3N0cm9uZz48YnIgLz4KVGhlIG1heGltdW0gbnVtYmVyIG9mIGFydGljbGVz IHRvIGRpc3BsYXkgcGVyIHBhZ2UuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPmxpbWl0PSZxdW90 OzEwJnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4mcXVvdDsyNTAmcXVvdDs8L2NvZGU+ PC9wPgoKCTxwPjxzdHJvbmc+b2Zmc2V0PC9zdHJvbmc+PGJyIC8+ClRoZSBudW1iZXIgb2Yg cGx1Z2lucyB0byBza2lwIGZyb20gdGhlIHN0YXJ0LjxiciAvPgpEZWZhdWx0OiA8Y29kZT5v ZmZzZXQ9JnF1b3Q7MCZxdW90OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7MTAmcXVv dDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+c29ydDwvc3Ryb25nPjxiciAvPgpTb3J0IGFu ZCBvcmRlciBjcml0ZXJpYXMgZm9yIHRoZSBwbHVnaW4gbGlzdC4gQXZhaWxhYmxlIHNvcnQg dmFsdWVzIDxjb2RlPm5hbWU8L2NvZGU+LCA8Y29kZT5zdGF0dXM8L2NvZGU+LCA8Y29kZT5h dXRob3I8L2NvZGU+LCA8Y29kZT5hdXRob3JfdXJpPC9jb2RlPiwgPGNvZGU+dmVyc2lvbjwv Y29kZT4sIDxjb2RlPmRlc2NyaXB0aW9uPC9jb2RlPiwgPGNvZGU+aGVscDwvY29kZT4sIDxj b2RlPmNvZGU8L2NvZGU+LCA8Y29kZT5jb2RlX3Jlc3RvcmU8L2NvZGU+LCA8Y29kZT5jb2Rl X21kNTwvY29kZT4sIDxjb2RlPnR5cGU8L2NvZGU+LCA8Y29kZT5sb2FkX29yZGVyPC9jb2Rl PiBhbmQgPGNvZGU+cmFuZCgpPC9jb2RlPiwgYW5kIG9yZGVycyA8Y29kZT5hc2M8L2NvZGU+ IGFuZCA8Y29kZT5kZXNjPC9jb2RlPi48YnIgLz4KRGVmYXVsdDogPGNvZGU+c29ydD0mcXVv dDtuYW1lIGFzYyZxdW90OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7YXV0aG9yIGRl c2MmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+cGdvbmx5PC9zdHJvbmc+PGJyIC8+ CkRvIHRoZSBwbHVnaW4gY291bnQsIGJ1dCBkaXNwbGF5IG5vdGhpbmcuIFVzZWQgd2hlbiB5 b3Ugd2FudCB0byBzaG93IGEgc2VhcmNoIHJlc3VsdCBjb3VudCwgb3IgcGFnZSBuYXZpZ2F0 aW9uIHRhZ3MgYmVmb3JlIHRoZSBsaXN0IG9mIGFydGljbGVzLiBNYWtlIHN1cmUgdGhhdCwg b3RoZXIgdGhhbiBwZ29ubHksIGJvdGggPGNvZGU+Jmx0O3R4cDpyYWhfcGx1Z2luX2xpc3Qg LyZndDs8L2NvZGU+IHRhZ3MgaGF2ZSBpZGVudGljYWwgYXR0cmlidXRlcy4gQXZhaWxhYmxl IHZhbHVlcyA8Y29kZT4wPC9jb2RlPiAoZG9uJiM4MjE3O3QgdXNlIHBnb25seSkgYW5kIDxj b2RlPjE8L2NvZGU+IChvbmx5IGRvIGNvdW50KS48YnIgLz4KRGVmYXVsdDogPGNvZGU+cGdv bmx5PSZxdW90OzAmcXVvdDs8L2NvZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90OzEmcXVvdDs8 L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+c3RhdHVzPC9zdHJvbmc+PGJyIC8+CkF2YWlsYWJl IHZhbHVlczogIDxjb2RlPjE8L2NvZGU+IChhY3RpdmUpLCA8Y29kZT4wPC9jb2RlPiAoZGlz YWJsZWQpIG9yIDxjb2RlPiZxdW90OyZxdW90OzwvY29kZT4gKHVuc2V0LCBhbGwpQC4gRGVm YXVsdCB2YWx1ZSBpcyB1bnNldCwgYW5kIHNob3dzIGFsbCBzdGF0dXNlcy48YnIgLz4KRGVm YXVsdDogPGNvZGU+c3RhdHVzPSZxdW90OyZxdW90OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+ JnF1b3Q7MSZxdW90OzwvY29kZT48L3A+CgoJPHA+PHN0cm9uZz5hdXRob3I8L3N0cm9uZz48 YnIgLz4KRGVmYXVsdCB2YWx1ZSBpcyB1bnNldCwgc2hvd3MgcGx1Z2lucyBieSBhbnkgYXV0 aG9yLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5hdXRob3I9JnF1b3Q7JnF1b3Q7PC9jb2RlPiBF eGFtcGxlOiA8Y29kZT4mcXVvdDtKb2huIERvZSZxdW90OzwvY29kZT48L3A+CgoJPHA+PHN0 cm9uZz5hdXRob3JfdXJpPC9zdHJvbmc+PGJyIC8+ClJlc3RyaWN0IGxpc3RlZCBwbHVnaW5z IHRvIGEgY2VydGFpbiBhdXRob3IgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4uIERl ZmF1bHQgaXMgdW5zZXQgKHNob3cgcGx1Z2lucyB3aXRoIGFueSA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPikuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPmF1dGhvcl91cmk9JnF1b3Q7 JnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4mcXVvdDtodHRwOi8vYXV0aG9yLXNpdGUu Y29tJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD48c3Ryb25nPnZlcnNpb248L3N0cm9uZz48YnIg Lz4KRGVmYXVsdDogPGNvZGU+dmVyc2lvbj0mcXVvdDsmcXVvdDs8L2NvZGU+IEV4YW1wbGU6 IDxjb2RlPiZxdW90OzEuNSZxdW90OzwvY29kZT48L3A+CgoJPHA+PHN0cm9uZz5wcmVmaXg8 L3N0cm9uZz48YnIgLz4KUmVzdHJpY3QgbGlzdGVkIHBsdWdpbnMgdG8gYSBjZXJ0YWluIGF1 dGhvciBwcmVmaXgoZXMpLiBEZWZhdWx0IGlzIHVuc2V0IChzaG93IHBsdWdpbnMgd2l0aCBh bnkgcHJlZml4KS4gVGhlIGF0dHJpYnV0ZSBleHBlY3RzIHRoYXQgcGx1Z2lucyYjODIxNzsg dXNlIGEgdmFsaWQgdGhyZWUgbGV0dGVyZWQgcHJlZml4ZXMuIEludmFsaWQgcGx1Z2luIG5h bWVzIHdvbiYjODIxNzt0IGJlIHRvbGVyYXRlZC4gQ29tbWEgc2VwZXJhdGVkIGlmIG11bHRp cGxlLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5wcmVmaXg9JnF1b3Q7JnF1b3Q7PC9jb2RlPiBF eGFtcGxlOiA8Y29kZT4mcXVvdDtvcHYscXFjJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD48c3Ry b25nPnR5cGU8L3N0cm9uZz48YnIgLz4KUmVzdHJpY3QgbGlzdGVkIHBsdWdpbnMgdG8gYSBj ZXJ0YWluIHBsdWdpbiB0eXBlLiBBdmFpbGFibGUgdmFsdWVzOiA8Y29kZT4wPC9jb2RlPiAo Q2xpZW50IHNpZGUpLCA8Y29kZT4xPC9jb2RlPiAoQWRtaW4vQ2xpZW50IHNpZGUpLCA8Y29k ZT4yPC9jb2RlPiAoTGlicmFyeSksIDxjb2RlPjM8L2NvZGU+IChBZG1pbiBvbmx5KSBvciA8 Y29kZT4mcXVvdDsmcXVvdDs8L2NvZGU+ICh1bnNldCwgYWxsKS4gQ29tbWEgc2VwZXJhdGVk IGlmIG11bHRpcGxlLiBEZWZhdWx0IGlzIHVuc2V0IChzaG93IHBsdWdpbnMgb2YgYW55IHR5 cGUpLjxiciAvPgpEZWZhdWx0OiA8Y29kZT50eXBlPSZxdW90OyZxdW90OzwvY29kZT4gRXhh bXBsZTogPGNvZGU+JnF1b3Q7MSZxdW90OzwvY29kZT48L3A+CgoJPHA+PHN0cm9uZz5vcmRl cjwvc3Ryb25nPjxiciAvPgpGaWx0ZXIgbGlzdGVkIHBsdWdpbnMgdG8gYSBzcGVjaWZpYyBs b2FkIG9yZGVyLiBWYWx1ZXMgZnJvbSA8Y29kZT4xPC9jb2RlPiB0byA8Y29kZT4xMDwvY29k ZT4uIENvbW1hIHNlcGVyYXRlZCBpZiBtdWx0aXBsZS4gRGVmYXVsdCBpcyB1bnNldCAoc2hv d3MgcGx1Z2lucyB3aXRoIGFueSBsb2FkIG9yZGVyKS48YnIgLz4KRGVmYXVsdDogPGNvZGU+ b3JkZXI9JnF1b3Q7JnF1b3Q7PC9jb2RlPiBFeGFtcGxlIDxjb2RlPiZxdW90OzUsMTAmcXVv dDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+YWxsb3dfcGFnaW5hdGlvbjwvc3Ryb25nPjxi ciAvPgpBbGxvdyB1c2FnZSBvZiBwYWdpbmF0aW9uLiBJZiBkaXNhYmxlZCwgY2xpY2tpbmcg bmV3ZXIgYW5kIG9sZGVyIGxpbmtzIHdvbiYjODIxNzt0IGRvIGFueXRoaW5nLiBBdmFpbGFi bGUgdmFsdWVzOiA8Y29kZT4xPC9jb2RlPiAoYWxsb3cpIG9yIDxjb2RlPjA8L2NvZGU+IChk aXNhYmxlKS48YnIgLz4KRGVmYXVsdDogPGNvZGU+YWxsb3dfcGFnaW5hdGlvbj0mcXVvdDsx JnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4mcXVvdDswJnF1b3Q7PC9jb2RlPjwvcD4K Cgk8cD48c3Ryb25nPmFsbG93X3NlYXJjaDwvc3Ryb25nPjxiciAvPgpUaGUgdGFnIHJldHVy bnMgc2VhcmNoIHJlc3VsdHMgb3Igbm90LiBBdmFpbGFibGUgdmFsdWVzOiA8Y29kZT4xPC9j b2RlPiAoYWxsb3cpIG9yIDxjb2RlPjA8L2NvZGU+IGRpc2FibGUuPGJyIC8+CkRlZmF1bHQ6 IDxjb2RlPmFsbG93X3NlYXJjaD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29k ZT4mcXVvdDswJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD48c3Ryb25nPnVzZV9wbHVnaW5fZG93 bmxvYWRfZmlsdGVyPC9zdHJvbmc+PGJyIC8+ClVzZSB0aGUgcGx1Z2luIGZpbHRlcmluZyBk ZWZpbmVkIGluIDxhIGhyZWY9Imh0dHA6Ly9yYWhmb3J1bS5iaXovcGx1Z2lucy9yYWhfcGx1 Z2luX2Rvd25sb2FkIj5yYWhfcGx1Z2luX2Rvd25sb2FkPC9hPiBwbHVnaW4mIzgyMTc7cyBm aWx0ZXJpbmcgcHJlZmVyZW5jZXMuIDxjb2RlPnVzZV9wbHVnaW5fZG93bmxvYWRfZmlsdGVy PC9jb2RlPiBvdmVyd3JpdGVzIGFuZCBtZXJnZXMgdG8gdGhlIGZpbHRlcnMgeW91IHNldCBp biBvdGhlciBhdHRyaWJ1dGVzLiBJZiB5b3Ugd2FudCB0byB1c2Ugb25seSByYWhfcGx1Z2lu X2Rvd25sb2FkJiM4MjE3O3MgZmlsdGVyaW5nLCBsZWF2ZSBvdGhlciBmaWx0ZXJpbmcgYXR0 cmlidXRlcyB1bnNldC4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MTwvY29kZT4gKHVzZSkg b3IgPGNvZGU+MDwvY29kZT4gKGRvbiYjODIxNzt0IHVzZSkuPGJyIC8+CkRlZmF1bHQ6IDxj b2RlPnVzZV9wbHVnaW5fZG93bmxvYWRfZmlsdGVyPSZxdW90OzAmcXVvdDs8L2NvZGU+IEV4 YW1wbGU6IDxjb2RlPiZxdW90OzEmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+bGFi ZWw8L3N0cm9uZz48YnIgLz4KTGFiZWwgdGV4dCBmb3IgdGhlIHRvcCBvZiB0aGUgbGlzdC48 YnIgLz4KRGVmYXVsdDogPGNvZGU+bGFiZWw9JnF1b3Q7JnF1b3Q7PC9jb2RlPiBFeGFtcGxl OiA8Y29kZT4mcXVvdDtMaXN0IG9mIHBsdWdpbnMmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxz dHJvbmc+bGFiZWx0YWc8L3N0cm9uZz48YnIgLz4KKFgpSFRNTCB0YWcgKHdpdGhvdXQgYnJh Y2tldHMpIHRvIHdyYXAgYXJvdW5kIGxhYmVsLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5sYWJl bHRhZz0mcXVvdDsmcXVvdDs8L2NvZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90O2gzJnF1b3Q7 PC9jb2RlPjwvcD4KCgk8cD48c3Ryb25nPndyYXB0YWc8L3N0cm9uZz48YnIgLz4KVGhlIChY KUhUTUwgdGFnLCB3aXRob3V0IGJyYWNrZXRzLCB0byB3cmFwIGFyb3VuZCBlYWNoIHBsdWdp bi48YnIgLz4KRGVmYXVsdDogPGNvZGU+d3JhcHRhZz0mcXVvdDsmcXVvdDs8L2NvZGU+IEV4 YW1wbGU6IDxjb2RlPiZxdW90O2RpdiZxdW90OzwvY29kZT48L3A+CgoJPHA+PHN0cm9uZz5i cmVhazwvc3Ryb25nPjxiciAvPgpUaGUgKFgpSFRNTCB0YWcgKHdpdGhvdXQgYnJhY2tldHMp IG9yIHN0cmluZyB0byBzZXBhcmF0ZSBsaXN0IGl0ZW1zLjxiciAvPgpEZWZhdWx0OiA8Y29k ZT5icmVhaz0mcXVvdDsmcXVvdDs8L2NvZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90O2JyJnF1 b3Q7PC9jb2RlPjwvcD4KCgk8cD48c3Ryb25nPmNsYXNzPC9zdHJvbmc+PGJyIC8+ClRoZSAo WClIVE1MIGNsYXNzIGFwcGxpZWQgdG8gdGhlIHdyYXB0YWcuPGJyIC8+CkRlZmF1bHQ6IDxj b2RlPmNsYXNzPSZxdW90OyZxdW90OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7cGx1 Z2luJnF1b3Q7PC9jb2RlPjwvcD4KCgk8aDQgaWQ9InR4cC1yYWgtcGx1Z2luLWxpc3QtY3Vz dG9tIj48Y29kZT4mbHQ7dHhwOnJhaF9wbHVnaW5fbGlzdF9jdXN0b20gLyZndDs8L2NvZGU+ PC9oND4KCgk8cD5UaGUgdGFnLCA8Y29kZT4mbHQ7dHhwOnJhaF9wbHVnaW5fbGlzdF9jdXN0 b20gLyZndDs8L2NvZGU+LCBpcyBhIHNpbmdsZSB0YWcgYW5kIGlzIHVzZWQgdG8gb3V0cHV0 IG9uZSBvciBtb3JlIHBsdWdpbnMgZGVwZW5kaW5nIG9uIHRoZSBhdHRyaWJ1dGVzIHVzZWQu IERlZmF1bHQgYXR0cmlidXRlcyB3aWxsIGJlIHVzZWQgd2hlbiBub3RoaW5nIHNwZWNpZmlj IGlzIGFzc2lnbmVkLiBUaGUgPGNvZGU+Jmx0O3R4cDpyYWhfcGx1Z2luX2xpc3RfY3VzdG9t IC8mZ3Q7PC9jb2RlPiB0YWcsIHVubGlrZSA8Y29kZT5yYWhfcGx1Z2luX2xpc3Q8L2NvZGU+ LCBpcyA8c3Ryb25nPm5vdDwvc3Ryb25nPiBjb250ZXh0IHNlbnNpdGl2ZS4gSXQgYWx3YXlz IHJldHVybnMgc2FtZSBjb250ZW50LCB3aGVyZSBldmVyIGl0IGlzIHBsYWNlZCBhbmQgdGhl IGxpc3RpbmcgY29tcGxldGVseSBkZXBlbmQgb24gdGhlIGF0dHJpYnV0ZXMuIFVzZSA8Y29k ZT5yYWhfcGx1Z2luX2xpc3Q8L2NvZGU+IGluc3RlYWQgdG8gcmV0dXJuIGNvbnRleHQgc2Vu c2l0aXZlIGxpc3RpbmdzLiBBdHRyaWJ1dGVzIGZvbGxvdy48L3A+CgoJPHA+PHN0cm9uZz5m b3JtPC9zdHJvbmc+PGJyIC8+ClVzZSBhIG1pc2MgZm9ybSB0byBmb3JtYXQgYW5kIGRpc3Bs YXkgdGhlIHBsdWdpbnMuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPmZvcm09JnF1b3Q7cGx1Z2lu JnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4mcXVvdDtteXBsdWdpbmZvcm0mcXVvdDs8 L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+bGltaXQ8L3N0cm9uZz48YnIgLz4KVGhlIG1heGlt dW0gbnVtYmVyIG9mIGFydGljbGVzIHRvIGRpc3BsYXkgcGVyIHBhZ2UuPGJyIC8+CkRlZmF1 bHQ6IDxjb2RlPmxpbWl0PSZxdW90OzEwJnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4m cXVvdDsyNTAmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+b2Zmc2V0PC9zdHJvbmc+ PGJyIC8+ClRoZSBudW1iZXIgb2YgcGx1Z2lucyB0byBza2lwIGZyb20gdGhlIHN0YXJ0Ljxi ciAvPgpEZWZhdWx0OiA8Y29kZT5vZmZzZXQ9JnF1b3Q7MCZxdW90OzwvY29kZT4gRXhhbXBs ZTogPGNvZGU+JnF1b3Q7MTAmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+c29ydDwv c3Ryb25nPjxiciAvPgpTb3J0IGFuZCBvcmRlciBjcml0ZXJpYXMgZm9yIHRoZSBwbHVnaW4g bGlzdC4gQXZhaWxhYmxlIHNvcnQgdmFsdWVzIDxjb2RlPm5hbWU8L2NvZGU+LCA8Y29kZT5z dGF0dXM8L2NvZGU+LCA8Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT5hdXRob3JfdXJpPC9j b2RlPiwgPGNvZGU+dmVyc2lvbjwvY29kZT4sIDxjb2RlPmRlc2NyaXB0aW9uPC9jb2RlPiwg PGNvZGU+aGVscDwvY29kZT4sIDxjb2RlPmNvZGU8L2NvZGU+LCA8Y29kZT5jb2RlX3Jlc3Rv cmU8L2NvZGU+LCA8Y29kZT5jb2RlX21kNTwvY29kZT4sIDxjb2RlPnR5cGU8L2NvZGU+LCA8 Y29kZT5sb2FkX29yZGVyPC9jb2RlPiBhbmQgPGNvZGU+cmFuZCgpPC9jb2RlPiwgYW5kIG9y ZGVycyA8Y29kZT5hc2M8L2NvZGU+IGFuZCA8Y29kZT5kZXNjPC9jb2RlPi48YnIgLz4KRGVm YXVsdDogPGNvZGU+c29ydD0mcXVvdDtuYW1lIGFzYyZxdW90OzwvY29kZT4gRXhhbXBsZTog PGNvZGU+JnF1b3Q7YXV0aG9yIGRlc2MmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+ bmFtZTwvc3Ryb25nPjxiciAvPgpPbmx5IHNob3cgY2VydGFpbiBuYW1lZCBwbHVnaW5zLiBE ZWZhdWx0IGlzIHVuc2V0IChzaG93cyBhbnkgcGx1Z2luKS4gQ29tbWEgc2VwZXJhdGVkIGlm IG11bHRpcGxlLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5uYW1lPSZxdW90OyZxdW90OzwvY29k ZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7eHh4X3BsdWdpbl9uYW1lJnF1b3Q7PC9jb2RlPjwv cD4KCgk8cD48c3Ryb25nPnN0YXR1czwvc3Ryb25nPjxiciAvPgpBdmFpbGFiZSB2YWx1ZXM6 ICA8Y29kZT4xPC9jb2RlPiAoYWN0aXZlKSwgPGNvZGU+MDwvY29kZT4gKGRpc2FibGVkKSBv ciA8Y29kZT4mcXVvdDsmcXVvdDs8L2NvZGU+ICh1bnNldCwgYWxsKUAuIERlZmF1bHQgdmFs dWUgaXMgdW5zZXQsIGFuZCBzaG93cyBhbGwgc3RhdHVzZXMuPGJyIC8+CkRlZmF1bHQ6IDxj b2RlPnN0YXR1cz0mcXVvdDsmcXVvdDs8L2NvZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90OzEm cXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+YXV0aG9yPC9zdHJvbmc+PGJyIC8+CkRl ZmF1bHQgdmFsdWUgaXMgdW5zZXQsIHNob3dzIHBsdWdpbnMgYnkgYW55IGF1dGhvci48YnIg Lz4KRGVmYXVsdDogPGNvZGU+YXV0aG9yPSZxdW90OyZxdW90OzwvY29kZT4gRXhhbXBsZTog PGNvZGU+JnF1b3Q7Sm9obiBEb2UmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+YXV0 aG9yX3VyaTwvc3Ryb25nPjxiciAvPgpSZXN0cmljdCBsaXN0ZWQgcGx1Z2lucyB0byBhIGNl cnRhaW4gYXV0aG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+LiBEZWZhdWx0IGlz IHVuc2V0IChzaG93IHBsdWdpbnMgd2l0aCBhbnkgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4pLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5hdXRob3JfdXJpPSZxdW90OyZxdW90Ozwv Y29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7aHR0cDovL2F1dGhvci1zaXRlLmNvbSZxdW90 OzwvY29kZT48L3A+CgoJPHA+PHN0cm9uZz52ZXJzaW9uPC9zdHJvbmc+PGJyIC8+CkRlZmF1 bHQ6IDxjb2RlPnZlcnNpb249JnF1b3Q7JnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4m cXVvdDsxLjUmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+cHJlZml4PC9zdHJvbmc+ PGJyIC8+ClJlc3RyaWN0IGxpc3RlZCBwbHVnaW5zIHRvIGEgY2VydGFpbiBhdXRob3IgcHJl Zml4KGVzKS4gRGVmYXVsdCBpcyB1bnNldCAoc2hvdyBwbHVnaW5zIHdpdGggYW55IHByZWZp eCkuIFRoZSBhdHRyaWJ1dGUgZXhwZWN0cyB0aGF0IHBsdWdpbnMmIzgyMTc7IHVzZSBhIHZh bGlkIHRocmVlIGxldHRlcmVkIHByZWZpeGVzLiBJbnZhbGlkIHBsdWdpbiBuYW1lcyB3b24m IzgyMTc7dCBiZSB0b2xlcmF0ZWQuIENvbW1hIHNlcGVyYXRlZCBpZiBtdWx0aXBsZS48YnIg Lz4KRGVmYXVsdDogPGNvZGU+cHJlZml4PSZxdW90OyZxdW90OzwvY29kZT4gRXhhbXBsZTog PGNvZGU+JnF1b3Q7b3B2LHFxZCZxdW90OzwvY29kZT48L3A+CgoJPHA+PHN0cm9uZz50eXBl PC9zdHJvbmc+PGJyIC8+ClJlc3RyaWN0IGxpc3RlZCBwbHVnaW5zIHRvIGEgY2VydGFpbiBw bHVnaW4gdHlwZS4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MDwvY29kZT4gKENsaWVudCBz aWRlKSwgPGNvZGU+MTwvY29kZT4gKEFkbWluL0NsaWVudCBzaWRlKSwgPGNvZGU+MjwvY29k ZT4gKExpYnJhcnkpLCA8Y29kZT4zPC9jb2RlPiAoQWRtaW4gb25seSkgb3IgPGNvZGU+JnF1 b3Q7JnF1b3Q7PC9jb2RlPiAodW5zZXQsIGFsbCkuIENvbW1hIHNlcGVyYXRlZCBpZiBtdWx0 aXBsZS4gRGVmYXVsdCBpcyB1bnNldCAoc2hvdyBwbHVnaW5zIG9mIGFueSB0eXBlKS48YnIg Lz4KRGVmYXVsdDogPGNvZGU+dHlwZT0mcXVvdDsmcXVvdDs8L2NvZGU+IEV4YW1wbGU6IDxj b2RlPiZxdW90OzEmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+b3JkZXI8L3N0cm9u Zz48YnIgLz4KRmlsdGVyIGxpc3RlZCBwbHVnaW5zIHRvIGEgc3BlY2lmaWMgbG9hZCBvcmRl ci4gVmFsdWVzIGZyb20gPGNvZGU+MTwvY29kZT4gdG8gPGNvZGU+MTA8L2NvZGU+LiBDb21t YSBzZXBlcmF0ZWQgaWYgbXVsdGlwbGUuIERlZmF1bHQgaXMgdW5zZXQgKHNob3dzIHBsdWdp bnMgd2l0aCBhbnkgbG9hZCBvcmRlcikuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPm9yZGVyPSZx dW90OyZxdW90OzwvY29kZT4gRXhhbXBsZSA8Y29kZT4mcXVvdDs1LDEwJnF1b3Q7PC9jb2Rl PjwvcD4KCgk8cD48c3Ryb25nPnVzZV9wbHVnaW5fZG93bmxvYWRfZmlsdGVyPC9zdHJvbmc+ PGJyIC8+ClVzZSB0aGUgcGx1Z2luIGZpbHRlcmluZyBkZWZpbmVkIGluIDxhIGhyZWY9Imh0 dHA6Ly9yYWhmb3J1bS5iaXovcGx1Z2lucy9yYWhfcGx1Z2luX2Rvd25sb2FkIj5yYWhfcGx1 Z2luX2Rvd25sb2FkPC9hPiBwbHVnaW4mIzgyMTc7cyBmaWx0ZXJpbmcgcHJlZmVyZW5jZXMu IDxjb2RlPnVzZV9wbHVnaW5fZG93bmxvYWRfZmlsdGVyPC9jb2RlPiBvdmVyd3JpdGVzIGFu ZCBtZXJnZXMgdG8gdGhlIGZpbHRlcnMgeW91IHNldCBpbiBvdGhlciBhdHRyaWJ1dGVzLiBJ ZiB5b3Ugd2FudCB0byB1c2Ugb25seSByYWhfcGx1Z2luX2Rvd25sb2FkJiM4MjE3O3MgZmls dGVyaW5nLCBsZWF2ZSBvdGhlciBmaWx0ZXJpbmcgYXR0cmlidXRlcyB1bnNldC4gQXZhaWxh YmxlIHZhbHVlczogPGNvZGU+MTwvY29kZT4gKHVzZSkgb3IgPGNvZGU+MDwvY29kZT4gKGRv biYjODIxNzt0IHVzZSkuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPnVzZV9wbHVnaW5fZG93bmxv YWRfZmlsdGVyPSZxdW90OzAmcXVvdDs8L2NvZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90OzEm cXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+bGFiZWw8L3N0cm9uZz48YnIgLz4KTGFi ZWwgdGV4dCBmb3IgdGhlIHRvcCBvZiB0aGUgbGlzdC48YnIgLz4KRGVmYXVsdDogPGNvZGU+ bGFiZWw9JnF1b3Q7JnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4mcXVvdDtMaXN0IG9m IHBsdWdpbnMmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+bGFiZWx0YWc8L3N0cm9u Zz48YnIgLz4KKFgpSFRNTCB0YWcgKHdpdGhvdXQgYnJhY2tldHMpIHRvIHdyYXAgYXJvdW5k IGxhYmVsLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5sYWJlbHRhZz0mcXVvdDsmcXVvdDs8L2Nv ZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90O2gzJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD48c3Ry b25nPndyYXB0YWc8L3N0cm9uZz48YnIgLz4KVGhlIChYKUhUTUwgdGFnLCB3aXRob3V0IGJy YWNrZXRzLCB0byB3cmFwIGFyb3VuZCBlYWNoIHBsdWdpbi48YnIgLz4KRGVmYXVsdDogPGNv ZGU+d3JhcHRhZz0mcXVvdDsmcXVvdDs8L2NvZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90O2Rp diZxdW90OzwvY29kZT48L3A+CgoJPHA+PHN0cm9uZz5icmVhazwvc3Ryb25nPjxiciAvPgpU aGUgKFgpSFRNTCB0YWcgKHdpdGhvdXQgYnJhY2tldHMpIG9yIHN0cmluZyB0byBzZXBhcmF0 ZSBsaXN0IGl0ZW1zLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5icmVhaz0mcXVvdDsmcXVvdDs8 L2NvZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90O2JyJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD48 c3Ryb25nPmNsYXNzPC9zdHJvbmc+PGJyIC8+ClRoZSAoWClIVE1MIGNsYXNzIGFwcGxpZWQg dG8gdGhlIHdyYXB0YWcuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPmNsYXNzPSZxdW90OyZxdW90 OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7cGx1Z2luJnF1b3Q7PC9jb2RlPjwvcD4K Cgk8aDQgaWQ9InR4cC1yYWgtcGx1Z2luLXBlcm1saW5rIj48Y29kZT4mbHQ7dHhwOnJhaF9w bHVnaW5fcGVybWxpbmsgLyZndDs8L2NvZGU+PC9oND4KCgk8cD5UaGUgPGNvZGU+Jmx0O3R4 cDpyYWhfcGx1Z2luX3Blcm1saW5rIC8mZ3Q7PC9jb2RlPiBjYW4gYmUgdXNlZCB0byByZXR1 cm4gdGhlIHBlcm1hbmVudCB1cmwgb3IgZnVsbCA8c3BhbiBjbGFzcz0iY2FwcyI+WEhUTUw8 L3NwYW4+IGxpbmsgKHBlcm1saW5rKSB0byB0aGUgaW5kaXZpZHVhbCBwbHVnaW4gcGFnZS4g QXR0cmlidXRlcyBmb2xsb3cuPC9wPgoKCTxwPjxzdHJvbmc+bmFtZTwvc3Ryb25nPjxiciAv PgpUaGUgbmFtZSBvZiB0aGUgcGx1Z2luIHRvIGxpbmsuIElmIGxlZnQgZW1wdHkgKHVuc2V0 KSwgdXNlcyB0aGUgY3VycmVudCBwbHVnaW4gYmVpbmcgZGlzcGxheWVkLjxiciAvPgpEZWZh dWx0OiA8Y29kZT5uYW1lPSZxdW90OyZxdW90OzwvY29kZT4gKHVuc2V0KSBFeGFtcGxlOiA8 Y29kZT4mcXVvdDt4eHhfcGx1Z2luX25hbWUmcXVvdDs8L2NvZGU+PC9wPgoKCTxoNCBpZD0i dHhwLXJhaC1wbHVnaW4tbmFtZSI+PGNvZGU+Jmx0O3R4cDpyYWhfcGx1Z2luX25hbWUgLyZn dDs8L2NvZGU+PC9oND4KCgk8cD5SZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBwbHVnaW4gYmVp bmcgZGlzcGxheS4gVXN1YWxseSB1c2VkIGluIHRoZSBwbHVnaW4gZm9ybS4gVGhlIHRhZyBo YXMgbm8gYXR0cmlidXRlcy48L3A+CgoJPGg0IGlkPSJ0eHAtcmFoLXBsdWdpbi1wcmVmaXgi Pjxjb2RlPiZsdDt0eHA6cmFoX3BsdWdpbl9wcmVmaXggLyZndDs8L2NvZGU+PC9oND4KCgk8 cD5SZXR1cm5zIHRoZSB0aHJlZSBsZXR0ZXIgYXV0aG9yIHByZWZpeCBvZiB0aGUgcGx1Z2lu IGJlaW5nIGRpc3BsYXllZC4gVXN1YWxseSB1c2VkIGluIHRoZSBwbHVnaW4gZm9ybS4gVGhl IHRhZyBoYXMgbm8gYXR0cmlidXRlcy48L3A+CgoJPGg0IGlkPSJ0eHAtcmFoLXBsdWdpbi1z dGF0dXMiPjxjb2RlPiZsdDt0eHA6cmFoX3BsdWdpbl9zdGF0dXMgLyZndDs8L2NvZGU+PC9o ND4KCgk8cD5SZXR1cm5zIHRoZSBzdGF0dXMgb2YgdGhlIHBsdWdpbiBiZWluZyBkaXNwbGF5 ZWQuIFVzdWFsbHkgdXNlZCBpbiB0aGUgcGx1Z2luIGZvcm0uIEF0dHJpYnV0ZXMgZm9sbG93 LjwvcD4KCgk8cD48c3Ryb25nPnN0YXR1c18xPC9zdHJvbmc+PGJyIC8+ClRoZSB0ZXh0IGxh YmVsIGZvciB0aGUgc3RhdHVzIG51bWJlciAjMSAoYWN0aXZlKS48YnIgLz4KRGVmYXVsdDog PGNvZGU+c3RhdHVzXzE9JnF1b3Q7QWN0aXZlJnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29k ZT4mcXVvdDtPbiBEdXR5JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD48c3Ryb25nPnN0YXR1c18w PC9zdHJvbmc+PGJyIC8+ClRoZSB0ZXh0IGxhYmVsIGZvciB0aGUgc3RhdHVzIG51bWJlciAj MCAoZGlzYWJsZWQpLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5zdGF0dXNfMD0mcXVvdDtEaXNh YmxlZCZxdW90OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7T2ZmJnF1b3Q7PC9jb2Rl PjwvcD4KCgk8cD48c3Ryb25nPm51bWJlcjwvc3Ryb25nPjxiciAvPgpXaGF0IHRvIGRpc3Bs YXkuIERpc3BsYXkgbnVtYmVycyAoPGNvZGU+MDwvY29kZT4sQDFAKSBvciB0aGUgdGV4dCBs YWJlbHMgZGVmaW5lZCBpbiA8Y29kZT5zdGF0dXNfMDwvY29kZT4gYW5kIDxjb2RlPnN0YXR1 c18xPC9jb2RlPi4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MDwvY29kZT4gKGRpc3BsYXkg dGV4dCBsYWJlbHMpIGFuZCA8Y29kZT4xPC9jb2RlPiAoZGlzcGxheSBudW1iZXJzKS48YnIg Lz4KRGVmYXVsdDogPGNvZGU+bnVtYmVyPSZxdW90OzAmcXVvdDs8L2NvZGU+IEV4YW1wbGU6 IDxjb2RlPiZxdW90OzEmcXVvdDs8L2NvZGU+PC9wPgoKCTxoNCBpZD0idHhwLXJhaC1wbHVn aW4tYXV0aG9yIj48Y29kZT4mbHQ7dHhwOnJhaF9wbHVnaW5fYXV0aG9yIC8mZ3Q7PC9jb2Rl PjwvaDQ+CgoJPHA+UmV0dXJucyB0aGUgYXV0aG9yIG9mIHRoZSBwbHVnaW4gYmVpbmcgZGlz cGxheWVkLiBVc3VhbGx5IHVzZWQgaW4gdGhlIHBsdWdpbiBmb3JtLiBBdHRyaWJ1dGVzIGZv bGxvdy48L3A+CgoJPHA+PHN0cm9uZz5lc2NhcGU8L3N0cm9uZz48YnIgLz4KRXNjYXBlIHRo ZSAoWClIVE1MIG1hcmt1cC4gQXZhaWxhYmxlIHZhbHVlcyA8Y29kZT5odG1sPC9jb2RlPiBh bmQgdW5zZXQgKDxjb2RlPiZxdW90OyZxdW90OzwvY29kZT4pLjxiciAvPgpEZWZhdWx0OiA8 Y29kZT5lc2NhcGU9JnF1b3Q7aHRtbCZxdW90OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1 b3Q7JnF1b3Q7PC9jb2RlPjwvcD4KCgk8aDQgaWQ9InR4cC1yYWgtcGx1Z2luLWF1dGhvci11 cmkiPjxjb2RlPiZsdDt0eHA6cmFoX3BsdWdpbl9hdXRob3JfdXJpIC8mZ3Q7PC9jb2RlPjwv aDQ+CgoJPHA+UmV0dXJucyB0aGUgYXV0aG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IG9mIHRoZSBwbHVnaW4gYmVpbmcgZGlzcGxheWVkLiBVc3VhbGx5IHVzZWQgaW4gdGhl IHBsdWdpbiBmb3JtLiBBdHRyaWJ1dGVzIGZvbGxvdy48L3A+CgoJPHA+PHN0cm9uZz5lc2Nh cGU8L3N0cm9uZz48YnIgLz4KRXNjYXBlIHRoZSAoWClIVE1MIG1hcmt1cC4gQXZhaWxhYmxl IHZhbHVlcyA8Y29kZT5odG1sPC9jb2RlPiBhbmQgdW5zZXQgKDxjb2RlPiZxdW90OyZxdW90 OzwvY29kZT4pLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5lc2NhcGU9JnF1b3Q7aHRtbCZxdW90 OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7JnF1b3Q7PC9jb2RlPjwvcD4KCgk8aDQg aWQ9InR4cC1yYWgtcGx1Z2luLXZlcnNpb24iPjxjb2RlPiZsdDt0eHA6cmFoX3BsdWdpbl92 ZXJzaW9uIC8mZ3Q7PC9jb2RlPjwvaDQ+CgoJPHA+UmV0dXJucyB0aGUgdmVyc2lvbiBudW1i ZXIgb2YgdGhlIHBsdWdpbiBiZWluZyBkaXNwbGF5ZWQuIFVzdWFsbHkgdXNlZCBpbiB0aGUg cGx1Z2luIGZvcm0uIFRoZSB0YWcgaGFzIG5vIGF0dHJpYnV0ZXMuPC9wPgoKCTxoNCBpZD0i dHhwLXJhaC1wbHVnaW4tZGVzY3JpcHRpb24iPjxjb2RlPiZsdDt0eHA6cmFoX3BsdWdpbl9k ZXNjcmlwdGlvbiAvJmd0OzwvY29kZT48L2g0PgoKCTxwPlJldHVybnMgdGhlIGRlc2NyaXB0 aW9uIG9mIHRoZSBwbHVnaW4gYmVpbmcgZGlzcGxheWVkLiBVc3VhbGx5IHVzZWQgaW4gdGhl IHBsdWdpbiBmb3JtLiBBdHRyaWJ1dGVzIGZvbGxvdy48L3A+CgoJPHA+PHN0cm9uZz5lc2Nh cGU8L3N0cm9uZz48YnIgLz4KRXNjYXBlIHRoZSAoWClIVE1MIG1hcmt1cC4gQXZhaWxhYmxl IHZhbHVlcyA8Y29kZT5odG1sPC9jb2RlPiBhbmQgdW5zZXQgKDxjb2RlPiZxdW90OyZxdW90 OzwvY29kZT4pLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5lc2NhcGU9JnF1b3Q7aHRtbCZxdW90 OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7JnF1b3Q7PC9jb2RlPjwvcD4KCgk8aDQg aWQ9InR4cC1yYWgtcGx1Z2luLWhlbHAiPjxjb2RlPiZsdDt0eHA6cmFoX3BsdWdpbl9oZWxw IC8mZ3Q7PC9jb2RlPjwvaDQ+CgoJPHA+UmV0dXJucyB0aGUgaGVscCBkb2Mgb2YgdGhlIHBs dWdpbiBiZWluZyBkaXNwbGF5ZWQuIFVzdWFsbHkgdXNlZCBpbiB0aGUgcGx1Z2luIGZvcm0u IEF0dHJpYnV0ZXMgZm9sbG93LjwvcD4KCgk8cD48c3Ryb25nPnRleHRpbGU8L3N0cm9uZz48 YnIgLz4KVGV4dGlsZSB0aGUgaGVscCBjb250ZW50LiBBdmFpbGFibGUgdmFsdWVzIDxjb2Rl PjE8L2NvZGU+ICh5ZXMsIFRleHRpbGUgaXQpIGFuZCA8Y29kZT4wPC9jb2RlPiAoZG9uJiM4 MjE3O3QgVGV4dGlsZSkuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPnRleHRpbGU9JnF1b3Q7MCZx dW90OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7MSZxdW90OzwvY29kZT48L3A+CgoJ PHA+PHN0cm9uZz5hdXRvX3RleHRpbGU8L3N0cm9uZz48YnIgLz4KVGV4dGlsZSB0aGUgaGVs cCBjb250ZW50IGlmIGl0IGNvbnRhaW5zIDxjb2RlPmgxLjwvY29kZT4uIEF2YWlsYWJsZSB2 YWx1ZXMgPGNvZGU+MTwvY29kZT4gKHllcywgYXV0byBUZXh0aWxlKSBhbmQgPGNvZGU+MDwv Y29kZT4gKGRvbiYjODIxNzt0IHVzZSBhdXRvIFRleHRpbGUpLjxiciAvPgpEZWZhdWx0OiA8 Y29kZT5hdXRvX3RleHRpbGU9JnF1b3Q7MSZxdW90OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+ JnF1b3Q7MCZxdW90OzwvY29kZT48L3A+CgoJPGg0IGlkPSJ0eHAtcmFoLXBsdWdpbi1jb2Rl Ij48Y29kZT4mbHQ7dHhwOnJhaF9wbHVnaW5fY29kZSAvJmd0OzwvY29kZT48L2g0PgoKCTxw PlJldHVybnMgdGhlIGNvZGUgb2YgdGhlIHBsdWdpbiBiZWluZyBkaXNwbGF5ZWQuIFRoZSB0 YWcgaXMgdXN1YWxseSB1c2VkIGluIHRoZSBwbHVnaW4gZm9ybS4gQXR0cmlidXRlcyBmb2xs b3cuPC9wPgoKCTxwPjxzdHJvbmc+ZXNjYXBlPC9zdHJvbmc+PGJyIC8+CkVzY2FwZSB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlhIVE1MPC9zcGFuPiBtYXJrdXAuIEF2YWlsYWJsZSB2YWx1 ZXMgPGNvZGU+aHRtbDwvY29kZT4gKGVjYXBlIGl0LCByZWNvbW1lbmRlZCkgYW5kIDxjb2Rl PiZxdW90OyZxdW90OzwvY29kZT4gKHVuc2V0KS48YnIgLz4KRGVmYXVsdDogPGNvZGU+ZXNj YXBlPSZxdW90O2h0bWwmcXVvdDs8L2NvZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90OyZxdW90 OzwvY29kZT48L3A+CgoJPHA+PHN0cm9uZz5oaWdobGlnaHQ8L3N0cm9uZz48YnIgLz4KSGln aGxpZ2h0IChjb2xvcml6ZSkgdGhlIHBsdWdpbiBjb2RlLiBWYWx1ZXM6IDxjb2RlPjA8L2Nv ZGU+IChubykgYW5kIDxjb2RlPjE8L2NvZGU+ICh5ZXMpLjxiciAvPgpEZWZhdWx0OiA8Y29k ZT5oaWdobGlnaHQ9JnF1b3Q7MCZxdW90OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7 MSZxdW90OzwvY29kZT48L3A+CgoJPGg0IGlkPSJ0eHAtcmFoLXBsdWdpbi1yZXN0b3JlIj48 Y29kZT4mbHQ7dHhwOnJhaF9wbHVnaW5fcmVzdG9yZSAvJmd0OzwvY29kZT48L2g0PgoKCTxw PlJldHVybnMgdGhlIHJlc3RvcmUgcG9pbnQgY29kZSBvZiB0aGUgcGx1Z2luIGJlaW5nIGRp c3BsYXllZC4gVGhlIHRhZyBpcyB1c3VhbGx5IHVzZWQgaW4gdGhlIHBsdWdpbiBmb3JtLiBB dHRyaWJ1dGVzIGZvbGxvdy48L3A+CgoJPHA+PHN0cm9uZz5lc2NhcGU8L3N0cm9uZz48YnIg Lz4KRXNjYXBlIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+WEhUTUw8L3NwYW4+IG1hcmt1cC4g QXZhaWxhYmxlIHZhbHVlcyA8Y29kZT5odG1sPC9jb2RlPiAoZWNhcGUgaXQsIHJlY29tbWVu ZGVkKSBhbmQgPGNvZGU+JnF1b3Q7JnF1b3Q7PC9jb2RlPiAodW5zZXQpLjxiciAvPgpEZWZh dWx0OiA8Y29kZT5lc2NhcGU9JnF1b3Q7aHRtbCZxdW90OzwvY29kZT4gRXhhbXBsZTogPGNv ZGU+JnF1b3Q7JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD48c3Ryb25nPmhpZ2hsaWdodDwvc3Ry b25nPjxiciAvPgpIaWdobGlnaHQgKGNvbG9yaXplKSB0aGUgcGx1Z2luIGNvZGUuIFZhbHVl czogPGNvZGU+MDwvY29kZT4gKG5vKSBhbmQgPGNvZGU+MTwvY29kZT4gKHllcykuPGJyIC8+ CkRlZmF1bHQ6IDxjb2RlPmhpZ2hsaWdodD0mcXVvdDswJnF1b3Q7PC9jb2RlPiBFeGFtcGxl OiA8Y29kZT4mcXVvdDsxJnF1b3Q7PC9jb2RlPjwvcD4KCgk8aDQgaWQ9InR4cC1yYWgtcGx1 Z2luLWNvZGUtbWQ1Ij48Y29kZT4mbHQ7dHhwOnJhaF9wbHVnaW5fY29kZV9tZDUgLyZndDs8 L2NvZGU+PC9oND4KCgk8cD5SZXR1cm5zIHRoZSBNRDUgaGFzaCBvZiB0aGUgcGx1Z2luIGJl aW5nIGRpc3BsYXllZC4gVGhlIHRhZyBpcyB1c3VhbGx5IHVzZWQgaW4gdGhlIHBsdWdpbiBm b3JtLiBUaGUgdGFnIGhhcyBubyBhdHRyaWJ1dGVzLjwvcD4KCgk8aDQgaWQ9InR4cC1yYWgt cGx1Z2luLXR5cGUiPjxjb2RlPiZsdDt0eHA6cmFoX3BsdWdpbl90eXBlIC8mZ3Q7PC9jb2Rl PjwvaDQ+CgoJPHA+UmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgcGx1Z2luIGJlaW5nIGRpc3Bs YXllZC4gVGhlIHRhZyBpcyB1c3VhbGx5IHVzZWQgaW4gdGhlIHBsdWdpbiBmb3JtLiBBdHRy aWJ1dGVzIGZvbGxvdy48L3A+CgoJPHA+PHN0cm9uZz50eXBlczwvc3Ryb25nPjxiciAvPgpT ZXQgdGhlIGFycmF5IG9mIHR5cGUgbmFtZXMuIEVhY2ggaXRlbSBpcyBjb21tYSBzZXBlcmF0 ZWQuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPnR5cGVzPSZxdW90O0NsaWVudCBzaWRlLEFkbWlu L0NsaWVudCBzaWRlLExpYnJhcnksQWRtaW4gb25seSZxdW90OzwvY29kZT4gRXhhbXBsZTog PGNvZGU+JnF1b3Q7RnJvbnQsQWxsLExpYixCYWNrJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD48 c3Ryb25nPm51bWJlcjwvc3Ryb25nPjxiciAvPgpXaGF0IHRvIGRpc3BsYXkuIERpc3BsYXkg bnVtYmVycyAoPGNvZGU+MDwvY29kZT4sQDFAKSBvciB0aGUgdGV4dCBsYWJlbHMgZGVmaW5l ZCBpbiA8Y29kZT50eXBlczwvY29kZT4uIEF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjA8L2Nv ZGU+IChkaXNwbGF5IHRleHQgbGFiZWxzKSBhbmQgPGNvZGU+MTwvY29kZT4gKGRpc3BsYXkg bnVtYmVycykuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPm51bWJlcj0mcXVvdDswJnF1b3Q7PC9j b2RlPiBFeGFtcGxlOiA8Y29kZT4mcXVvdDsxJnF1b3Q7PC9jb2RlPjwvcD4KCgk8aDQgaWQ9 InR4cC1yYWgtcGx1Z2luLWxvYWQtb3JkZXIiPjxjb2RlPiZsdDt0eHA6cmFoX3BsdWdpbl9s b2FkX29yZGVyIC8mZ3Q7PC9jb2RlPjwvaDQ+CgoJPHA+UmV0dXJucyB0aGUgbG9hZCBvcmRl ciBvZiB0aGUgcGx1Z2luIGJlaW5nIGRpc3BsYXllZC4gVXN1YWxseSB1c2VkIGluIHRoZSBw bHVnaW4gZm9ybS4gVGhlIHRhZyBoYXMgbm8gYXR0cmlidXRlcy48L3A+CgoJPGg0IGlkPSJ0 eHAtcmFoLXBsdWdpbi1pZi1maXJzdCI+PGNvZGU+Jmx0O3R4cDpyYWhfcGx1Z2luX2lmX2Zp cnN0Jmd0OyMjIyZsdDsvdHhwOnJhaF9wbHVnaW5faWZfZmlyc3QmZ3Q7PC9jb2RlPjwvaDQ+ CgoJPHA+VGhlIHRhZyB3aWxsIGV4ZWN1dGUgdGhlIGNvbnRhaW5lZCBzdGF0ZW1lbnQgaWYg dGhlIGRpc3BsYXllZCBwbHVnaW4gaXMgdGhlIGZpcnN0IGluIHRoZSBjdXJyZW50bHkgZGlz cGxheWVkIGxpc3QuIFVzdWFsbHkgdXNlZCBpbiB0aGUgcGx1Z2luIGZvcm0uIFRoZSB0YWcg aGFzIG5vIGF0dHJpYnV0ZXMuIFN1cHBvcnRzIDxjb2RlPiZsdDt0eHA6ZWxzZSAvJmd0Ozwv Y29kZT4uPC9wPgoKCTxoNCBpZD0idHhwLXJhaC1wbHVnaW4taWYtbGFzdCI+PGNvZGU+Jmx0 O3R4cDpyYWhfcGx1Z2luX2lmX2xhc3QmZ3Q7IyMjJmx0Oy90eHA6cmFoX3BsdWdpbl9pZl9s YXN0Jmd0OzwvY29kZT48L2g0PgoKCTxwPlRoZSB0YWcgd2lsbCBleGVjdXRlIHRoZSBjb250 YWluZWQgc3RhdGVtZW50IGlmIHRoZSBkaXNwbGF5ZWQgcGx1Z2luIGlzIHRoZSBsYXN0IGlu IHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIGxpc3QuIFVzdWFsbHkgdXNlZCBpbiB0aGUgcGx1 Z2luIGZvcm0uIFRoZSB0YWcgaGFzIG5vIGF0dHJpYnV0ZXMuIFN1cHBvcnRzIDxjb2RlPiZs dDt0eHA6ZWxzZSAvJmd0OzwvY29kZT4uPC9wPgoKCTxoNCBpZD0idHhwLXJhaC1wbHVnaW4t aWYtaW5kaXZpZHVhbCI+PGNvZGU+Jmx0O3R4cDpyYWhfcGx1Z2luX2lmX2luZGl2aWR1YWwm Z3Q7IyMjJmx0Oy90eHA6cmFoX3BsdWdpbl9pZl9pbmRpdmlkdWFsJmd0OzwvY29kZT48L2g0 PgoKCTxwPlRoZSB0YWcgd2lsbCBleGVjdXRlIHRoZSBjb250YWluZWQgc3RhdGVtZW50IGlm IGFuIGluZGl2aWR1YWwgcGx1Z2luIHBhZ2UgaXMgYmVpbmcgZGlzcGxheWVkLiBVc3VhbGx5 IHVzZWQgaW4gdGhlIHBsdWdpbiBmb3JtLiBUaGUgdGFnIGhhcyBubyBhdHRyaWJ1dGVzLiBT dXBwb3J0cyA8Y29kZT4mbHQ7dHhwOmVsc2UgLyZndDs8L2NvZGU+LjwvcD4KCgk8aDQgaWQ9 InR4cC1yYWgtcGx1Z2luLWlmLWxpc3QiPjxjb2RlPiZsdDt0eHA6cmFoX3BsdWdpbl9pZl9s aXN0Jmd0OyMjIyZsdDsvdHhwOnJhaF9wbHVnaW5faWZfbGlzdCZndDs8L2NvZGU+PC9oND4K Cgk8cD5UaGUgdGFnIHdpbGwgZXhlY3V0ZSB0aGUgY29udGFpbmVkIHN0YXRlbWVudCBpZiBh biBwbHVnaW4gbGlzdCBpcyBiZWluZyBkaXNwbGF5ZWQgKG5vdCBzaG93aW5nIGFuIGluZGl2 aWR1YWwgY29udGV4dCkuIFVzdWFsbHkgdXNlZCBpbiB0aGUgcGx1Z2luIGZvcm0uIFRoZSB0 YWcgaGFzIG5vIGF0dHJpYnV0ZXMuIFN1cHBvcnRzIDxjb2RlPiZsdDt0eHA6ZWxzZSAvJmd0 OzwvY29kZT4uPC9wPgoKCTxoNCBpZD0idHhwLXJhaC1wbHVnaW4tcGFnZS1wcmV2Ij48Y29k ZT4mbHQ7dHhwOnJhaF9wbHVnaW5fcGFnZV9wcmV2IC8mZ3Q7PC9jb2RlPjwvaDQ+CgoJPHA+ T3V0cHV0IG5hdmlnYXRpb24gbGluayB0byBuZXh0IHBhZ2UuIFdvcmtzIGluIGJvdGgsIGlu ZGl2aWR1YWwgYW5kIGxpc3QgY29udGV4dC4gVGhlIHRhZyBoYXMgbm8gYXR0cmlidXRlcy48 L3A+CgoJPGg0IGlkPSJ0eHAtcmFoLXBsdWdpbi1wYWdlLW5leHQiPjxjb2RlPiZsdDt0eHA6 cmFoX3BsdWdpbl9wYWdlX25leHQgLyZndDs8L2NvZGU+PC9oND4KCgk8cD5PdXRwdXQgbmF2 aWdhdGlvbiBsaW5rIHRvIG5leHQgcGFnZS4gV29ya3MgaW4gYm90aCwgaW5kaXZpZHVhbCBh bmQgbGlzdCBjb250ZXh0LiBUaGUgdGFnIGhhcyBubyBhdHRyaWJ1dGVzLjwvcD4KCgk8aDMg aWQ9ImV4YW1wbGUiPkV4YW1wbGVzPC9oMz4KCgk8cD48c3Ryb25nPkRpc3BsYXkgY29udGV4 dCBzZW5zaXRpdmUgbGlzdCBvZiBwbHVnaW5zPC9zdHJvbmc+PC9wPgoKPHByZT48Y29kZT4m bHQ7dHhwOnJhaF9wbHVnaW5fbGlzdCZndDsKCSZsdDtoMyZndDsKCQkmbHQ7dHhwOnJhaF9w bHVnaW5fcGVybWxpbmsmZ3Q7CgkJCSZsdDt0eHA6cmFoX3BsdWdpbl9uYW1lIC8mZ3Q7CgkJ Jmx0Oy90eHA6cmFoX3BsdWdpbl9wZXJtbGluayZndDsKCSZsdDsvaDMmZ3Q7CgkmbHQ7cCZn dDsKCQlieQoJCSZsdDt0eHA6cmFoX3BsdWdpbl9hdXRob3JfdXJpJmd0OwoJCQkmbHQ7dHhw OnJhaF9wbHVnaW5fYXV0aG9yIC8mZ3Q7CgkJJmx0Oy90eHA6cmFoX3BsdWdpbl9hdXRob3Jf dXJpJmd0OwoJJmx0Oy9wJmd0OwoJJmx0O3R4cDpyYWhfcGx1Z2luX2lmX2luZGl2aWR1YWwm Z3Q7CgkJJmx0O3R4cDpyYWhfcGx1Z2luX2hlbHAgLyZndDsKCSZsdDsvdHhwOnJhaF9wbHVn aW5faWZfaW5kaXZpZHVhbCZndDsKJmx0Oy90eHA6cmFoX3BsdWdpbl9saXN0Jmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+PHN0cm9uZz5EaXNwbGF5IGNvbnRleHQgaW5zZXNpdGl2ZSBsaXN0 IG9mIGxpbmtzLCBsaW1pdGVkIGJ5IDxjb2RlPmF1dGhvcjwvY29kZT4gYXR0cmlidXRlPC9z dHJvbmc+PC9wPgoKPHByZT48Y29kZT4mbHQ7dWwmZ3Q7CgkmbHQ7dHhwOnJhaF9wbHVnaW5f bGlzdF9jdXN0b20gbGltaXQ9JnF1b3Q7NSZxdW90OyBhdXRob3I9JnF1b3Q7Sm9obiBEb2Um cXVvdDsmZ3Q7CgkJJmx0O2xpJmd0OwoJCQkmbHQ7YSB0aXRsZT0mcXVvdDtWaWV3IGRldGFp bHMmcXVvdDsgaHJlZj0mcXVvdDsmbHQ7dHhwOnJhaF9wbHVnaW5fcGVybWxpbmsgLyZndDsm cXVvdDsmZ3Q7CgkJCQkmbHQ7dHhwOnJhaF9wbHVnaW5fbmFtZSAvJmd0OwoJCQkmbHQ7L2Em Z3Q7CgkJJmx0Oy9saSZndDsKCSZsdDsvdHhwOnJhaF9wbHVnaW5fbGlzdCZndDsKJmx0Oy91 bCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPjxzdHJvbmc+U2hvdyBQYWdpbmF0aW9uIG5hdmln YXRpb248L3N0cm9uZz48L3A+CgoJPHA+VGhlIHBsdWdpbiBsaXN0aW5nLiBVc2VzIDxjb2Rl Pm15X3BsdWdpbl9saXN0PC9jb2RlPiBmb3JtOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpy YWhfcGx1Z2luX2xpc3QgYWxsb3dfcGFnaW5hdGlvbj0mcXVvdDsxJnF1b3Q7IGxpbWl0PSZx dW90OzUmcXVvdDsgZm9ybT0mcXVvdDtteV9wbHVnaW5fbGlzdCZxdW90OyAvJmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+Q29kZSBmb3IgdGhlIG5hdmlnYXRpb24gbGlua3M6PC9wPgoKPHBy ZT48Y29kZT4mbHQ7dHhwOnJhaF9wbHVnaW5fcGFnZV9wcmV2Jmd0O1ByZXYmbHQ7L3R4cDpy YWhfcGx1Z2luX3BhZ2VfcHJldiZndDsKJmx0O3R4cDpyYWhfcGx1Z2luX3BhZ2VfbmV4dCZn dDtOZXh0Jmx0Oy90eHA6cmFoX3BsdWdpbl9wYWdlX25leHQmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8aDMgaWQ9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMz4KCgk8cD5ObyAwLjEgLXNlcmll cyByZWxlYXNlcyB5ZXQuIEJldGFzIGZvbGxvdy48L3A+CgoJPHA+PHN0cm9uZz5WZXJzaW9u IDAuMWIgUkMyPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+Q29tcGluZWQgPGNvZGU+cGx1 Z2luIGNvZGU8L2NvZGU+IGhpZ2hsaWdodGluZ3MgYW5kIHNob3dpbmdzLjwvbGk+CgkJPGxp PkZpcnN0IHJlbGVhc2UgY2FuZGl0YXRlIG9mIGVycm9yIHRyaWdnZXJpbmcvcmVwb3J0aW5n LjwvbGk+Cgk8L3VsPgoKCTxwPjxzdHJvbmc+VmVyc2lvbiAwLjFiIHByZSBSQzwvc3Ryb25n PjwvcD4KCgk8dWw+CgkJPGxpPkZpcnN0IHB1YmxpYyBiZXRhPC9saT4KCTwvdWw+IjtzOjQ6 ImNvZGUiO3M6MTMyOTQ6IgkjIyMjIyMjIyMjIyMjIyMjIyMNCgkjDQoJIwlyYWhfcGx1Z2lu LXBsdWdpbiBmb3IgVGV4dHBhdHRlcm4NCgkjCXZlcnNpb24gMC4xYiBwcmUgUkMyDQoJIwli eSBKdWtrYSBTdmFobg0KCSMJaHR0cDovL3JhaGZvcnVtLmJpeg0KCSMNCgkjIyMjIyMjIyMj IyMjIyMjIyMjDQoNCglyYWhfcGx1Z2luX3ByZXRleHQoKTsNCglnbG9iYWwgJHJhaF9wbHVn aW5fcHJldGV4dDsNCg0KCWZ1bmN0aW9uIHJhaF9wbHVnaW5fbGlzdCgkYXR0cywkdGhpbmc9 JycpIHsNCgkJcmV0dXJuIHJhaF9wbHVnaW5fZG9fbGlzdCgkYXR0cywkdGhpbmcsZmFsc2Up Ow0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9wbHVnaW5fbGlzdF9jdXN0b20oJGF0dHMsJHRoaW5n PScnKSB7DQoJCXJldHVybiByYWhfcGx1Z2luX2RvX2xpc3QoJGF0dHMsJHRoaW5nLHRydWUp Ow0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9wbHVnaW5fcGVybWxpbmsoJGF0dHMsJHRoaW5nPScn KSB7DQoJCWdsb2JhbCAkcmFoX3RoaXNwbHVnaW47DQoJCWV4dHJhY3QobEF0dHMoYXJyYXko DQoJCQknbmFtZScgPT4gJycNCgkJKSwgJGF0dHMpKTsNCgkJJHVybCA9ICgkbmFtZSkgPyBy YWhfcGx1Z2luX2xpYl91cmwoJG5hbWUpIDogcmFoX3BsdWdpbl9saWJfdXJsKCRyYWhfdGhp c3BsdWdpblsnbmFtZSddKTsNCgkJcmV0dXJuIA0KCQkJKCR0aGluZykgPyANCgkJCQknPGEg aHJlZj0iJy4kdXJsLiciPicucGFyc2UoJHRoaW5nKS4nPC9hPicNCgkJCToNCgkJCQkkdXJs DQoJCQk7DQoJfQ0KDQoJZnVuY3Rpb24gcmFoX3BsdWdpbl9uYW1lKCRhdHRzKSB7DQoJCWds b2JhbCAkcmFoX3RoaXNwbHVnaW47DQoJCXJhaF9wbHVnaW5fZXZ1bGF0ZV9lcnJvcigpOw0K CQlyZXR1cm4gJHJhaF90aGlzcGx1Z2luWyduYW1lJ107DQoJfQ0KDQoJZnVuY3Rpb24gcmFo X3BsdWdpbl9wcmVmaXgoJGF0dHMpIHsNCgkJZ2xvYmFsICRyYWhfdGhpc3BsdWdpbjsNCgkJ cmFoX3BsdWdpbl9ldnVsYXRlX2Vycm9yKCk7DQoJCXJldHVybiAkcmFoX3RoaXNwbHVnaW5b J3ByZWZpeCddOw0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9wbHVnaW5fc3RhdHVzKCRhdHRzKSB7 DQoJCWdsb2JhbCAkcmFoX3RoaXNwbHVnaW47DQoJCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJ CQknc3RhdHVzXzEnID0+ICdBY3RpdmUnLA0KCQkJJ3N0YXR1c18wJyA9PiAnRGlzYWJsZWQn LA0KCQkJJ251bWJlcicgPT4gMA0KCQkpLCAkYXR0cykpOw0KCQlyYWhfcGx1Z2luX2V2dWxh dGVfZXJyb3IoKTsNCgkJaWYoJG51bWJlciA9PSAxKSByZXR1cm4gJHJhaF90aGlzcGx1Z2lu WydzdGF0dXMnXTsNCgkJZWxzZSB7DQoJCQlpZigkcmFoX3RoaXNwbHVnaW5bJ3N0YXR1cydd ID09IDEpIHJldHVybiAkc3RhdHVzXzE7DQoJCQlpZigkcmFoX3RoaXNwbHVnaW5bJ3N0YXR1 cyddID09IDApIHJldHVybiAkc3RhdHVzXzA7DQoJCX0NCgl9DQoNCglmdW5jdGlvbiByYWhf cGx1Z2luX2F1dGhvcigkYXR0cykgew0KCQlnbG9iYWwgJHJhaF90aGlzcGx1Z2luOw0KCQll eHRyYWN0KGxBdHRzKGFycmF5KA0KCQkJJ2VzY2FwZScgPT4gJ2h0bWwnDQoJCSksICRhdHRz KSk7DQoJCXJhaF9wbHVnaW5fZXZ1bGF0ZV9lcnJvcigpOw0KCQlyZXR1cm4gDQoJCQkoJGVz Y2FwZSkgPyANCgkJCQlodG1sc3BlY2lhbGNoYXJzKCRyYWhfdGhpc3BsdWdpblsnYXV0aG9y J10pDQoJCQk6DQoJCQkJJHJhaF90aGlzcGx1Z2luWydhdXRob3InXQ0KCQk7DQoJfQ0KDQoJ ZnVuY3Rpb24gcmFoX3BsdWdpbl9hdXRob3JfdXJpKCRhdHRzLCR0aGluZz0nJykgew0KCQln bG9iYWwgJHJhaF90aGlzcGx1Z2luOw0KCQlleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkJJ2Vz Y2FwZScgPT4gJ2h0bWwnDQoJCSksICRhdHRzKSk7DQoJCXJhaF9wbHVnaW5fZXZ1bGF0ZV9l cnJvcigpOw0KCQkkdXJsID0gKCRlc2NhcGUpID8gaHRtbHNwZWNpYWxjaGFycygkcmFoX3Ro aXNwbHVnaW5bJ3VyaSddKSA6ICRyYWhfdGhpc3BsdWdpblsndXJpJ107DQoJCXJldHVybiAN CgkJCSgkdGhpbmcpID8gDQoJCQkJJzxhIGhyZWY9IicuJHVybC4nIj4nLnBhcnNlKCR0aGlu ZykuJzwvYT4nDQoJCQk6DQoJCQkJJHVybA0KCQk7DQoJfQ0KDQoJZnVuY3Rpb24gcmFoX3Bs dWdpbl92ZXJzaW9uKCRhdHRzKSB7DQoJCWdsb2JhbCAkcmFoX3RoaXNwbHVnaW47DQoJCXJh aF9wbHVnaW5fZXZ1bGF0ZV9lcnJvcigpOw0KCQlyZXR1cm4gJHJhaF90aGlzcGx1Z2luWyd2 ZXJzaW9uJ107DQoJfQ0KDQoJZnVuY3Rpb24gcmFoX3BsdWdpbl9kZXNjcmlwdGlvbigkYXR0 cykgew0KCQlnbG9iYWwgJHJhaF90aGlzcGx1Z2luOw0KCQlleHRyYWN0KGxBdHRzKGFycmF5 KA0KCQkJJ2VzY2FwZScgPT4gJ2h0bWwnDQoJCSksICRhdHRzKSk7DQoJCXJhaF9wbHVnaW5f ZXZ1bGF0ZV9lcnJvcigpOw0KCQlyZXR1cm4gKCRlc2NhcGUpID8gaHRtbHNwZWNpYWxjaGFy cygkcmFoX3RoaXNwbHVnaW5bJ2Rlc2NyaXB0aW9uJ10pIDogJHJhaF90aGlzcGx1Z2luWydk ZXNjcmlwdGlvbiddOw0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9wbHVnaW5faGVscCgkYXR0cykg ew0KCQlnbG9iYWwgJHJhaF90aGlzcGx1Z2luOw0KCQlleHRyYWN0KGxBdHRzKGFycmF5KA0K CQkJJ3RleHRpbGUnID0+IDAsDQoJCQknYXV0b190ZXh0aWxlJyA9PiAxDQoJCSksICRhdHRz KSk7DQoJCXJhaF9wbHVnaW5fZXZ1bGF0ZV9lcnJvcigpOw0KCQkkaGVscCA9IGZldGNoKCdo ZWxwJywndHhwX3BsdWdpbicsJ25hbWUnLCRyYWhfdGhpc3BsdWdpblsnbmFtZSddKTsNCgkJ aWYoJGF1dG9fdGV4dGlsZSA9PSAxKSByZXR1cm4gcmFoX3BsdWdpbl9saWJfdGV4dGlsZSgk aGVscCk7DQoJCWVsc2VpZigkdGV4dGlsZSA9PSAxKSByZXR1cm4gcmFoX3BsdWdpbl9saWJf dGV4dGlsZSgkaGVscCwxKTsNCgkJZWxzZSByZXR1cm4gJGhlbHA7DQoJfQ0KDQoJZnVuY3Rp b24gcmFoX3BsdWdpbl9jb2RlKCRhdHRzKSB7DQoJCXJhaF9wbHVnaW5fbGliX3Nob3dfY29k ZSgkYXR0cywnY29kZScpOw0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9wbHVnaW5fY29kZV9yZXN0 b3JlKCRhdHRzKSB7DQoJCXJhaF9wbHVnaW5fbGliX3Nob3dfY29kZSgkYXR0cywnY29kZV9y ZXN0b3JlJyk7DQoJfQ0KDQoJZnVuY3Rpb24gcmFoX3BsdWdpbl9jb2RlX21kNSgkYXR0cykg ew0KCQlnbG9iYWwgJHJhaF90aGlzcGx1Z2luOw0KCQlyYWhfcGx1Z2luX2V2dWxhdGVfZXJy b3IoKTsNCgkJcmV0dXJuIGZldGNoKCdjb2RlX21kNScsJ3R4cF9wbHVnaW4nLCduYW1lJywk cmFoX3RoaXNwbHVnaW5bJ25hbWUnXSk7DQoJfQ0KDQoJZnVuY3Rpb24gcmFoX3BsdWdpbl90 eXBlKCRhdHRzKSB7DQoJCWdsb2JhbCAkcmFoX3RoaXNwbHVnaW47DQoJCWV4dHJhY3QobEF0 dHMoYXJyYXkoDQoJCQkndHlwZXMnID0+ICdDbGllbnQgc2lkZSxBZG1pbi9DbGllbnQgc2lk ZSxMaWJyYXJ5LEFkbWluIG9ubHknLA0KCQkJJ251bWJlcicgPT4gMA0KCQkpLCRhdHRzKSk7 DQoJCXJhaF9wbHVnaW5fZXZ1bGF0ZV9lcnJvcigpOw0KCQkkdHlwZSA9IGV4cGxvZGUoJywn LCR0eXBlcyk7DQoJCSRudW0gPSAkcmFoX3RoaXNwbHVnaW5bJ3R5cGUnXTsNCgkJaWYoJG51 bWJlciA9PSAwKSByZXR1cm4gKGlzc2V0KCR0eXBlWyRudW1dKSkgPyAkdHlwZVskbnVtXSA6 ICcnOw0KCQllbHNlIHJldHVybiAkbnVtOw0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9wbHVnaW5f bG9hZF9vcmRlcigkYXR0cykgew0KCQlnbG9iYWwgJHJhaF90aGlzcGx1Z2luOw0KCQlyYWhf cGx1Z2luX2V2dWxhdGVfZXJyb3IoKTsNCgkJcmV0dXJuICRyYWhfdGhpc3BsdWdpblsnb3Jk ZXInXTsNCgl9DQoNCglmdW5jdGlvbiByYWhfcGx1Z2luX2lmX2ZpcnN0KCRhdHRzLCR0aGlu Zz0nJykgew0KCQlnbG9iYWwgJHJhaF90aGlzcGx1Z2luOw0KCQlyZXR1cm4gcGFyc2UoRXZh bEVsc2UoJHRoaW5nLCRyYWhfdGhpc3BsdWdpblsnaXNfZmlyc3QnXSA9PSB0cnVlKSk7DQoJ fQ0KDQoJZnVuY3Rpb24gcmFoX3BsdWdpbl9pZl9sYXN0KCRhdHRzLCR0aGluZz0nJykgew0K CQlnbG9iYWwgJHJhaF90aGlzcGx1Z2luOw0KCQlyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRo aW5nLCRyYWhfdGhpc3BsdWdpblsnaXNfbGFzdCddID09IHRydWUpKTsNCgl9DQoNCglmdW5j dGlvbiByYWhfcGx1Z2luX2lmX2luZGl2aWR1YWwoJGF0dHMsJHRoaW5nPScnKSB7DQoJCWds b2JhbCAkcmFoX3BsdWdpbl9wcmV0ZXh0Ow0KCQlyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRo aW5nLCRyYWhfcGx1Z2luX3ByZXRleHRbJ25hbWUnXSkpOw0KCX0NCg0KCWZ1bmN0aW9uIHJh aF9wbHVnaW5faWZfbGlzdCgkYXR0cywkdGhpbmc9JycpIHsNCgkJZ2xvYmFsICRyYWhfcGx1 Z2luX3ByZXRleHQ7DQoJCXJldHVybiBwYXJzZShFdmFsRWxzZSgkdGhpbmcsZW1wdHkoJHJh aF9wbHVnaW5fcHJldGV4dFsnbmFtZSddKSkpOw0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9wbHVn aW5fcGFnZV9uZXh0KCRhdHRzLCR0aGluZz0nJykgew0KCQlnbG9iYWwgJHJhaF9wbHVnaW5f cHJldGV4dDsNCgkJaWYoJHJhaF9wbHVnaW5fcHJldGV4dFsnbmFtZSddKSB7DQoJCQ0KCQl9 IGVsc2Ugew0KCQkJDQoJCQlpZigkcmFoX3BsdWdpbl9wcmV0ZXh0WyduZXh0X3BhZ2UnXSkN CgkJCQlyZXR1cm4gDQoJCQkJCSgkdGhpbmcpID8gDQoJCQkJCQknPGEgaHJlZj0nLnJhaF9w bHVnaW5fbGliX3VybCgnJywkcmFoX3BsdWdpbl9wcmV0ZXh0WyduZXh0X3BhZ2UnXSkuJyI+ Jy5wYXJzZSgkdGhpbmcpLic8L2E+Jw0KCQkJCQk6DQoJCQkJCQlyYWhfcGx1Z2luX2xpYl91 cmwoJycsJHJhaF9wbHVnaW5fcHJldGV4dFsnbmV4dF9wYWdlJ10pDQoJCQkJOw0KCQl9DQoJ fQ0KDQoJZnVuY3Rpb24gcmFoX3BsdWdpbl9wYWdlX3ByZXYoJGF0dHMsJHRoaW5nPScnKSB7 DQoJCWdsb2JhbCAkcmFoX3BsdWdpbl9wcmV0ZXh0Ow0KCQlpZigkcmFoX3BsdWdpbl9wcmV0 ZXh0WyduYW1lJ10pIHsNCgkJfSBlbHNlIHsNCgkJCQ0KCQkJaWYoJHJhaF9wbHVnaW5fcHJl dGV4dFsncHJldl9wYWdlJ10pIHsNCgkJCQkkcGcgPSAoJHJhaF9wbHVnaW5fcHJldGV4dFsn cHJldl9wYWdlJ10gPT0gMSkgPyAnJyA6ICRyYWhfcGx1Z2luX3ByZXRleHRbJ3ByZXZfcGFn ZSddOw0KCQkJCXJldHVybiANCgkJCQkJKCR0aGluZykgPyANCgkJCQkJCSc8YSBocmVmPScu cmFoX3BsdWdpbl9saWJfdXJsKCcnLCRwZykuJyI+Jy5wYXJzZSgkdGhpbmcpLic8L2E+Jw0K CQkJCQk6DQoJCQkJCQlyYWhfcGx1Z2luX2xpYl91cmwoJycsJHBnKQ0KCQkJCTsNCgkJCX0N CgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9wbHVnaW5fZG9fbGlzdCgkYXR0cz1hcnJheSgp LCR0aGluZz0nJywkcmFoX3BsdWdpbl9pc19jdXN0b209ZmFsc2UpIHsNCgkJZ2xvYmFsICRy YWhfdGhpc3BsdWdpbiwkcHJldGV4dCwkcmFoX3BsdWdpbl9wcmV0ZXh0Ow0KCQlleHRyYWN0 KGxBdHRzKGFycmF5KA0KCQkJJ2Zvcm0nID0+ICdwbHVnaW4nLA0KCQkJJ2xpbWl0JyA9PiAx MCwNCgkJCSdvZmZzZXQnID0+IDAsDQoJCQknc29ydCcgPT4gJ25hbWUgYXNjJywNCgkJCSdu YW1lJyA9PiAnJywNCgkJCSdwZ29ubHknID0+IDAsDQoJCQknc3RhdHVzJyA9PiAnJywNCgkJ CSdhdXRob3InID0+ICcnLA0KCQkJJ2F1dGhvcl91cmknID0+ICcnLA0KCQkJJ3ZlcnNpb24n ID0+ICcnLA0KCQkJJ3ByZWZpeCcgPT4gJycsDQoJCQkndHlwZScgPT4gJycsDQoJCQknb3Jk ZXInID0+ICcnLA0KCQkJJ2FsbG93X3BhZ2luYXRpb24nID0+IDEsDQoJCQknYWxsb3dfc2Vh cmNoJyA9PiAxLA0KCQkJJ3VzZV9wbHVnaW5fZG93bmxvYWRfZmlsdGVyJyA9PiAwLA0KCQkJ J2xhYmVsJyA9PiAnJywNCgkJCSdsYWJlbHRhZycgPT4gJycsDQoJCQknd3JhcHRhZycgPT4g JycsDQoJCQknYnJlYWsnID0+ICcnLA0KCQkJJ2NsYXNzJyA9PiAnJywNCgkJKSwkYXR0cykp Ow0KCQkkc3FsWydzdGFydCddID0gJzE9MSc7DQoJCWlmKCRzdGF0dXMpICRzcWxbJ3N0YXR1 cyddID0gIiBhbmQgc3RhdHVzPSciLmRvU2xhc2goJHN0YXR1cykuIiciOw0KCQlpZigkYXV0 aG9yKSAkc3FsWydhdXRob3InXSA9ICIgYW5kIGF1dGhvcj0nIi5kb1NsYXNoKCRhdXRob3Ip LiInIjsNCgkJaWYoJGF1dGhvcl91cmkpICRzcWxbJ2F1dGhvcl91cmknXSA9ICIgYW5kIGF1 dGhvcl91cmk9JyIuZG9TbGFzaCgkYXV0aG9yX3VyaSkuIiciOw0KCQlpZigkdmVyc2lvbikg JHNxbFsndmVyc2lvbiddID0gIiBhbmQgdmVyc2lvbj0nIi5kb1NsYXNoKCR2ZXJzaW9uKS4i JyI7DQoJCWlmKCR0eXBlKSAkc3FsWyd0eXBlJ10gPSByYWhfcGx1Z2luX2xpYl9idWlsZF9p bl9zcWwoJHR5cGUsJ3R5cGUnKTsNCgkJaWYoJG9yZGVyKSAkc3FsWydvcmRlciddID0gcmFo X3BsdWdpbl9saWJfYnVpbGRfaW5fc3FsKCRvcmRlciwnbG9hZF9vcmRlcicpOw0KCQlpZigk cHJlZml4KSAkc3FsWydwcmVmaXgnXSA9IHJhaF9wbHVnaW5fbGliX2J1aWxkX3ByZWZpeF9z cWwoJHByZWZpeCk7DQoJCWlmKCRwcmV0ZXh0WydxJ10gJiYgJGFsbG93X3NlYXJjaCA9PSAx ICYmICRyYWhfcGx1Z2luX2lzX2N1c3RvbSA9PSBmYWxzZSAmJiAhJHJhaF9wbHVnaW5fcHJl dGV4dFsnbmFtZSddKSB7DQoJCQkkcSA9IGRvU2xhc2goJHByZXRleHRbJ3EnXSk7DQoJCQkk c3FsWydxJ10gPSAiIGFuZCAoZGVzY3JpcHRpb24gcmxpa2UgJyRxJyBvciBoZWxwIHJsaWtl ICckcScgb3IgYXV0aG9yIHJsaWtlICckcScgb3IgbmFtZSBybGlrZSAnJHEnIG9yIGF1dGhv cl91cmkgcmxpa2UgJyRxJykiOw0KCQl9DQoJCWlmKCRuYW1lICYmICRyYWhfcGx1Z2luX2lz X2N1c3RvbSA9PSB0cnVlKSANCgkJCSRzcWxbJ25hbWUnXSA9IHJhaF9wbHVnaW5fbGliX2J1 aWxkX2luX3NxbCgkbmFtZSwnbmFtZScpOw0KCQlpZigkcmFoX3BsdWdpbl9wcmV0ZXh0Wydu YW1lJ10gJiYgJHJhaF9wbHVnaW5faXNfY3VzdG9tID09IGZhbHNlKSB7DQoJCQkkc3FsWydu YW1lJ10gPSAiIGFuZCBuYW1lPSciLmRvU2xhc2goJHJhaF9wbHVnaW5fcHJldGV4dFsnbmFt ZSddKS4iJyI7DQoJCQkkcmFoX3BsdWdpbl9wcmV0ZXh0WyduZXh0X3BhZ2UnXSA9ICcnOw0K CQkJJHJhaF9wbHVnaW5fcHJldGV4dFsncHJldl9wYWdlJ10gPSAnJzsNCgkJfQ0KCQlpZigk dXNlX3BsdWdpbl9kb3dubG9hZF9maWx0ZXIgPT0gMSkgew0KCQkJJGRvd25sb2FkX3ByZWZz ID0gcmFoX3BsdWdpbl9saWJfZG93bmxvYWRfcHJlZnMoKTsNCgkJCWlmKGlzX2FycmF5KCRk b3dubG9hZF9wcmVmcykpIHsNCgkJCQlpZigkZG93bmxvYWRfcHJlZnNbJ3BsdWdpbmFsbCdd ID09IDApIHsNCgkJCQkJaWYoJGRvd25sb2FkX3ByZWZzWydpbmNsdWRlcGx1Z2lucyddICYm ICRkb3dubG9hZF9wcmVmc1sncGx1Z2lucHJlZml4J10gPT0gJycpIHsNCgkJCQkJCSRzcWxb J25hbWUnXSA9IHJhaF9wbHVnaW5fbGliX2J1aWxkX2luX3NxbCgkZG93bmxvYWRfcHJlZnNb J2luY2x1ZGVwbHVnaW5zJ10pOw0KCQkJCQl9DQoJCQkJCWlmKCRkb3dubG9hZF9wcmVmc1sn cGx1Z2lucHJlZml4J10pIHsNCgkJCQkJCSRzcWxbJ3ByZWZpeCddID0gcmFoX3BsdWdpbl9s aWJfYnVpbGRfcHJlZml4X3NxbCgkZG93bmxvYWRfcHJlZnNbJ3BsdWdpbnByZWZpeCddKTsN CgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkkc3FsWydzb3J0J10gPSAiIE9SREVSIEJZ ICIuZG9TbGFzaCgkc29ydCk7DQoJCWlmKCRyYWhfcGx1Z2luX2lzX2N1c3RvbSA9PSBmYWxz ZSkgew0KCQkJaWYoJHByZXRleHRbJ3BnJ10pICRvZmZzZXQgPSAoJHByZXRleHRbJ3BnJ10g PiAwKSA/ICgoJHByZXRleHRbJ3BnJ10qJGxpbWl0KS0kbGltaXQpIDogMDsNCgkJCSRzcWxb J29mZnNldF9saW1pdCddID0gIiBMSU1JVCAkb2Zmc2V0LCAkbGltaXQiOw0KCQl9DQoJCWlm KCRuYW1lIG9yICRyYWhfcGx1Z2luX3ByZXRleHRbJ25hbWUnXSkgJHNxbFsnb2Zmc2V0X2xp bWl0J10gPSAiIExJTUlUIDAsIDEiOw0KCQkkc3FsX3F1ZXJ5ID0gaW1wbG9kZSgnJywkc3Fs KTsNCgkJJHJzID0gc2FmZV9yb3dzX3N0YXJ0KA0KCQkJJ25hbWUsc3RhdHVzLGF1dGhvcixh dXRob3JfdXJpLHZlcnNpb24sZGVzY3JpcHRpb24sdHlwZSxsb2FkX29yZGVyJywNCgkJCSd0 eHBfcGx1Z2luJywNCgkJCSIkc3FsX3F1ZXJ5Ig0KCQkpOw0KCQlpZighJHJhaF9wbHVnaW5f cHJldGV4dFsnbmFtZSddICYmICRyYWhfcGx1Z2luX2lzX2N1c3RvbSA9PSBmYWxzZSAmJiAk YWxsb3dfcGFnaW5hdGlvbiA9PSAxKSB7DQoJCQkkcGFnZXMgPSByYWhfcGx1Z2luX2xpYl9w YWdlcygkc3FsLCRsaW1pdCwkb2Zmc2V0KTsNCgkJCSRyYWhfcGx1Z2luX3ByZXRleHRbJ25l eHRfcGFnZSddID0gJHBhZ2VzWyduZXh0J107DQoJCQkkcmFoX3BsdWdpbl9wcmV0ZXh0Wydw cmV2X3BhZ2UnXSA9ICRwYWdlc1sncHJldiddOw0KCQl9DQoJCWlmKCRyYWhfcGx1Z2luX3By ZXRleHRbJ25hbWUnXSAmJiAkcmFoX3BsdWdpbl9pc19jdXN0b20gPT0gZmFsc2UgJiYgJGFs bG93X3BhZ2luYXRpb24gPT0gMSkgew0KCQkJLyokcGFnZXMgPSByYWhfcGx1Z2luX2xpYl9w bHVnaW5zKCRzcWwpOw0KCQkJJHJhaF9wbHVnaW5fcHJldGV4dFsnbmV4dF9wbHVnaW4nXSA9 ICRwYWdlc1snbmV4dCddOw0KCQkJJHJhaF9wbHVnaW5fcHJldGV4dFsncHJldl9wbHVnaW4n XSA9ICRwYWdlc1sncHJldiddOyovDQoJCX0NCgkJJHNxbCA9ICcnOw0KCQlpZiAoJHJzICYm ICRwZ29ubHkgPT0gMCkgew0KCQkJJGNvdW50ID0gMDsNCgkJCSRvdXQgPSBhcnJheSgpOw0K CQkJJGxhc3QgPSBudW1Sb3dzKCRycyk7DQoJCQl3aGlsZSgkYSA9IG5leHRSb3coJHJzKSkg ew0KCQkJCXJhaF9wbHVnaW5fZGF0YSgkYSk7DQoJCQkJZ2xvYmFsICRyYWhfdGhpc3BsdWdp bjsNCgkJCQkkY291bnQrKzsNCgkJCQkkcmFoX3RoaXNwbHVnaW5bJ2lzX2ZpcnN0J10gPSAo JGNvdW50ID09IDEpOw0KCQkJCSRyYWhfdGhpc3BsdWdpblsnaXNfbGFzdCddID0gKCRjb3Vu dCA9PSAkbGFzdCk7DQoJCQkJJG91dFtdID0gKCR0aGluZykgPyBwYXJzZSgkdGhpbmcpIDog cGFyc2VfZm9ybSgkZm9ybSk7DQoJCQkJcmFoX3BsdWdpbl9kYXRhKCk7DQoJCQl9DQoJCQly ZXR1cm4gZG9MYWJlbCgkbGFiZWwsICRsYWJlbHRhZykuZG9XcmFwKCRvdXQsICR3cmFwdGFn LCAkYnJlYWssICRjbGFzcyk7DQoJCX0NCgl9DQoNCglmdW5jdGlvbiByYWhfcGx1Z2luX2xp Yl9wYWdlcygkc3FsPWFycmF5KCksJGxpbWl0PTEwLCRvZmZzZXQ9MCkgew0KCQlnbG9iYWwg JHByZXRleHQ7DQoJCSRzcWxbJ29mZnNldF9saW1pdCddID0gJyc7DQoJCSRzcWxfcXVlcnkg PSBpbXBsb2RlKCcnLCRzcWwpOw0KCQkkcnMgPSBzYWZlX3Jvd3Nfc3RhcnQoDQoJCQkibmFt ZSIsDQoJCQkndHhwX3BsdWdpbicsDQoJCQkiJHNxbF9xdWVyeSINCgkJKTsNCgkJJGNvdW50 ID0gbnVtUm93cygkcnMpLSRvZmZzZXQ7DQoJCSRwYWdlcyA9IGNlaWwoKCRjb3VudC8kbGlt aXQpKTsNCgkJJHBnID0gKCRwcmV0ZXh0WydwZyddKSA/ICRwcmV0ZXh0WydwZyddIDogMTsN CgkJJHBnID0gKCRwZyA+ICRwYWdlcykgPyAkcGFnZXMgOiAkcGc7DQoJCSRhcnJheSA9IA0K CQkJYXJyYXkoDQoJCQkJJ3ByZXYnID0+ICgoJHBnID4gMSkgPyAkcGctMSA6ICcnKSwNCgkJ CQknbmV4dCcgPT4gKCgkcGcgPCAkcGFnZXMpID8gJHBnKzEgOiAnJykNCgkJCSkNCgkJOw0K CQlyZXR1cm4gJGFycmF5Ow0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9wbHVnaW5fbGliX3VybCgk bmFtZT0nJywkcGc9JycpIHsNCgkJZ2xvYmFsICRwcmV0ZXh0Ow0KCQlyZXR1cm4gDQoJCQlw YWdlbGlua3VybCgNCgkJCQlhcnJheSgNCgkJCQkJJ3JhaF9wbHVnaW5fbmFtZScgPT4gJG5h bWUsDQoJCQkJCSdwZycgPT4gJHBnDQoJCQkJKSwNCgkJCQlhcnJheSgNCgkJCQkJJ3MnID0+ ICRwcmV0ZXh0WydzJ10sDQoJCQkJCSdjJyA9PiAkcHJldGV4dFsnYyddDQoJCQkJKQ0KCQkJ KQ0KCQk7DQoJfQ0KDQoJZnVuY3Rpb24gcmFoX3BsdWdpbl9saWJfdGV4dGlsZSgkaGVscD0n JywkZG89MCkgew0KCQkkb3V0ID0gJGhlbHA7DQoJCWlmKCRkbyA9PSAxKSB7DQoJCQlAaW5j bHVkZV9vbmNlIHR4cGF0aC4nL2xpYi9jbGFzc1RleHRpbGUucGhwJzsNCgkJCSR0ZXh0aWxl ID0gbmV3IFRleHRpbGUoKTsNCgkJCSRvdXQgPSAkdGV4dGlsZS0+VGV4dGlsZVRoaXMoJGhl bHApOw0KCQl9IGVsc2Ugew0KCQkJJHJlID0gJy9oMShcKC4qXCkpP1wuLyc7DQoJCQlpZiAo cHJlZ19tYXRjaCgkcmUsICRoZWxwKSkgew0KCQkJCUBpbmNsdWRlX29uY2UgdHhwYXRoLicv bGliL2NsYXNzVGV4dGlsZS5waHAnOw0KCQkJCSR0ZXh0aWxlID0gbmV3IFRleHRpbGUoKTsN CgkJCQkkb3V0ID0gJHRleHRpbGUtPlRleHRpbGVUaGlzKCRoZWxwKTsNCgkJCX0NCgkJfQ0K CQlyZXR1cm4gJG91dDsNCgl9DQoNCglmdW5jdGlvbiByYWhfcGx1Z2luX2RhdGEoJHJzPScn KSB7DQoJCWdsb2JhbCAkcmFoX3RoaXNwbHVnaW47DQoJCWlmKCRycyA9PSAnJykgew0KCQkJ JHJhaF90aGlzcGx1Z2luID0gJyc7DQoJCQl1bnNldCgkR0xPQkFMU1sncmFoX3RoaXNwbHVn aW4nXSk7DQoJCX0NCgkJZWxzZSB7DQoJCQlleHRyYWN0KCRycyk7DQoJCQkkcmFoX3RoaXNw bHVnaW4gPSANCgkJCQlhcnJheSgNCgkJCQkJJ25hbWUnID0+ICRuYW1lLA0KCQkJCQkncHJl Zml4JyA9PiBzdWJzdHIoJG5hbWUsMCwzKSwNCgkJCQkJJ3N0YXR1cycgPT4gJHN0YXR1cywN CgkJCQkJJ2F1dGhvcicgPT4gJGF1dGhvciwNCgkJCQkJJ3VyaScgPT4gJGF1dGhvcl91cmks DQoJCQkJCSd2ZXJzaW9uJyA9PiAkdmVyc2lvbiwNCgkJCQkJJ2Rlc2NyaXB0aW9uJyA9PiAk ZGVzY3JpcHRpb24sDQoJCQkJCSd0eXBlJyA9PiAkdHlwZSwNCgkJCQkJJ29yZGVyJyA9PiAk bG9hZF9vcmRlciwNCgkJCQkJJ2lzX2ZpcnN0JyA9PiBmYWxzZSwNCgkJCQkJJ2lzX2xhc3Qn ID0+IGZhbHNlDQoJCQkJKTsNCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9wbHVnaW5fcHJl dGV4dCgpIHsNCgkJZ2xvYmFsICRyYWhfcGx1Z2luX3ByZXRleHQ7DQoJCSRuYW1lID0gZ3Bz KCdyYWhfcGx1Z2luX25hbWUnKTsNCgkJaWYoJG5hbWUpIA0KCQkJJG5hbWUgPSAoc2FmZV9j b3VudCgndHhwX3BsdWdpbicsIm5hbWU9JyIuZG9TbGFzaCgkbmFtZSkuIiciKSA+IDApID8g JG5hbWUgOiAnJzsNCgkJZWxzZSAkbmFtZSA9ICcnOw0KCQkkcmFoX3BsdWdpbl9wcmV0ZXh0 ID0gDQoJCQlhcnJheSgNCgkJCQknbmFtZScgPT4gJG5hbWUsDQoJCQkJJ25leHRfcGx1Z2lu JyA9PiAnJywNCgkJCQkncHJldl9wbHVnaW4nID0+ICcnLA0KCQkJCSduZXh0X3BhZ2UnID0+ ICcnLA0KCQkJCSdwcmV2X3BhZ2UnID0+ICcnLA0KCQkJCSdzZWFyY2hfcmVzdWx0cycgPT4g JycNCgkJCSk7DQoJfQ0KDQoJZnVuY3Rpb24gcmFoX3BsdWdpbl9ldnVsYXRlX2Vycm9yKCkg ew0KCQlnbG9iYWwgJHJhaF90aGlzcGx1Z2luOw0KCQlpZigkcmFoX3RoaXNwbHVnaW5bJ25h bWUnXSA9PSAnJykgew0KCQkJdHJpZ2dlcl9lcnJvcignUGx1Z2luIHRhZyBvdXRzaWRlIG9m IHBsdWdpbiBjb250ZXh0LicpOw0KCQkJcmV0dXJuICcnOw0KCQl9DQoJfQ0KDQoJZnVuY3Rp b24gcmFoX3BsdWdpbl9saWJfYnVpbGRfaW5fc3FsKCRzdHJpbmc9JycsJGZpZWxkPScnKSB7 DQoJCSRzdHJpbmdzID0gZXhwbG9kZSgnLCcsJHN0cmluZyk7DQoJCWlmKGNvdW50KCRzdHJp bmdzKSA9PSAxKSByZXR1cm4gIiBhbmQgJGZpZWxkID0gJyIuZG9TbGFzaCh0cmltKGltcGxv ZGUoJycsJHN0cmluZ3MpKSkuIiciOw0KCQllbHNlIHsNCgkJCSRhcnJheSA9IGFycmF5KCk7 DQoJCQlmb3JlYWNoICgkc3RyaW5ncyBhcyAka2V5ID0+ICR2YWx1ZSkgew0KCQkJCSRhcnJh eVska2V5XSA9ICInIi5kb1NsYXNoKHRyaW0oJHZhbHVlKSkuIiciOw0KCQkJfQ0KCQkJJHN0 cmluZyA9IGltcGxvZGUoJywnLCRhcnJheSk7DQoJCQlyZXR1cm4gIiBhbmQgJGZpZWxkIGlu KCRzdHJpbmcpIjsNCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIHJhaF9wbHVnaW5fbGliX2J1aWxk X3ByZWZpeF9zcWwoJHN0cmluZz0nJykgew0KCQkkc3RyaW5ncyA9IGV4cGxvZGUoJywnLHRy aW0oJHN0cmluZykpOw0KCQkkYXJyYXkgPSBhcnJheSgpOw0KCQlmb3JlYWNoICgkc3RyaW5n cyBhcyAka2V5ID0+ICR2YWx1ZSkgew0KCQkJJGFycmF5WyRrZXldID0gIlNVQlNUUklORyhu YW1lLDEsNCkgPSAnIi5kb1NsYXNoKHRyaW0oJHZhbHVlKS4nXycpLiInIjsNCgkJfQ0KCQly ZXR1cm4gJyBhbmQgKCcuaW1wbG9kZSgnIG9yICcsJGFycmF5KS4nKSc7DQoJfQ0KDQoJZnVu Y3Rpb24gcmFoX3BsdWdpbl9saWJfZG93bmxvYWRfcHJlZnMoKSB7DQoJCUAkcnMgPSBzYWZl X3JvdygnKicsJ3JhaF9wbHVnaW5fZG93bmxvYWQnLCJwcmVmcz0ncHJlZnMnIik7DQoJCWlm KCRycykgew0KCQkJZXh0cmFjdCgkcnMpOw0KCQkJJHNldHRpbmdzID0gDQoJCQkJYXJyYXko DQoJCQkJCSdwbHVnaW5hbGwnID0+ICRwbHVnaW5hbGwsDQoJCQkJCSdpbmNsdWRlcGx1Z2lu cycgPT4gJGluY2x1ZGVwbHVnaW5zLA0KCQkJCQkncGx1Z2lucHJlZml4JyA9PiAkcGx1Z2lu cHJlZml4DQoJCQkJKQ0KCQkJOw0KCQl9IGVsc2UgJHNldHRpbmdzID0gJyc7DQoJCXJldHVy biAkc2V0dGluZ3M7DQoJfQ0KDQoJZnVuY3Rpb24gcmFoX3BsdWdpbl9saWJfc2hvd19jb2Rl KCRhdHRzPWFycmF5KCksJGZpZWxkPScnKSB7DQoJCWdsb2JhbCAkcmFoX3RoaXNwbHVnaW47 DQoJCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCQknZXNjYXBlJyA9PiAnaHRtbCcsDQoJCQkn aGlnaGxpZ2h0JyA9PiAwLA0KCQkpLCRhdHRzKSk7DQoJCXJhaF9wbHVnaW5fZXZ1bGF0ZV9l cnJvcigpOw0KCQkkY29kZSA9IGZldGNoKCRmaWVsZCwndHhwX3BsdWdpbicsJ25hbWUnLCRy YWhfdGhpc3BsdWdpblsnbmFtZSddKTsNCgkJaWYoJGhpZ2hsaWdodCA9PSAxKSB7DQoJCQlp ZihmdW5jdGlvbl9leGlzdHMoaGlnaGxpZ2h0X3N0cmluZykpIHsNCgkJCQkkcGx1Z2luX2Nv ZGUgPSANCgkJCQkJJzw/cGhwICcubi4NCgkJCQkJCSRjb2RlLm4uDQoJCQkJCScgPz4nDQoJ CQkJOw0KCQkJCSR0YWdzID0gDQoJCQkJCWFycmF5KA0KCQkJCQkJJyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOycgPT4gJwknLA0KCQkJCQkJJzxiciAvPicgPT4gJycsDQoJCQkJCQknJmx0 Oz9waHAmbmJzcDsnID0+ICcnLA0KCQkJCQkJJz8mZ3Q7JyA9PiAnJywNCgkJCQkJCScmbmJz cDsnID0+ICcgJw0KCQkJCQkpDQoJCQkJOw0KCQkJCSRjb2RlID0gaGlnaGxpZ2h0X3N0cmlu ZygkcGx1Z2luX2NvZGUsVFJVRSk7DQoJCQkJJGNvZGUgPSBzdHJ0cigkY29kZSwkdGFncyk7 DQoJCQl9DQoJCX0NCgkJaWYoJGVzY2FwZSkgJGNvZGUgPSBodG1sc3BlY2lhbGNoYXJzKCRj b2RlKTsNCgkJcmV0dXJuICRjb2RlOw0KCX0iO3M6NDoidHlwZSI7czoxOiIwIjtzOjU6ImZs YWdzIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czozOiJtZDUiO3M6MzI6ImVjZWVm MDEyNzE4MDkzY2Q3YjllYzcwYjc3MDUyYzA0Ijt9