# Name: smd_if v0.6 # Type: Client side plugin # Generic multiple if condition tests # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjY6InNtZF9pZiI7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuNiI7 czo4OiJyZXZpc2lvbiI7czowOiIiO3M6NjoiYXV0aG9yIjtzOjExOiJTdGVmIERhd3NvbiI7 czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdzb24uY29tLyI7czoxMToi ZGVzY3JpcHRpb24iO3M6MzU6IkdlbmVyaWMgbXVsdGlwbGUgaWYgY29uZGl0aW9uIHRlc3Rz IjtzOjQ6InR5cGUiO3M6MToiMCI7czo0OiJoZWxwIjtzOjIzMTMxOiIJPHA+PGRpdiBpZD0i c21kX2hlbHAiPjwvcD4KCgk8aDE+c21kX2lmPC9oMT4KCgk8cD5BIHJlYWxseSBzaW1wbGUs IGdlbmVyaWMgJiM4MjE2O2lmIGNvbmRpdGlvbiYjODIxNzsgdGVzdGVyLiBDYW4gdGVzdCBh bnkgZmllbGQgaW4gdGhlIGN1cnJlbnQgYXJ0aWNsZSwgZmlsZSBvciBsaW5rIGNvbnRleHQg Zm9yIGEgdmFyaWV0eSBvZiBhdHRyaWJ1dGVzIGFuZCB0YWtlIGFjdGlvbiBpZiA8c3BhbiBj bGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj4gb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9z cGFuPi48L3A+CgoJPGgyPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPlN1cHBvcnRzIG1v c3QgbWFqb3IgYXJ0aWNsZSwgZmlsZSBhbmQgbGluayB2YXJpYWJsZXMgc3VjaCBhcyBzZWN0 aW9uLCBjYXRlZ29yeSwgY3VzdG9tIGZpZWxkcywgaWQsIHF1ZXJ5IHN0cmluZywgYXV0aG9y LCBib2R5LCBleGNlcnB0LCB5YWhkZSB5YWhkZSwgcGx1cyB1cmwgdmFycywgc2VydmVyIHZh cnMgYW5kIHN1Yi1jYXRlZ29yeS9wYXJlbnQgY2hlY2tpbmc8L2xpPgoJCTxsaT5UZXN0cyBp bmNsdWRlIGVxdWFsaXR5LCBpbmVxdWFsaXR5LCBsZXNzIHRoYW4sIGdyZWF0ZXIgdGhhbiwg ZW1wdHksIHVzZWQsIGRlZmluZWQsIGJlZ2lucywgZW5kcywgY29udGFpbnMsIGlzIG51bWVy aWMgLyBhbHBoYSAvIGFscGhhbnVtZXJpYyAvIGxvd2VyY2FzZSAvIHVwcGVyY2FzZSwgYW1v bmcgb3RoZXJzPC9saT4KCQk8bGk+VGVzdHMgZm9yIG1vcmUgdGhhbiBvbmUgY29uZGl0aW9u IGF0IG9uY2UgYW5kIGFwcGxpZXMgZWl0aGVyIDxzcGFuIGNsYXNzPSJjYXBzIj5BTkQ8L3Nw YW4+IGxvZ2ljIChhbGwgdGVzdHMgbXVzdCBwYXNzKSBvciBPUiBsb2dpYyAoYW55IHRlc3Qg bXVzdCBwYXNzKTwvbGk+CgkJPGxpPlVnbHkgYW5kIHZlcnkgZGlydHkuIFVzZXMgPHNwYW4g Y2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4mIzgyMTc7cyA8Y29kZT5ldmFsKCk8L2NvZGU+IGNv bW1hbmQgd2hpY2ggbW9zdCBwcm9ncmFtbWVycyBjb25jdXIgc2hvdWxkIGJlIHJlbmFtZWQg PGNvZGU+ZXZpbCgpPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxoMj5BdXRob3I8L2gyPgoKCTxw PjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb21tZW50Rm9ybSI+U3RlZiBEYXdz b248L2E+LiBCYXNlZCBvbiBhbiBpZGVhIGJyZXdpbmcgaW4gdGhlIGJhY2sgb2YgbXkgbWlu ZCB3aGlsZSBoYWNraW5nIGNoc19pZl91cmx2YXIuPC9wPgoKCTxoMj5JbnN0YWxsYXRpb24g LyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVp dGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTMwL3NtZF9p ZiI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBjb2RlIGludG8gdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFu ZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBocmVmPSJo dHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjUzNTciPmZv cnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQgb24gdGhlIHN1Y2Nl c3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPlRvIHVuaW5zdGFsbCwg c2ltcGx5IGRlbGV0ZSBmcm9tIHRoZSBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhZ2UuPC9wPgoK CTxoMj5Vc2FnZTwvaDI+CgoJPHA+VXNlIHRoZSB0YWcgaW4gYW55IHBhZ2UsIGZvcm0gb3Ig YXJ0aWNsZSBjb250ZXh0LiBDYW4gYWxzbyBiZSB1c2VkIGluc2lkZSBmaWxlIG9yIGxpbmsg bGlzdHMgdG8gdGFrZSBhY3Rpb24gZGVwZW5kaW5nIG9uIGF0dHJpYnV0ZXMgb2YgdGhlIGN1 cnJlbnQgaXRlbS48L3A+CgoJPGgzIGNsYXNzPSJ0YWciPnNtZF9pZjwvaDM+CgoJPHAgY2xh c3M9InRhZy1zdW1tYXJ5Ij5BdCB0aGUgcGxhY2UgeW91IHdpc2ggdG8gY29tcGFyZSBhIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkIHdpdGggYW5vdGhlciB2YWx1ZSwg cHV0IHRoaXMgdGFnIHdpdGggYWxsIHRocmVlIG1hbmRhdG9yeSBhdHRyaWJ1dGVzIHNoYWRl ZCBiZWxvdy4gRWFjaCB0YWtlIGEgc2VyaWVzIG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0cyAm IzgyMTI7IHRob3VnaCB0aGUgPGEgaHJlZj0iI3BhcmFtZGVsaW0iPmNvbW1hIGlzIG92ZXJy aWRhYmxlPC9hPiB3aXRoIHRoZSBwYXJhbV9kZWxpbSBhdHRyaWJ1dGUuIElmIHRoZSByZXN1 bHQgb2YgdGhlIGNvbXBhcmlzb24gdGVzdHMgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8 L3NwYW4+IHRoZSBjb250YWluZWQgYmxvY2sgd2lsbCBiZSBleGVjdXRlZC4gSWYgdGhlIHJl c3VsdCBpcyA8c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+LCBhbnkgPGNvZGU+Jmx0 O3R4cDplbHNlIC8mZ3Q7PC9jb2RlPiB3aWxsIGJlIGV4ZWN1dGVkIGluc3RlYWQuIFdpdGhv dXQgYW55IDxjb2RlPiZsdDt0eHA6ZWxzZSAvJmd0OzwvY29kZT4gYmxvY2ssIG5vdGhpbmcg aXMgb3V0cHV0IGlmIHRoZSByZXN1bHQgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9z cGFuPi48L3A+CgoJPGg0IGNsYXNzPSJhdHRzICIgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0 ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIG1hbmQiPmZpZWxk PC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA8YSBocmVmPSIj ZmllbGQiPmZpZWxkczwvYT4gdG8gdGVzdDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSBtYW5kIj5vcGVyYXRvcjwvc3Bhbj4gOiB0aGUgPGEgaHJlZj0iI29wZXJhdG9yIj5v cGVyYXRpb25zPC9hPiBmb3IgY29tcGFyaXNvbiB3aXRoIHRoYXQgZmllbGQgKGUuZy4gPGNv ZGU+ZXE8L2NvZGU+LCA8Y29kZT5ub3Q8L2NvZGU+LCA8Y29kZT5iZWdpbnM8L2NvZGU+LCBl dGMpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIG1hbmQiPnZhbHVlPC9zcGFu PiA6IHRoZSA8YSBocmVmPSIjdmFsdWUiPnZhbHVlczwvYT4gd2l0aCB3aGljaCB0byBjb21w YXJlIHRoZSBmaWVsZHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmxvZ2lj PC9zcGFuPiA6IGhvdyBtdWx0aXBsZSB0ZXN0cyBhcmUgam9pbmVkOiA8c3BhbiBjbGFzcz0i Y2FwcyI+QU5EPC9zcGFuPiBvciBPUi4gRGVmYXVsdCBpcyA8c3BhbiBjbGFzcz0iY2FwcyI+ QU5EPC9zcGFuPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Y2FzZV9zZW5z aXRpdmU8L3NwYW4+IDogMSA9IGNhc2Utc2Vuc2l0aXZlIGNvbXBhcmlzb247IDAgPSBpZ25v cmUgY2FzZS4gRGVmYXVsdCBpcyAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1l Ij5wYXJhbV9kZWxpbTwvc3Bhbj4gOiBkZWxpbWl0ZXIgdG8gdXNlIHdoZW4gc3BlY2lmeWlu ZyBmaWVsZCwgb3BlcmF0b3Igb3IgdmFsdWUgbGlzdHMuIERlZmF1bHQgaXMgdGhlIGNvbW1h ICgsKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bW9kX2RlbGltPC9zcGFu PiA6IGRlbGltaXRlciB0byB1c2Ugd2hlbiBzcGVjaWZ5aW5nIGZpZWxkIG9yIG9wZXJhdG9y IG1vZGlmaWVycy4gRGVmYXVsdCBpcyB0aGUgY29sb24gKDopPC9saT4KCTwvdWw+CgoJPHA+ VGhlIGxpc3RzIGFyZSBwcm9jZXNzZWQgaW4gb3JkZXIsIGkuZS4gdGhlIDFzdCBmaWVsZCB1 c2VzIHRoZSAxc3Qgb3BlcmF0b3IgaW4gdGhlIGxpc3QgYW5kIGNvbXBhcmVzIGl0IHRvIHRo ZSAxc3QgdmFsdWU7IHRoZSAybmQgZmllbGQgdXNlcyB0aGUgMm5kIG9wZXJhdG9yIGluIHRo ZSBsaXN0IGFuZCBjb21wYXJlcyBpdCB0byB0aGUgMm5kIHZhbHVlLCBhbmQgc28gb24uIFZh bHVlcyBzaG91bGQgdXN1YWxseSBiZSBzcGVjaWZpZWQgd2l0aCBwbGFjZWhvbGRlcnMgdG8g bWFpbnRhaW4gb3JkZXI6IGUuZy4gPGNvZGU+dmFsdWU9JnF1b3Q7LCA0LCwgdG9wJnF1b3Q7 PC9jb2RlPjwvcD4KCgk8cD5Ob3RlIHRoYXQsIGFsdGhvdWdoIHRoZSBmaXJzdCB0aHJlZSBh dHRyaWJ1dGVzIGFyZSBjb25zaWRlcmVkIG1hbmRhdG9yeSwgaWYgeW91IGhhcHBlbiB0byBy ZXF1aXJlIHRoZSBkZWZhdWx0IG9wZXJhdG9yIGZvciBhbGwgeW91ciB0ZXN0cywgeW91IGNh biBzYWZlbHkgb21pdCA8Y29kZT5vcGVyYXRvcjwvY29kZT4uIFNpbWlsYXJseSB3aXRoIHZh bHVlczogaWYgeW91IGFyZSBlbnRpcmVseSB0ZXN0aW5nIHRoZSBleGlzdGVuY2Ugb3IgdHlw ZSBvZiB2YXJpYWJsZXMsIHlvdSBjYW4gb21pdCB0aGUgPGNvZGU+dmFsdWU8L2NvZGU+IHBh cmFtZXRlciBpZiB5b3Ugd2lzaC48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJm aWVsZCI+ZmllbGQ8L2g0PgoKCTxwPkxpc3Qgb2YgVGV4dFBhdHRlcm4gZmllbGRzIHRvIGxv b2sgYXQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6Cgk8dWw+CgkJPGxpPjxjb2RlPnNlY3Rpb248 L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+Y2F0ZWdvcnk8L2NvZGU+IChvciA8Y29kZT5jYXRl Z29yeTE8L2NvZGU+LCBvciA8Y29kZT5jYXRlZ29yeTI8L2NvZGU+IGlmIG9uIGFuIGFydGlj bGUgcGFnZSk8L2xpPgoJCTxsaT48Y29kZT5hdXRob3JpZDwvY29kZT4gb3IgPGNvZGU+YXV0 aG9yPC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPmlkPC9jb2RlPiAoZmlsZS9saW5rL2FydGlj bGUgSUQpPC9saT4KCQk8bGk+PGNvZGU+cXVlcnk8L2NvZGU+ICh0aGUgcXVlcnkgc3RyaW5n IGZyb20gdGhlIHNlYXJjaCBmb3JtKTwvbGk+CgkJPGxpPjxjb2RlPnBnPC9jb2RlPiAodGhl IGN1cnJlbnQgcGFnZSBudW1iZXIgaW4gbGlzdHMpPC9saT4KCQk8bGk+PGNvZGU+bW9udGg8 L2NvZGU+IChjdXJyZW50IG1vbnRoIGZpZWxkIGZyb20gdGhlIGFkZHJlc3MgYmFyKTwvbGk+ CgkJPGxpPjxjb2RlPnN0YXR1czwvY29kZT4gKGRvY3VtZW50IHN0YXR1czogMjAwLCA0MDQs IDQwMywgZXRjKTwvbGk+CgkJPGxpPjxjb2RlPnBhZ2U8L2NvZGU+ICh0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gUGFnZSB0ZW1wbGF0ZSB1c2VkIGJ5IHRoaXMgc2VjdGlv bik8L2xpPgoJCTxsaT48Y29kZT5uZXh0X2lkPC9jb2RlPiAvIDxjb2RlPnByZXZfaWQ8L2Nv ZGU+IChJRCBvZiBuZXh0L3ByZXYgZG9jdW1lbnQgaWYgb24gYXJ0aWNsZSBwYWdlKTwvbGk+ CgkJPGxpPjxjb2RlPm5leHRfdGl0bGU8L2NvZGU+IC8gPGNvZGU+cHJldl90aXRsZTwvY29k ZT4oVGl0bGUgb2YgbmV4dC9wcmV2IGRvY3VtZW50IGlmIG9uIGFydGljbGUgcGFnZSk8L2xp PgoJCTxsaT48Y29kZT5uZXh0X3V0aXRsZTwvY29kZT4gLyA8Y29kZT5wcmV2X3V0aXRsZTwv Y29kZT4gKHVybC10aXRsZSBvZiBuZXh0L3ByZXYgZG9jdW1lbnQgaWYgb24gYXJ0aWNsZSBw YWdlKTwvbGk+CgkJPGxpPjxjb2RlPnBlcm1saW5rX21vZGU8L2NvZGU+ICh0YWtlIGFjdGlv biBiYXNlZCBvbiBvbmUgb2YgdGhlIG1lc3N5L2NsZWFuIDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IHNjaGVtZXMpPC9saT4KCQk8bGk+PGNvZGU+b3RoZXIgYXJ0aWNsZS9maWxl L2xpbmsgZmllbGQ8L2NvZGU+IChlLmcuIGJvZHksIGV4Y2VycHQsIGFydGljbGVfaW1hZ2Us IGtleXdvcmRzLCBsaW5rYW5tZSwgZmlsZW5hbWUsIGRvd25sb2FkcywgJiM4MjMwOyk8L2xp PgoJCTxsaT48Y29kZT5teV9jdXN0b21fZmllbGRfbmFtZTwvY29kZT4gKGFueSBjdXN0b20g ZmllbGRzIHlvdSBoYXZlIGRlZmluZWQpPC9saT4KCQk8bGk+PGNvZGU+dXJsdmFyOm15X3Zh cmlhYmxlX25hbWU8L2NvZGU+IChhbnkgdmFyaWFibGUgaW4gdGhlIGFkZHJlc3MgYmFyIGFm dGVyIHRoZSA8Y29kZT4/PC9jb2RlPik8L2xpPgoJCTxsaT48Y29kZT5zdnJ2YXI6bXlfdmFy aWFibGVfbmFtZTwvY29kZT4gKGFueSBzZXJ2ZXIgdmFyaWFibGUsIGUuZy4gPHNwYW4gY2xh c3M9ImNhcHMiPkhUVFA8L3NwYW4+X1VTRVJfQUdFTlQpPC9saT4KCQk8bGk+PGNvZGU+cGFy ZW50Om9wdGlvbmFsX21vZGlmaWVyczwvY29kZT4gKHdoZXRoZXIgdGhlIGdpdmVuIGNhdGVn b3J5IGlzIGEgZGVzY2VuZGVudCBvZiBhbm90aGVyIGNhdGVnb3J5KTwvbGk+Cgk8L3VsPjwv cD4KCgk8cD5JZiB5b3Ugc3BlY2lmeSBhIGZpZWxkIG5hbWUgdGhhdCBkb2VzIG5vdCBleGlz dCwgdGhlIHRleHQgeW91IHVzZSB3aWxsIGJlIHRha2VuIHZlcmJhdGltIGluIG1vc3QgY2Fz ZXMuPC9wPgoKCTxwPlRoZSBzcGVjaWFsIGZpZWxkIDxjb2RlPnBhcmVudDwvY29kZT4gY2hl Y2tzIHRoZSBwYXJlbnQgY2F0ZWdvcnkgZm9yIGEgbWF0Y2guIFVubGlrZSB0aGUgb3RoZXIg ZmllbGQgdHlwZXMsIHRoZSBkZWZhdWx0IDxhIGhyZWY9IiNvcGVyYXRvciI+b3BlcmF0b3I8 L2E+IGZvciBwYXJlbnQgaXMgJiM4MjE2O2NvbnRhaW5zJiM4MjE3Oy4gVGhpcyBpcyBiZWNh dXNlIHRoZSBlbnRpcmUgdHJlZSBpcyBjaGVja2VkIGZvciBhIG1hdGNoLCBzdGFydGluZyBm cm9tIHRoZSB0b3Agb2YgdGhlIHRyZWUgZG93biB0byB0aGUgY3VycmVudCBjYXRlZ29yeS4g SW50ZXJuYWxseSwgdGhlIHBsdWdpbiBtYWtlcyB1cCBhICYjODIyMDticmVhZGNydW1iIHRy YWlsJiM4MjIxOyBvZiBjYXRlZ29yaWVzIGluIHRoZSBjdXJyZW50IGJyYW5jaCwgZWFjaCBz ZXBhcmF0ZWQgYnkgYSBzcGFjZSwgc28gdGVzdGluZyBmb3IgZXF1YWxpdHkgd291bGQgcmVx dWlyZSBwdXR0aW5nIHRoZW0gYWxsIGluIHRoZSA8YSBocmVmPSIjdmFsdWUiPnZhbHVlPC9h PiBwYXJhbWV0ZXIuPC9wPgoKCTxwPllvdSBhcmUgb2YgY291cnNlIGZyZWUgdG8gY2hvb3Nl IGFuIGFsdGVybmF0aXZlIG9wZXJhdG9yOyA8Y29kZT5iZWdpbnM8L2NvZGU+IGlzIHZlcnkg dXNlZnVsIGZvciB0ZXN0aW5nIGlmIHRoZSB0b3AgbGV2ZWwgY2F0ZWdvcnkgbWF0Y2hlcyB0 aGUgb25lIGdpdmVuIGluIHRoZSA8Y29kZT52YWx1ZTwvY29kZT4gZmllbGQuPC9wPgoKCTxw PklmIHlvdSB1c2UgPGNvZGU+cGFyZW50OkxWTG48L2NvZGU+LCB0aGUgY29tcGFyaXNvbiB3 aWxsIGJlIHJlc3RyaWN0ZWQgdG8gdGhhdCAmIzgyMjA7bGV2ZWwmIzgyMjE7IG9mIHN1Yi1j YXRlZ29yeTsgTFZMMSBpcyB0aGUgJiM4MjIwO3RvcCYjODIyMTsgbGV2ZWwsIExWTDIgaXMg dGhlIG5leHQgc3ViLWNhdGVnb3J5IGxldmVsLCBhbmQgc28gb24uIFdoZW4gdXNpbmcgdGhl c2UgbW9kaWZpZXJzLCB0aGUgJiM4MjE2O2VxJiM4MjE3OyBvcGVyYXRvciBiZWNvbWVzIG1v cmUgdXNlZnVsIGJlY2F1c2UgeW91IGFyZSBjb21wYXJpbmcgYSBzaW5nbGUgcGFyZW50IGNh dGVnb3J5LjwvcD4KCgk8cD5XaGVuIHVzaW5nIGFydGljbGVzLCB5b3UgY2FuIGZ1cnRoZXIg bW9kaWZ5IHRoZSBiZWhhdmlvdXIgb2YgdGhlIHBhcmVudCB1c2luZyB0aGUgPGNvZGU+Q0FU bjwvY29kZT4gc3ludGF4ICh3aGVyZSAmIzgyMTY7biYjODIxNzsgaXMgMSBvciAyKS4gU3Bl Y2lmeWluZyAmIzgyMjA7cGFyZW50JiM4MjIxOyB3aXRob3V0IDxjb2RlPkNBVG48L2NvZGU+ IHdpbGwgdXNlIHRoZSBnbG9iYWwgY2F0ZWdvcnkgKDxjb2RlPj9jPTwvY29kZT4pLiBJZiB5 b3UgYWRkIDxjb2RlPjpDQVRuPC9jb2RlPiBpdCB3aWxsIGluc3RlYWQgY29tcGFyZSB0aGUg YXJ0aWNsZSYjODIxNztzIGNhdGVnb3J5MSBvciBjYXRlZ29yeTIgcmVzcGVjdGl2ZWx5Ljwv cD4KCgk8cD5Zb3UgY2FuIHVzZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q0FUPC9zcGFuPiBhbmQg PHNwYW4gY2xhc3M9ImNhcHMiPkxWTDwvc3Bhbj4gaW4gY29tYmluYXRpb24sIGluZGVwZW5k ZW50bHkgb3Igbm90IGF0IGFsbC4gVGhpcyBhbGxvd3MgY29tcGFyaXNvbnMgc3VjaCBhcyAm IzgyMjA7aWYgdGhlIDJuZCBzdWItY2F0ZWdvcnkgb2YgY2F0ZWdvcnkxIGVxdWFscyBibGFo YmxhaCYjODIyMTsgb3IgJiM4MjIwO2lmIGNhdGVnb3J5MiBpcyBhIGNoaWxkIG9mIGJsYWhi bGFoJiM4MjIxOy4gU2VlIDxhIGhyZWY9IiNlZzQiPkV4YW1wbGUgNDwvYT4uPC9wPgoKCTxo NCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0ib3BlcmF0b3IiPm9wZXJhdG9yPC9oND4KCgk8cD5M aXN0IG9mIG9wZXJhdG9ycyB0byBhcHBseSwgaW4gb3JkZXIsIHRvIGVhY2ggZmllbGQuIENo b29zZSBmcm9tOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPmVxPC9jb2RlPiBFcXVhbCAodGhl IGRlZmF1bHQgZm9yIGFsbCBleGNlcHQgJiM4MjE2O3BhcmVudCYjODIxNzspPC9saT4KCQk8 bGk+PGNvZGU+bm90PC9jb2RlPiBOb3QgZXF1YWw8L2xpPgoJCTxsaT48Y29kZT5sdDwvY29k ZT4gTGVzcyB0aGFuPC9saT4KCQk8bGk+PGNvZGU+Z3Q8L2NvZGU+IEdyZWF0ZXIgdGhhbjwv bGk+CgkJPGxpPjxjb2RlPmxlPC9jb2RlPiBMZXNzIHRoYW4gb3IgZXF1YWwgdG88L2xpPgoJ CTxsaT48Y29kZT5nZTwvY29kZT4gR3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvPC9saT4KCQk8 bGk+PGNvZGU+YmVnaW5zPC9jb2RlPiBWYXJpYWJsZSBiZWdpbnMgd2l0aCBhIHNlcXVlbmNl IG9mIGNoYXJhY3RlcnM8L2xpPgoJCTxsaT48Y29kZT5jb250YWluczwvY29kZT4gVmFyaWFi bGUgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIChkZWZhdWx0IGZvciAmIzgy MTY7cGFyZW50JiM4MjE3Oyk8L2xpPgoJCTxsaT48Y29kZT5lbmRzPC9jb2RlPiBWYXJpYWJs ZSBlbmRzIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzPC9saT4KCQk8bGk+PGNvZGU+ aXNlbXB0eTwvY29kZT4gVmFyaWFibGUgaXMgZW1wdHkgKGNvbnRhaW5zIG5vdGhpbmcpPC9s aT4KCQk8bGk+PGNvZGU+aXN1c2VkPC9jb2RlPiBWYXJpYWJsZSBoYXMgc29tZSB2YWx1ZTwv bGk+CgkJPGxpPjxjb2RlPmRlZmluZWQ8L2NvZGU+IFZhcmlhYmxlIGlzIHNldCAodXNlZnVs IHdpdGggdXJsdmFyIHZhcmlhYmxlcyk8L2xpPgoJCTxsaT48Y29kZT51bmRlZmluZWQ8L2Nv ZGU+IFZhcmlhYmxlIGlzIG5vdCBzZXQsIG9yIG1pc3NpbmcgZnJvbSB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluZTwvbGk+CgkJPGxpPjxjb2RlPmlzbnVtPC9jb2Rl PiBWYXJpYWJsZSBpcyBhIG51bWJlcjwvbGk+CgkJPGxpPjxjb2RlPmlzYWxwaGE8L2NvZGU+ IFZhcmlhYmxlIGNvbnRhaW5zIGNoYXJhY3RlcnMgb25seTwvbGk+CgkJPGxpPjxjb2RlPmlz YWxudW08L2NvZGU+IFZhcmlhYmxlIGNvbnRhaW5zIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJz IG9ubHk8L2xpPgoJCTxsaT48Y29kZT5pc2xvd2VyPC9jb2RlPiBFdmVyeSBjaGFyYWN0ZXIg aW4gdGhlIHZhcmlhYmxlIGlzIGxvd2VyIGNhc2U8L2xpPgoJCTxsaT48Y29kZT5pc3VwcGVy PC9jb2RlPiBFdmVyeSBjaGFyYWN0ZXIgaW4gdGhlIHZhcmlhYmxlIGlzIHVwcGVyIGNhc2U8 L2xpPgoJCTxsaT48Y29kZT5pc3B1bmN0PC9jb2RlPiBFdmVyeSBjaGFyYWN0ZXIgaW4gdGhl IHZhcmlhYmxlIGlzIHNvbWUgcHVuY3R1YXRpb24gbWFyazwvbGk+CgkJPGxpPjxjb2RlPmlz c3BhY2U8L2NvZGU+IEV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUgdmFyaWFibGUgaXMgYSB3aGl0 ZXNwYWNlIGNoYXJhY3RlciAob3IgdGFiLCBuZXdsaW5lLCBldGMpPC9saT4KCTwvdWw+CgoJ PHA+V2l0aCB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgKGd0LCBsdCwgZ2UsIGxlKSB5b3Ug bWF5IGZpbmQgb2RkIGJlaGF2aW91ciB3aGVuIGNvbXBhcmluZyBudW1iZXJzLiBGb3IgZXhh bXBsZSwgPGNvZGU+dXJsdmFyOnBpYyBndCA2PC9jb2RlPiB3aWxsIHJldHVybiA8c3BhbiBj bGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj4gaWYgdGhlIDxjb2RlPnBpYzwvY29kZT4gdmFyaWFi bGUgaXMgc2V0IHRvICYjODIyMDtmcmVkJiM4MjIxOy4gVGhpcyBpcyBiZWNhdXNlIHRoZSB3 b3JkICYjODIyMDtmcmVkJiM4MjIxOyAob3IgYXQgbGVhc3QgdGhlICYjODIyMDtjaGFyYWN0 ZXIgZiYjODIyMTspIGlzIGdyZWF0ZXIgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5BU0NJ STwvc3Bhbj4gdGFibGUgdGhhbiB0aGUgJiM4MjIwO2NoYXJhY3RlciA2JiM4MjIxOy48L3A+ CgoJPHA+VG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIHlvdSBtYXkgYXBwZW5kIDxjb2Rl PjpOVU08L2NvZGU+IHRvIHRoZSBlbmQgb2YgYW55IG9mIHRoZXNlIDQgb3BlcmF0b3JzIHRv IGZvcmNlIHRoZSBwbHVnaW4gdG8gY2hlY2sgdGhhdCB0aGUgdmFsdWVzIGFyZSBpbnRlZ2Vy cy48L3A+CgoJPHA+QW55IG9mIHRoZSA8Y29kZT5pczwvY29kZT4gb3BlcmF0b3JzIChleGNl cHQgPGNvZGU+aXNzcGFjZTwvY29kZT4pIGNhbiB0YWtlIGFuIGV4dHJhIHBhcmFtZXRlciBh cyB3ZWxsLiBTaW5jZSB0aGV5IGNvbXBhcmUgZXZlcnkgY2hhcmFjdGVyIGFnYWluc3QgdGhl IGdpdmVuIGJlaGF2aW91ciwgc3BhY2UgY2hhcmFjdGVycyBjYW4gbWVzcyB0aGluZ3MgdXAg YSBiaXQuIEZvciBleGFtcGxlIDxjb2RlPmN1c3RvbTEgaXNsb3dlcjwvY29kZT4gd2lsbCBm YWlsIGlmIGN1c3RvbTEgY29udGFpbnMgJiM4MjIwO3RoaXMgaXMgYSB0ZXN0JiM4MjIxOy4g VG8gY2lyY3VtdmVudCB0aGlzLCBhZGQgPGNvZGU+Ok5PU1BBQ0U8L2NvZGU+IHRvIHRoZSBv cGVyYXRvciB3aGljaCB3aWxsIHJlbW92ZSBhbGwgc3BhY2VzIGZyb20gdGhlIHN0cmluZyBi ZWZvcmUgdGVzdGluZyBpdC48L3A+CgoJPHA+Tm90ZSBhbHNvIHRoYXQgd2hpbGUgPGNvZGU+ ZGVmaW5lZDwvY29kZT4gYW5kIDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gZGlmZmVyIHNlbWFu dGljYWxseSBmcm9tIDxjb2RlPmlzdXNlZDwvY29kZT4gYW5kIDxjb2RlPmlzZW1wdHk8L2Nv ZGU+IChyZXNwZWN0aXZlbHkpLCB0aGUgd2F5IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IGFzc2lnbnMgdmFyaWFibGVzIG1lYW5zIHRoYXQsIGZvciB0aGUgbW9zdCBwYXJ0LCB0 aGUgdGVybXMgYXJlIGludGVyY2hhbmdlYWJsZS4gV2hlbiBkZWFsaW5nIHdpdGggdXJsdmFy cyBhbmQgc3ZydmFycywgdGhlIHR3byBzZXRzIG9mIG9wZXJhdG9ycyBiZWhhdmUgaW5kZXBl bmRlbnRseSwgYXMgeW91IHdvdWxkIGV4cGVjdC4gU2VlIDxhIGhyZWY9IiNlZzUiPkV4YW1w bGUgNTwvYT4gZm9yIG1vcmUuIE5laXRoZXIgPGNvZGU+ZGVmaW5lZDwvY29kZT4gbm9yIDxj b2RlPnVuZGVmaW5lZDwvY29kZT4gbWFrZSBzZW5zZSB3aXRoIDxjb2RlPnBhcmVudDwvY29k ZT4sIHNvIHRoZXkgYXJlIGZvcmJpZGRlbi48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAi IGlkPSJ2YWx1ZSI+dmFsdWU8L2g0PgoKCTxwPkxpc3Qgb2YgdmFsdWVzIHRvIGNvbXBhcmUg ZWFjaCBmaWVsZCBpbiB0dXJuIHRvLiBDYW4gYmUgc3RhdGljIHZhbHVlcy90ZXh0IG9yIHRo ZSBuYW1lIG9mIGFueSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZCwgbGlr ZSB0aG9zZSBnaXZlbiBpbiA8YSBocmVmPSIjZmllbGQiPmZpZWxkPC9hPiAoZXhjZXB0ICYj ODIyMDtwYXJlbnQmIzgyMjE7KS48L3A+CgoJPHA+VG8gZGlzdGluZ3Vpc2ggYSA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZCBmcm9tIHN0YXRpYyB0ZXh0LCBwcmVmaXgg dGhlIGZpZWxkIG5hbWUgd2l0aCA8Y29kZT4/PC9jb2RlPi4gRm9yIGV4YW1wbGU6IDxjb2Rl PnZhbHVlPSZxdW90O3RpdGxlJnF1b3Q7PC9jb2RlPiB3aWxsIGNvbXBhcmUgeW91ciBjaG9z ZW4gZmllbGQgYWdhaW5zdCB0aGUgd29yZCAmIzgyMjA7dGl0bGUmIzgyMjE7LCB3aGVyZWFz IDxjb2RlPnZhbHVlPSZxdW90Oz90aXRsZSZxdW90OzwvY29kZT4gd2lsbCBjb21wYXJlIHlv dXIgZmllbGQgYWdhaW5zdCB0aGUgY3VycmVudCBhcnRpY2xlJiM4MjE3O3MgdGl0bGUuPC9w PgoKCTxwPk5vdGUgdGhhdCB5b3UgbWF5IGZpbmQgdXNpbmcgZG91YmxlLXF1b3RlcyBpbiBm aWVsZHMgZ2l2ZXMgdW5leHBlY3RlZCByZXN1bHRzLiBUaGV5IGFyZSBiZXN0IGF2b2lkZWQs IG9yIHdvcmtlZCBhcm91bmQgYnkgdXNpbmcgPGNvZGU+Y29udGFpbnM8L2NvZGU+IGluc3Rl YWQgb2YgPGNvZGU+ZXE8L2NvZGU+LjwvcD4KCgk8aDQgY2xhc3M9ImF0dC1uYW1lICIgaWQ9 ImxvZ2ljIj5sb2dpYzwvaDQ+CgoJPHA+Q2FuIGJlIG9uZSBvZiA8Y29kZT5hbmQ8L2NvZGU+ ICh0aGUgZGVmYXVsdCkgb3IgPGNvZGU+b3I8L2NvZGU+LiBJZiB1c2luZyA8Y29kZT5hbmQ8 L2NvZGU+LCBhbGwgY29uZGl0aW9ucyBtdXN0IGJlIG1ldCBmb3IgYSA8c3BhbiBjbGFzcz0i Y2FwcyI+VFJVRTwvc3Bhbj4gcmVzdWx0LiBJZiB1c2luZyA8Y29kZT5vcjwvY29kZT4sIGFu eSBvZiB0aGUgY29uZGl0aW9ucyB0aGF0IG1hdGNoIHdpbGwgZ2l2ZSBhIDxzcGFuIGNsYXNz PSJjYXBzIj5UUlVFPC9zcGFuPiByZXN1bHQuPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUg IiBpZD0iY2FzZXNlbnNlIj5jYXNlX3NlbnNpdGl2ZTwvaDQ+CgoJPHA+QnkgZGVmYXVsdCwg YWxsIGNvbXBhcmlzb25zIGFyZSBjYXNlLWluc2Vuc2l0aXZlICgwKS4gSWYgeW91IHdpc2gg dG8gbWFrZSB0aGVtIHNlbnNpdGl2ZSB0byBjYXB0aWxpc2F0aW9uLCBzcGVjaWZ5IDxjb2Rl PmNhc2Vfc2Vuc2l0aXZlPSZxdW90OzEmcXVvdDs8L2NvZGU+LiBOb3RlIHRoYXQgaWYgdXNp bmcgPGNvZGU+aXNsb3dlcjwvY29kZT4gb3IgPGNvZGU+aXN1cHBlcjwvY29kZT4gaW4gYSBj b21wYXJpc29uLCBjYXNlIHNlbnNpdGl2aXR5IHdpbGwgYXV0b21hdGljYWxseSBiZSBzd2l0 Y2hlZCBvbiB3aGlsZSB0aGUgdGVzdCBpcyB0YWtpbmcgcGxhY2UuPC9wPgoKCTxoNCBjbGFz cz0iYXR0LW5hbWUgIiBpZD0icGFyYW1kZWxpbSI+cGFyYW1fZGVsaW08L2g0PgoKCTxwPllv dSBub3JtYWxseSBzcGVjaWZ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyB0byB0aGUgPGNvZGU+ ZmllbGQ8L2NvZGU+LCA8Y29kZT5vcGVyYXRvcjwvY29kZT4gYW5kIDxjb2RlPnZhbHVlPC9j b2RlPiBwYXJhbWV0ZXJzLiBTb21ldGltZXMgdGhpcyBtaWdodCBub3QgYmUgZGVzaXJhYmxl IGlmIHlvdSBoYXZlIHVzZWQgdGhhdCBjaGFyYWN0ZXIgaW4gdGhlIG5hbWUgb2YgYSBjdXN0 b20gZmllbGQsIGZvciBleGFtcGxlLiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGNoYW5n ZSB0aGUgZGVsaW1pdGVyIHRvIGFsbW9zdCBhbnl0aGluZyB5b3UgbGlrZSwgZS5nLiBzcGVj aWZ5aW5nIDxjb2RlPnBhcmFtX2RlbGltPSZxdW90Oy8vJnF1b3Q7PC9jb2RlPiBtZWFucyB5 b3Ugd291bGQgc3BlY2lmeSA8ZW0+YWxsPC9lbT4geW91ciBwYXJhbWV0ZXIgbGlzdHMgbGlr ZSB0aGlzOjwvcD4KCgk8cD48Y29kZT5maWVsZD0mcXVvdDtzZWN0aW9uIC8vIHVybHZhcjp0 eXBlJnF1b3Q7IG9wZXJhdG9yPSZxdW90O2VxIC8vIGJlZ2lucyZxdW90OyB2YWx1ZT0mcXVv dDthbmltYWxzIC8vIHRpZ2VyJnF1b3Q7PC9jb2RlPjwvcD4KCgk8aDQgY2xhc3M9ImF0dC1u YW1lICIgaWQ9Im1vZGRlbGltIj5tb2RfZGVsaW08L2g0PgoKCTxwPlZlcnkgc2ltaWxhciB0 byA8YSBocmVmPSIjcGFyYW1kZWxpbSI+cGFyYW1fZGVsaW08L2E+LCB0aGlzIGdvdmVybnMg dGhlIGRlbGltaXRlciB0byB1c2UgYmV0d2VlbiBhbiBvcHRpb24gYW5kIGl0cyBtb2RpZmll ciAoZS5nLiB0aGUgdGhpbmcgc2VwYXJhdGluZyB1cmx2YXIgb3Igc3ZydmFyIGZyb20gdGhl IHZhcmlhYmxlIG5hbWUsIG9yIHBhcmVudCBmcm9tIDxjb2RlPkxWTDwvY29kZT4gYW5kIDxj b2RlPkNBVDwvY29kZT4sIGFuZCBhbHNvIHRoZSBjaGFyYWN0ZXIocykgdGhhdCBzZXBhcmF0 ZSBhbiBvcGVyYXRvciBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+TlVNPC9zcGFuPiBv ciA8c3BhbiBjbGFzcz0iY2FwcyI+Tk9TUEFDRTwvc3Bhbj4gbW9kaWZpZXJzKS4gSXQgaXMg dGhlIGNvbG9uICg6KSBieSBkZWZhdWx0LjwvcD4KCgk8cD5Ob3RlIHRoYXQgaW4gYm90aCAm IzgyMTY7ZGVsaW0mIzgyMTc7IGF0dHJpYnV0ZXMsIHNvbWUgY2hhcmFjdGVyIHNlcXVlbmNl cyBtYXkgY2F1c2UgcHJvYmxlbXMgKHF1b3RlcyAmIzgyMTI7IHNpbmdsZSBvciBkb3VibGUg JiM4MjEyOyBzcHJpbmcgdG8gbWluZDsgb3RoZXJzIGxpa2UgcGFyZW50aGVzZXMgbWF5IGFs c28gY2F1c2UgdGhlIHBsdWdpbiB0byBleHBsb2RlKS48L3A+CgoJPGgyPkV4YW1wbGVzPC9o Mj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3NlY3Rpb24s IGlkJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7YmVnaW5zLCBndCZxdW90OwogICAgIHZh bHVlPSZxdW90O2xpb24sIDEyJnF1b3Q7Jmd0OwogJmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZs dDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Tm90IHRvZGF5LCB0aGFua3MmbHQ7L3AmZ3Q7 CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNoZWNrcyBpZiB0aGUg Y3VycmVudCBzZWN0aW9uIG5hbWUgYmVnaW5zIHdpdGggdGhlIHdvcmQgJiM4MjIwO2xpb24m IzgyMjE7IGFuZCB0aGUgYXJ0aWNsZSBJRCBpcyBncmVhdGVyIHRoYW4gMTIuIERpc3BsYXlz IHRoZSBhcnRpY2xlIGlmIGJvdGggY29uZGl0aW9ucyBhcmUgbWV0IG9yIGRpc3BsYXlzIHRo ZSB0ZXh0ICYjODIyMDtOb3QgdG9kYXksIHRoYW5rcyYjODIyMTsgaWYgbm90LjwvcD4KCgk8 aDMgaWQ9ImVnMiI+RXhhbXBsZSAyPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3N1bW1hcnksIGNhdGVn b3J5LCB1cmx2YXI6cGljJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7aXN1c2VkLCBlcSwg aXNudW0mcXVvdDsKICAgICB2YWx1ZT0mcXVvdDssIGFuaW1hbCAsJnF1b3Q7ICZndDsKICZs dDt0eHA6YXJ0aWNsZSAvJmd0OwombHQ7dHhwOmVsc2UgLyZndDsKICZsdDtwJmd0O05vdCB0 b2RheSwgdGhhbmtzJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5DaGVja3MgaWYgdGhlIGN1c3RvbSBmaWVsZCBsYWJlbGxlZCAmIzgyMjA7c3Vt bWFyeSYjODIyMTsgaGFzIHNvbWUgZGF0YSBpbiBpdCwgY2hlY2tzIGlmIHRoZSBnbG9iYWwg Y2F0ZWdvcnkgZXF1YWxzICYjODIyMDthbmltYWwmIzgyMjE7IGFuZCB0ZXN0cyBpZiB0aGUg dXJsdmFyIDxjb2RlPnBpYzwvY29kZT4gaXMgbnVtZXJpYyAoZS5nLiA8Y29kZT4/cGljPTU8 L2NvZGU+KS48L3A+CgoJPHA+SWYgYWxsIHRoZXNlIGNvbmRpdGlvbnMgYXJlIG1ldCB0aGUg YXJ0aWNsZSBpcyBkaXNwbGF5ZWQsIGVsc2UgdGhlIG1lc3NhZ2UgaXMgc2hvd24uIE5vdGUg dGhhdCA8Y29kZT5pc3VzZWQ8L2NvZGU+IGFuZCA8Y29kZT5pc251bTwvY29kZT4gZG9uJiM4 MjE3O3QgdGFrZSBhcmd1bWVudHMgZm9yIDxjb2RlPnZhbHVlPC9jb2RlPiBhbmQgdGhlaXIg cG9zaXRpb25zIGFyZSBoZWxkIGJ5IGVtcHR5IGNvbW1hcyAodGVjaG5pY2FsbHkgdGhlIGxh c3QgY29tbWEgaXNuJiM4MjE3O3QgbmVlZGVkIGJ1dCBpdCBoZWxwcyBrZWVwIGV2ZXJ5dGhp bmcgbmVhdCBpZiB5b3UgYWRkIGZ1cnRoZXIgdGVzdHMgbGF0ZXIgb24pLjwvcD4KCgk8aDMg aWQ9ImVnMyI+RXhhbXBsZSAzPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O2FydGljbGVfaW1hZ2UsIHN2 cnZhcjpIVFRQX1VTRVJfQUdFTlQmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtlcSwgY29u dGFpbnMmcXVvdDsKICAgICB2YWx1ZT0mcXVvdDt1cmx2YXI6cGljLCBTYWZhcmkmcXVvdDsK ICAgICBsb2dpYz0mcXVvdDtvciZxdW90OyZndDsKICZsdDt0eHA6YXJ0aWNsZSAvJmd0Owom bHQ7dHhwOmVsc2UgLyZndDsKICZsdDtwJmd0O05vdCB0b2RheSwgdGhhbmtzJmx0Oy9wJmd0 OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Db21wYXJlcyAoZm9y IGVxdWFsaXR5KSB0aGUgY3VycmVudCBhcnRpY2xlIGltYWdlIGlkIHdpdGggdGhlIHZhbHVl IG9mIHRoZSB1cmwgdmFyaWFibGUgPGNvZGU+cGljPC9jb2RlPiBhbmQgY2hlY2tzIGlmIHRo ZSB2YWx1ZSBvZiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8L3NwYW4+X1VTRVJfQUdF TlQgc3RyaW5nIGNvbnRhaW5zICYjODIyMDtTYWZhcmkmIzgyMjE7LiBUaGlzIGV4YW1wbGUg dXNlcyB0aGUgJiM4MjE2O29yJiM4MjE3OyBsb2dpYywgaGVuY2UgaWYgPGVtPmVpdGhlcjwv ZW0+IGNvbmRpdGlvbiBpcyBtZXQgdGhlIGFydGljbGUgaXMgc2hvd24sIG90aGVyd2lzZSB0 aGUgJiM4MjE2O25vdCB0b2RheSYjODIxNzsgbWVzc2FnZSBpcyBkaXNwbGF5ZWQuPC9wPgoK CTxoMyBpZD0iZWc0Ij5FeGFtcGxlIDQ8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7cGFyZW50OkxWTDIm cXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtlcSZxdW90OwogICAgIHZhbHVlPSZxdW90O21h bW1hbCZxdW90OyZndDsKICZsdDt0eHA6YXJ0aWNsZSAvJmd0OwombHQ7dHhwOmVsc2UgLyZn dDsKICZsdDtwJmd0O05vdCB0b2RheSwgdGhhbmtzJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRf aWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5DaGVja3MgdGhlIDJuZCBzdWItY2F0ZWdvcnkg b2YgdGhlIGdsb2JhbCBjYXRlZ29yeSYjODIxNztzIHRyZWUgdG8gc2VlIGlmIGl0IGVxdWFs cyAmIzgyMjA7bWFtbWFsJiM4MjIxOy4gSWYgaXQgZG9lcywgc2hvdyB0aGUgYXJ0aWNsZTsg aWYgbm90IHNob3cgdGhlIG1lc3NhZ2UuIFJlbW92aW5nIHRoZSA8Y29kZT46TFZMMjwvY29k ZT4gKHdoaWNoIGFsbG93cyB5b3UgdG8gYWxzbyByZW1vdmUgdGhlIG9wZXJhdG9yIHBhcmFt ZXRlciB0byBmb3JjZSB0aGUgY29tcGFyaXNvbiB0byBiZSB0aGUgZGVmYXVsdCAmIzgyMjA7 Y29udGFpbnMmIzgyMjE7KSBjaGVja3MgaWYgdGhlIGN1cnJlbnQgZ2xvYmFsIGNhdGVnb3J5 IGlzIGEgY2hpbGQgb2YgJiM4MjE2O21hbW1hbCYjODIxNzsgKGF0IGFueSBsZXZlbCkuPC9w PgoKCTxwPkNoYW5nZSB0aGUgZmllbGQgdG8gPGNvZGU+cGFyZW50OkNBVDE8L2NvZGU+IHRv IHNlZSBpZiB0aGUgYXJ0aWNsZSYjODIxNztzIGNhdGVnb3J5MSBtYXRjaGVzICYjODIxNjtt YW1tYWwmIzgyMTc7IGF0IGFueSBsZXZlbCwgb3IgdXNlIDxjb2RlPmZpZWxkPSZxdW90O3Bh cmVudDpDQVQxOkxWTDImcXVvdDs8L2NvZGU+IHRvIGNvbWJpbmUgdGhlIGNoZWNrcy48L3A+ CgoJPGgzIGlkPSJlZzUiPkV4YW1wbGUgNTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDt1cmx2YXI6cGlj LCB1cmx2YXI6cGFnZSZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2d0Ok5VTSwgdW5kZWZp bmVkJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7P2FydGljbGVfaW1hZ2UsJnF1b3Q7Jmd0Owog Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Tm90 IHRvZGF5LCB0aGFua3MmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPlRlc3RzIGlmIHRoZSB1cmwgdmFyaWFibGUgPGNvZGU+cGljPC9jb2RlPiBp cyBzdHJpY3RseSBudW1lcmljYWxseSBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIGluIHRoZSBj dXJyZW50IGFydGljbGUmIzgyMTc7cyA8Y29kZT5hcnRpY2xlX2ltYWdlPC9jb2RlPiBmaWVs ZCBhbmQgdGhhdCB0aGUgdXJsIHZhcmlhYmxlIDxjb2RlPnBhZ2U8L2NvZGU+IGlzIG1pc3Np bmcgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gYWRkcmVzcy4gQ29t cGFyZSB0aGUgb3V0Y29tZSBvZiB0aGlzIHRlc3Qgd2l0aCB0aGUgb3RoZXIgb3BlcmF0b3Jz IHVzaW5nIHRoZSBmb2xsb3dpbmcgdGFibGUgd2hlbiB0ZXN0aW5nIHRoZSA8Y29kZT5wYWdl PC9jb2RlPiB1cmx2YXI6PC9wPgoKCTx0YWJsZT4KCQk8dHI+CgkJCTx0aD48c3BhbiBjbGFz cz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj48L3NwYW4+IDwvdGg+CgkJ CTx0aD5kZWZpbmVkIDwvdGg+CgkJCTx0aD51bmRlZmluZWQgPC90aD4KCQkJPHRoPmlzdXNl ZCA8L3RoPgoJCQk8dGg+aXNlbXB0eSA8L3RoPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IGlu ZGV4LnBocD9wYWcgPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xh c3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFz cz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJ CQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3Nw YW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFz cz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8 dGQ+IGluZGV4LnBocD9wYWdlPSA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48 c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNw YW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+ IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5G QUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxz cGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQk8L3RyPgoJCTx0 cj4KCQkJPHRkPiBpbmRleC5waHA/cGFnZT00IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9 ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJ PHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFu Pjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9 ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJj YXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCTwv dHI+Cgk8L3RhYmxlPgoKCTxoMyBpZD0iZWc2Ij5FeGFtcGxlIDY8L2gzPgoKCTxwPlB1dCB0 aGlzIGluc2lkZSB5b3VyIDxjb2RlPnBsYWlubGlua3M8L2NvZGU+IGZvcm0gYW5kIGV4ZWN1 dGUgYSA8Y29kZT4mbHQ7dHhwOmxpbmtsaXN0IC8mZ3Q7PC9jb2RlPiBmcm9tIGFuIGFydGlj bGUgcGFnZS9mb3JtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O2lkLCBpZCZxdW90OwogICAgIG9wZXJh dG9yPSZxdW90O2dlOk5VTSwgbGU6TlVNJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7dXJsdmFy Om1pbiwgdXJsdmFyOm1heCZxdW90OyZndDsKICAmbHQ7dHhwOmxpbmtkZXNjdGl0bGUgLyZn dDsmbHQ7YnIgLyZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ VGhhdCB3aWxsIGxpc3Qgb25seSB0aGUgbGlua3MgdGhhdCBoYXZlIElEcyBiZXR3ZWVuIHRo ZSA8Y29kZT5taW48L2NvZGU+IGFuZCA8Y29kZT5tYXg8L2NvZGU+IHZhcmlhYmxlcyBzcGVj aWZpZWQgb24gdGhlIGFkZHJlc3MgYmFyLjwvcD4KCgk8aDMgaWQ9ImVnNyI+RXhhbXBsZSA3 PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6 c21kX2lmIGZpZWxkPSZxdW90O3VybHZhcjpwcm9kdWN0X2NvZGUmcXVvdDsKICAgICBvcGVy YXRvcj0mcXVvdDtpc2FsbnVtJnF1b3Q7Jmd0OwogICZsdDt0eHA6b3V0cHV0X2Zvcm0gZm9y bT0mcXVvdDtzaG93X3Byb2R1Y3QmcXVvdDsgLyZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAm bHQ7cCZndDtJbnZhbGlkIHByb2R1Y3QgY29kZSZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lm Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGVzdHMgdG8gc2VlIGlmIHRoZSBwcm9kdWN0X2Nv ZGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgaXMgYWxwaGFudW1l cmljIGFuZCBkaXNwbGF5cyBhIGZvcm0gaWYgc28uPC9wPgoKCTxoMiBjbGFzcz0iY2hhbmdl bG9nIj5DaGFuZ2Vsb2c8L2gyPgoKCTx1bD4KCQk8bGk+MzAgRGVjIDA3IHwgPGEgaHJlZj0i aHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfaWZfdjAuMS50eHQiPnYwLjE8 L2E+IHwgSW5pdGlhbCByZWxlYXNlPC9saT4KCQk8bGk+MzAgRGVjIDA3IHwgPGEgaHJlZj0i aHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfaWZfdjAuMi50eHQiPnYwLjI8 L2E+IHwgQWRkZWQgcGFyZW50IGNhdGVnb3J5IGNoZWNraW5nICh0aGFua3MgdGhlX2dob3N0 KTwvbGk+CgkJPGxpPjAyIEphbiAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNv bS9kb3dubG9hZHMvc21kX2lmX3YwLjMudHh0Ij52MC4zPC9hPiB8IEFkZGVkIGRlZmluZWQv dW5kZWZpbmVkIGFuZCBzdHJpY3QgbnVtZXJpYyBjb21wYXJpc29uczwvbGk+CgkJPGxpPjA2 IEphbiAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21k X2lmX3YwLjQudHh0Ij52MC40PC9hPiB8IEFkZGVkIDxjb2RlPj88L2NvZGU+IG5vdGF0aW9u IHRvIGFsbG93IHRoZSB2YWx1ZSB0byByZWFkIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IGZpZWxkczsgYmV0dGVyIHF1b3RlIHN1cHBvcnQgKGJvdGggdGhhbmtzIE5laWxBKTwv bGk+CgkJPGxpPjA2IEphbiAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9k b3dubG9hZHMvc21kX2lmX3YwLjQxLnR4dCI+djAuNDE8L2E+IHwgRml4ZWQgbG93ZXIgY2Fz ZSBmaWVsZCBuYW1lcyBhbmQgdW5kZWZpbmVkIGluZGV4IGVycm9yICh0aGFua3MgcGV0ZXJq KTwvbGk+CgkJPGxpPjE0IEphbiAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNv bS9kb3dubG9hZHMvc21kX2lmX3YwLjUudHh0Ij52MC41PC9hPiB8IEFkZGVkIGNhc2Vfc2Vu c2l0aXZlIG9wdGlvbjsgbWFkZSAmIzgyMTY7Y29udGFpbnMmIzgyMTc7IHRoZSBkZWZhdWx0 IGZvciAmIzgyMTY7cGFyZW50JiM4MjE3OyB0ZXN0czsgaW1wcm92ZWQgaGVscCAoYWxsIHRo YW5rcyB0aGVfZ2hvc3QpOyBhZGRlZCBkZWxpbSBvcHRpb25zPC9saT4KCQk8bGk+MTUgSmFu IDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfaWZf djAuNTEudHh0Ij52MC41MTwvYT4gfCBGaXhlZCBkZWZpbmVkL3VuZGVmaW5lZCBzeW50YXgg ZXJyb3I7IHRpZ2h0ZW5lZCBpc3VzZWQvaXNlbXB0eSB0byBkaXN0aW5ndWlzaCB0aGVtIGZy b20gZGVmaW5lZC91bmRlZmluZWQ8L2xpPgoJCTxsaT4yNSBNYXkgMDggfCA8YSBocmVmPSJo dHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9pZl92MC42LnR4dCI+djAuNjwv YT4gfCBGaXhlZCAmIzgyMTY7dW5kZWZpbmVkIGluZGV4JiM4MjE3OyBlcnJvcnMgKHRoYW5r cyByZWRib3QgYW5kIHRoZV9naG9zdCkgOyBhZGRlZCBtb3JlIHByZXRleHQgdmFyaWFibGVz IDsgYWRkZWQgbW9yZSA8Y29kZT5pczwvY29kZT4gY2hlY2tzIChhbmQgdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5OT1NQQUNFPC9zcGFuPiBtb2RpZmllcikgOyBhbGxvd2VkIGZpbGUgYW5k IGxpbmsgdGVzdHMgKGluY2x1ZGluZyBwYXJlbnQgY2F0ZWdvcmllcyk8L2xpPgoJPC91bD4K Cgk8cD48L2Rpdj48L3A+CjwhLS0gLS0tIEJFR0lOIFBMVUdJTiBDU1MgLS0tIC0tPgo8c3R5 bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjMgO30KI3Nt ZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJp ZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkND O30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRlcjox cHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29sb3I6ICNmMGU2OGM7IGRpc3BsYXk6Ymxv Y2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFkZGluZzoxMHB4OyB9CiNzbWRfaGVscCBh OmxpbmssICNzbWRfaGVscCBhOnZpc2l0ZWQgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0 aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0 b206MXB4O30KI3NtZF9oZWxwIGE6aG92ZXIsICNzbWRfaGVscCBhOmFjdGl2ZSB7IGNvbG9y OiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDJweCBzb2xp ZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgaDEgeyBjb2xvcjogIzM2 OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7IHRleHQtYWxp Z246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQg YmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3Jn aWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsgY29sb3I6ICM2OTM7IGZvbnQ6IGJv bGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2lu OiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO30KI3NtZF9oZWxwIGg0IHsg Zm9udDogYm9sZCAxMXB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4 OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRf aGVscCAuYXR0LW5hbWUgeyBmb250LXdlaWdodDpib2xkOyB9CiNzbWRfaGVscCAubWFuZCB7 IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAg dGFibGUge3dpZHRoOjEwMCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbTox ZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5 OyBwYWRkaW5nOi41ZW0gMDt9Cjwvc3R5bGU+CjwhLS0gLS0tIEVORCBQTFVHSU4gQ1NTIC0t LSAtLT4KIjtzOjM6ImNzcyI7czoxMjczOiI8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21k X2hlbHAgeyBsaW5lLWhlaWdodDoxLjMgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdo dDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3Nw YWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sg eyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91 bmQtY29sb3I6ICNmMGU2OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBw eDsgcGFkZGluZzoxMHB4OyB9CiNzbWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZpc2l0 ZWQgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9t OiAxcHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6aG92 ZXIsICNzbWRfaGVscCBhOmFjdGl2ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246 IG5vbmU7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbTox cHg7fQojc21kX2hlbHAgaDEgeyBjb2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBz YW5zLXNlcmlmOyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAg aDIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7 IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9o ZWxwIGgzIHsgY29sb3I6ICM2OTM7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJp ZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9y bTogdXBwZXJjYXNlO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFyaWFsLCBz YW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0 LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXR0LW5hbWUgeyBmb250LXdl aWdodDpib2xkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVy OjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjEwMCU7IHRleHQt YWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRf aGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9Cjwvc3R5 bGU+IjtzOjQ6ImNvZGUiO3M6Nzg1NToiZnVuY3Rpb24gc21kX2lmKCRhdHRzLCR0aGluZykg ewoJZ2xvYmFsICR0aGlzYXJ0aWNsZSwgJHByZXRleHQsICR0aGlzZmlsZSwgJHRoaXNsaW5r OwoKCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJJ2ZpZWxkJyA9PiAnJywKCQknb3BlcmF0b3In ID0+ICcnLAoJCSd2YWx1ZScgPT4gJycsCgkJJ2xvZ2ljJyA9PiAnYW5kJywKCQknY2FzZV9z ZW5zaXRpdmUnID0+IDAsCgkJJ3BhcmFtX2RlbGltJyA9PiAnLCcsCgkJJ21vZF9kZWxpbScg PT4gJzonLAoJCSdkZWJ1ZycgPT4gJzAnLAoJKSwgJGF0dHMpKTsKCgkvLyBTcGVjaWFsIGZp ZWxkIG5hbWVzIHRoYXQgcmVmZXIgdG8gJHByZXRleHQgb3IgZWxzZXdoZXJlIC0gZXZlcnl0 aGluZyBlbHNlIGlzIGFzc3VtZWQgdG8KCS8vIGV4aXN0IGluICR0aGlzYXJ0aWNsZSBzbyBj dXN0b20gZmllbGRzIGNhbiBiZSB1c2VkCgkkYWxsUHR4dCA9IGFycmF5KAoJCSJpZCIgPT4g JyRwcmV0ZXh0WyJpZCJdJywKCQkic2VjdGlvbiIgPT4gJyRwcmV0ZXh0WyJzIl0nLAoJCSJj YXRlZ29yeSIgPT4gJyRwcmV0ZXh0WyJjIl0nLAoJCSJxdWVyeSIgPT4gJyRwcmV0ZXh0WyJx Il0nLAoJCSJwZyIgPT4gJyRwcmV0ZXh0WyJwZyJdJywKCQkibW9udGgiID0+ICckcHJldGV4 dFsibW9udGgiXScsCgkJImF1dGhvciIgPT4gJyRwcmV0ZXh0WyJhdXRob3IiXScsCgkJInN0 YXR1cyIgPT4gJyRwcmV0ZXh0WyJzdGF0dXMiXScsCgkJInBhZ2UiID0+ICckcHJldGV4dFsi cGFnZSJdJywKCQkibmV4dF9pZCIgPT4gJyRwcmV0ZXh0WyJuZXh0X2lkIl0nLAoJCSJuZXh0 X3RpdGxlIiA9PiAnJHByZXRleHRbIm5leHRfdGl0bGUiXScsCgkJIm5leHRfdXRpdGxlIiA9 PiAnJHByZXRleHRbIm5leHRfdXRpdGxlIl0nLAoJCSJwcmV2X2lkIiA9PiAnJHByZXRleHRb InByZXZfaWQiXScsCgkJInByZXZfdGl0bGUiID0+ICckcHJldGV4dFsicHJldl90aXRsZSJd JywKCQkicHJldl91dGl0bGUiID0+ICckcHJldGV4dFsicHJldl91dGl0bGUiXScsCgkJInBl cm1saW5rX21vZGUiID0+ICckcHJldGV4dFsicGVybWxpbmtfbW9kZSJdJywKCSk7CgkvLyBF YWNoIGVudHJ5IGhhcyB0aGUgb3BlcmF0aW9uIHRvIGJlIGV2YWwoKWQgbGF0ZXIgYW5kIGEg bGlzdCBvZiBkaXNhbGxvd2VkIGZpZWxkcwoJJGFsbE9wcyA9IGFycmF5KAoJCSdlcScgPT4g YXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIEZJRUxEID09PSBWQUxVRScsICcnKSwKCQknbm90 JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgRklFTEQgIT09IFZBTFVFJywgJycpLAoJ CSdndCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklFTEQgPiBDQVNUIFZB TFVFJywgJycpLAoJCSdnZScgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklF TEQgPj0gQ0FTVCBWQUxVRScsICcnKSwKCQknbHQnID0+IGFycmF5KCdpc3NldChWQVJOQU1F KSAmJiBDQVNUIEZJRUxEIDwgQ0FTVCBWQUxVRScsICcnKSwKCQknbGUnID0+IGFycmF5KCdp c3NldChWQVJOQU1FKSAmJiBDQVNUIEZJRUxEIDw9IENBU1QgVkFMVUUnLCAnJyksCgkJJ2Jl Z2lucycgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIHN0cnBvcyhGSUVMRCwgVkFMVUUp ID09PSAwJywgJycpLAoJCSdjb250YWlucycgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYm IHN0cnBvcyhGSUVMRCwgVkFMVUUpICE9PSBmYWxzZScsICcnKSwKCQknZW5kcycgPT4gYXJy YXkoJ2lzc2V0KFZBUk5BTUUpICYmIHN1YnN0cihGSUVMRCwgc3RybGVuKEZJRUxEKSAtIHN0 cmxlbihWQUxVRSkpID09PSBWQUxVRScsICcnKSwKCQknZGVmaW5lZCcgPT4gYXJyYXkoJ2lz c2V0KFZBUk5BTUUpJywgJ3BhcmVudCcpLAoJCSd1bmRlZmluZWQnID0+IGFycmF5KCchaXNz ZXQoVkFSTkFNRSknLCAncGFyZW50JyksCgkJJ2lzZW1wdHknID0+IGFycmF5KCdpc3NldChW QVJOQU1FKSAmJiBGSUVMRCA9PSAiIicsICcnKSwKCQknaXN1c2VkJyA9PiBhcnJheSgnaXNz ZXQoVkFSTkFNRSkgJiYgRklFTEQgIT0gIiInLCAnJyksCgkJJ2lzbnVtJyA9PiBhcnJheSgn aXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfZGlnaXQoKHN0cmluZylGSUVMRCknLCAnJyksCgkJ J2lzYWxwaGEnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBjdHlwZV9hbHBoYSgoc3Ry aW5nKUZJRUxEKScsICcnKSwKCQknaXNhbG51bScgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUp ICYmIGN0eXBlX2FsbnVtKChzdHJpbmcpRklFTEQpJywgJycpLAoJCSdpc2xvd2VyJyA9PiBh cnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfbG93ZXIoKHN0cmluZylGSUVMRCknLCAn JyksCgkJJ2lzdXBwZXInID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBjdHlwZV91cHBl cigoc3RyaW5nKUZJRUxEKScsICcnKSwKCQknaXNwdW5jdCcgPT4gYXJyYXkoJ2lzc2V0KFZB Uk5BTUUpICYmIGN0eXBlX3B1bmN0KChzdHJpbmcpRklFTEQpJywgJycpLAoJCSdpc3NwYWNl JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfc3BhY2UoKHN0cmluZylGSUVM RCknLCAnJyksCgkpOwoKCSRudW1lcmljT3BzID0gImd0LCBnZSwgbHQsIGxlIjsKCSRjYXNl T3BzID0gImlzbG93ZXIsIGlzdXBwZXIiOwoJJHNwYWNlT3BzID0gImlzbnVtLCBpc2FscGhh LCBpc2FsbnVtLCBpc2xvd2VyLCBpc3VwcGVyLCBpc3B1bmN0IjsKCSRmaWVsZHMgPSBkb19s aXN0KCRmaWVsZCwgJHBhcmFtX2RlbGltKTsKCSRvcHMgPSBkb19saXN0KCRvcGVyYXRvciwg JHBhcmFtX2RlbGltKTsKCSRudW1PcHMgPSBjb3VudCgkb3BzKTsKCSR2YWxzID0gZG9fbGlz dCgkdmFsdWUsICRwYXJhbV9kZWxpbSk7CgkkbnVtVmFscyA9IGNvdW50KCR2YWxzKTsKCSRw YXJlbnRDYXRzID0gJyc7IC8vIFBsYWNlaG9sZGVyIGZvciB0aGUgY29uY2F0ZW5hdGVkIGxp c3Qgb2YgY2F0ZWdvcnkgbGVhZiBub2RlcwoJJHR5cGUgPSAoJHRoaXNmaWxlKSA/ICJmaWxl IiA6ICgoJHRoaXNsaW5rKSA/ICJsaW5rIiA6ICJhcnRpY2xlIik7Cgkkb3V0ID0gYXJyYXko KTsKCglmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJGZpZWxkcyk7ICRpZHgrKykgewoJ CSRmbGQgPSAkZmllbGRzWyRpZHhdOwoJCSRmbGRQYXJ0cyA9IGV4cGxvZGUoJG1vZF9kZWxp bSwgJGZsZCk7CgkJJHZhbCA9ICgkaWR4IDwgJG51bVZhbHMpID8gJHZhbHNbJGlkeF0gOiAn JzsKCQkkdmFsUGFydHMgPSBleHBsb2RlKCRtb2RfZGVsaW0sICR2YWwpOwoJCSRvcCA9ICgk aWR4IDwgJG51bU9wcyAmJiAkb3BzWyRpZHhdICE9ICcnKSA/ICRvcHNbJGlkeF0gOiAoKCRm bGRQYXJ0c1swXT09InBhcmVudCIpID8gImNvbnRhaW5zIiA6ICJlcSIpOwoJCSRvcFBhcnRz ID0gZXhwbG9kZSgkbW9kX2RlbGltLCAkb3ApOwoJCSRvcCA9ICRzdG9yZWRPcCA9IChhcnJh eV9rZXlfZXhpc3RzKCRvcFBhcnRzWzBdLCAkYWxsT3BzKSkgPyAkb3BQYXJ0c1swXSA6ICJl cSI7CgkJJGNhc3QgPSAoKGNvdW50KCRvcFBhcnRzKSA9PSAyKSAmJiAoJG9wUGFydHNbMV0g PT09ICJOVU0iKSAmJiAoaW5fbGlzdCgkb3AsICRudW1lcmljT3BzKSkpID8gJyhpbnQpJyA6 ICcnOwoJCSRraWxsU3BhY2VzID0gKChjb3VudCgkb3BQYXJ0cykgPT0gMikgJiYgKCRvcFBh cnRzWzFdID09PSAiTk9TUEFDRSIpICYmIChpbl9saXN0KCRvcCwgJHNwYWNlT3BzKSkpID8g dHJ1ZSA6IGZhbHNlOwoJCSRjYXNlX3NlbnNpdGl2ZSA9IChpbl9saXN0KCRvcCwgJGNhc2VP cHMpKSA/IDEgOiAkY2FzZV9zZW5zaXRpdmU7CgkJaWYgKCRkZWJ1ZykgewoJCQllY2hvICdU RVNUICcuKCRpZHgrMSkubjsKCQkJZG1wKCRmbGRQYXJ0cywgJG9wUGFydHMsICR2YWxQYXJ0 cyk7CgkJfQoJCS8vIEdldCB0aGUgb3BlcmF0b3IgcmVwbGFjZW1lbnQgY29kZQoJCSRleGNs dWRlID0gZG9fbGlzdCgkYWxsT3BzWyRvcF1bMV0pOwoJCSRvcCA9ICRhbGxPcHNbJG9wXVsw XTsKCgkJLy8gQXMgbG9uZyBhcyB0aGUgY3VycmVudCBvcGVyYXRvciBhbGxvd3MgdGhpcyBm aWVsZC4uLgoJCWlmICghaW5fYXJyYXkoJGZsZFBhcnRzWzBdLCAkZXhjbHVkZSkpIHsKCQkJ Ly8gTWFrZSB1cCB0aGUgdGVzdCBmaWVsZCB2YXJpYWJsZQoJCQlpZiAoaXNzZXQoJHRoaXNm aWxlWyRmbGRQYXJ0c1swXV0pKSB7CgkJCQkkZmxkID0gJyR0aGlzZmlsZVsiJy4kZmxkUGFy dHNbMF0uJyJdJzsKCQkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2xpbmtbJGZsZFBhcnRzWzBd XSkpIHsKCQkJCSRmbGQgPSAnJHRoaXNsaW5rWyInLiRmbGRQYXJ0c1swXS4nIl0nOwoJCQl9 IGVsc2UgaWYgKGFycmF5X2tleV9leGlzdHMoJGZsZFBhcnRzWzBdLCAkYWxsUHR4dCkpIHsK CQkJCSRmbGQgPSAkYWxsUHR4dFskZmxkUGFydHNbMF1dOwoJCQl9IGVsc2UgaWYgKCRmbGRQ YXJ0c1swXSA9PSAicGFyZW50IikgewoJCQkJJGxldmVsID0gJyc7CgkJCQlmb3JlYWNoICgk ZmxkUGFydHMgYXMgJHBhcnQpIHsKCQkJCQlpZiAoJHBhcnQgPT0gInBhcmVudCIpIHsKCQkJ CQkJJHRoZUNhdCA9ICgkdGhpc2ZpbGUpID8gJHRoaXNmaWxlWydjYXRlZ29yeSddIDogKCgk dGhpc2xpbmspID8gJHRoaXNsaW5rWydjYXRlZ29yeSddIDogJHByZXRleHRbJ2MnXSk7CgkJ CQkJfSBlbHNlIGlmIChzdHJwb3MoJHBhcnQsICJDQVQiKSA9PT0gMCkgewoJCQkJCQkkdGhl Q2F0ID0gJHRoaXNhcnRpY2xlWyJjYXRlZ29yeSIuc3Vic3RyKCRwYXJ0LCAzKV07CgkJCQkJ fSBlbHNlIGlmIChzdHJwb3MoJHBhcnQsICJMVkwiKSA9PT0gMCkgewoJCQkJCQkkbGV2ZWwg PSBzdWJzdHIoJHBhcnQsIDMpOwoJCQkJCX0KCQkJCX0KCgkJCQkkdHJlZSA9IGdldFRyZWVQ YXRoKGRvU2xhc2goJHRoZUNhdCksICR0eXBlKTsKCQkJCWlmICgkZGVidWcpIHsKCQkJCQll Y2hvICJDQVRFR09SWSBUUkVFOiI7CgkJCQkJZG1wKCR0cmVlKTsKCQkJCX0KCQkJCSRpdGVt cyA9IGFycmF5KCk7CgkJCQlmb3JlYWNoICgkdHJlZSBhcyAkbGVhZikgewoJCQkJCWlmICgk bGVhZlsnbmFtZSddID09ICJyb290IiB8fCAkbGVhZlsnbmFtZSddID09ICR0aGVDYXQpIHsK CQkJCQkJY29udGludWU7CgkJCQkJfSBlbHNlIGlmICgkbGV2ZWwgPT0gJycgfHwgJGxldmVs ID09ICRsZWFmWydsZXZlbCddKSB7CgkJCQkJCSRpdGVtc1tdID0gJGxlYWZbJ25hbWUnXTsK CQkJCQl9CgkJCQl9CgkJCQkkcGFyZW50Q2F0cyA9IGltcGxvZGUoIiAiLCAkaXRlbXMpOwoJ CQkJJGZsZCA9ICckcGFyZW50Q2F0cyc7CgkJCX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09 ICJ1cmx2YXIiKSB7CgkJCQlpZiAoY291bnQoJGZsZFBhcnRzKSA9PSAyKSB7CgkJCQkJJGZs ZCA9ICckX0dFVFsiJy4kZmxkUGFydHNbMV0uJyJdJzsKCQkJCX0KCQkJfSBlbHNlIGlmICgk ZmxkUGFydHNbMF0gPT0gInN2cnZhciIpIHsKCQkJCWlmIChjb3VudCgkZmxkUGFydHMpID09 IDIpIHsKCQkJCQkkZmxkID0gJyRfU0VSVkVSWyInLiRmbGRQYXJ0c1sxXS4nIl0nOwoJCQkJ fQoJCQl9IGVsc2UgewoJCQkJJGZsZCA9ICckdGhpc2FydGljbGVbIicuc3RydG9sb3dlcigk ZmxkUGFydHNbMF0pLiciXSc7CgkJCX0KCgkJCS8vIFRha2UgYSBjb3B5IG9mICRmbGQgdG8g dXNlIGluIGFueSBpc3NldCgpIHJlcXVlc3RzCgkJCSRmbGRDbGVhbiA9ICRmbGQ7CgkJCWlm ICgka2lsbFNwYWNlcykgewoJCQkJJGZsZCA9ICdwcmVnX3JlcGxhY2UoIi9ccysvIiwiIiwn LiRmbGQuJyknOwoJCQl9CgoJCQkvLyBGaW5kIHRoZSByZWFsIHZhbHVlIHRvIGNvbXBhcmUg YWdhaW5zdCAobWF5IGJlIGFub3RoZXIgZmllbGQpCgkJCWlmICgkdmFsUGFydHNbMF0gPT0g InVybHZhciIpIHsKCQkJCWlmIChjb3VudCgkdmFsUGFydHMpID09IDIpIHsKCQkJCQkkdmFs ID0gKGlzc2V0KCRfR0VUWyR2YWxQYXJ0c1sxXV0pICYmICRfR0VUWyR2YWxQYXJ0c1sxXV0g IT0gIiIpID8gJyRfR0VUWyInLiR2YWxQYXJ0c1sxXS4nIl0nIDogZG9RdW90ZShzdHJfcmVw bGFjZSgnIicsICdcIicsICR2YWxQYXJ0c1sxXSkpOwoJCQkJfQoJCQl9IGVsc2UgaWYgKCR2 YWxQYXJ0c1swXSA9PSAic3ZydmFyIikgewoJCQkJaWYgKGNvdW50KCR2YWxQYXJ0cykgPT0g MikgewoJCQkJCSR2YWwgPSAoaXNzZXQoJF9TRVJWRVJbJHZhbFBhcnRzWzFdXSkgJiYgJF9T RVJWRVJbJHZhbFBhcnRzWzFdXSAhPSAiIikgPyAnJF9TRVJWRVJbIicuJHZhbFBhcnRzWzFd LiciXScgOiBkb1F1b3RlKHN0cl9yZXBsYWNlKCciJywgJ1wiJywgJHZhbFBhcnRzWzFdKSk7 CgkJCQl9CgkJCX0gZWxzZSBpZiAoc3RycG9zKCR2YWxQYXJ0c1swXSwgIj8iKSA9PT0gMCkg ewoJCQkJJHZhbFBhcnRzWzBdID0gc3Vic3RyKHN0cnRvbG93ZXIoJHZhbFBhcnRzWzBdKSwg MSk7CgkJCQlpZiAoaXNzZXQoJHRoaXNmaWxlWyR2YWxQYXJ0c1swXV0pKSB7CgkJCQkJJHZh bCA9ICckdGhpc2ZpbGVbIicuJHZhbFBhcnRzWzBdLiciXSc7CgkJCQl9IGVsc2UgaWYgKGlz c2V0KCR0aGlzbGlua1skdmFsUGFydHNbMF1dKSkgewoJCQkJCSR2YWwgPSAnJHRoaXNsaW5r WyInLiR2YWxQYXJ0c1swXS4nIl0nOwoJCQkJfSBlbHNlIGlmIChhcnJheV9rZXlfZXhpc3Rz KCR2YWxQYXJ0c1swXSwgJGFsbFB0eHQpKSB7CgkJCQkJJHZhbCA9ICRhbGxQdHh0WyR2YWxQ YXJ0c1swXV07CgkJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzYXJ0aWNsZVskdmFsUGFydHNb MF1dKSkgewoJCQkJCSR2YWwgPSAnJHRoaXNhcnRpY2xlWyInLiR2YWxQYXJ0c1swXS4nIl0n OwoJCQkJfSBlbHNlIHsKCQkJCQkkdmFsID0gZG9RdW90ZShzdHJfcmVwbGFjZSgnIicsICdc IicsICR2YWxQYXJ0c1swXSkpOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJJHZhbCA9IGRvUXVv dGUoc3RyX3JlcGxhY2UoJyInLCAnXCInLCAkdmFsUGFydHNbMF0pKTsKCQkJfQoKCQkJLy8g UmVwbGFjZSB0aGUgc3RyaW5nIHBhcnRzLi4uCgkJCSRjbWQgPSBzdHJfcmVwbGFjZSgiQ0FT VCIsICRjYXN0LCAkb3ApOwoJCQkkY21kID0gc3RyX3JlcGxhY2UoIkZJRUxEIiwgKCgkY2Fz ZV9zZW5zaXRpdmUpID8gJGZsZCA6ICdzdHJ0b2xvd2VyKCcuJGZsZC4nKScpLCAkY21kKTsK CQkJJGNtZCA9IHN0cl9yZXBsYWNlKCJWQVJOQU1FIiwgJGZsZENsZWFuLCAkY21kKTsKCQkJ JGNtZCA9IHN0cl9yZXBsYWNlKCJWQUxVRSIsICgoJGNhc2Vfc2Vuc2l0aXZlKSA/ICdWQUxV RScgOiAnc3RydG9sb3dlcihWQUxVRSknKSwgJGNtZCk7CgkJCSRjbWQgPSAiXCRvdXRbXSA9 ICgiLnN0cl9yZXBsYWNlKCJWQUxVRSIsICgoJHZhbD09PSInJyIgJiYgc3RycG9zKCRvcCwg InN0cnBvcyIpICE9PSBmYWxzZSkgPyAiJyAnIiA6ICR2YWwpLCAkY21kKS4iKSA/ICd0cnVl JyA6ICdmYWxzZSc7IjsKCQkJaWYgKCRkZWJ1ZykgewoJCQkJZG1wKCRjbWQpOwoJCQl9CgkJ CS8vIC4uLiBhbmQgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24KCQkJZXZhbCgkY21kKTsKCQl9 Cgl9CglpZiAoJGRlYnVnKSB7CgkJZWNobyAiUkVTVUxUOiI7CgkJZG1wKCRvdXQpOwoJfQoJ aWYgKCRkZWJ1ZyA9PSAyKSB7CgkJZWNobyAiUFJFVEVYVDoiOwoJCWRtcCgkcHJldGV4dCk7 CgkJZWNobyAiVEhJUyBBUlRJQ0xFOiI7CgkJZG1wKCR0aGlzYXJ0aWNsZSk7CgkJZWNobyAi VEhJUyBGSUxFOiI7CgkJZG1wKCR0aGlzZmlsZSk7CgkJZWNobyAiVEhJUyBMSU5LOiI7CgkJ ZG1wKCR0aGlzbGluayk7Cgl9CgkvLyBDaGVjayBsb2dpYwoJJHJlc3VsdCA9IHRydWU7Cglp ZiAoc3RydG9sb3dlcigkbG9naWMpID09ICJhbmQiICYmIGluX2FycmF5KCJmYWxzZSIsICRv dXQpKSB7CgkJJHJlc3VsdCA9IGZhbHNlOwoJfQoJaWYgKHN0cnRvbG93ZXIoJGxvZ2ljKSA9 PSAib3IiICYmICFpbl9hcnJheSgidHJ1ZSIsICRvdXQpKSB7CgkJJHJlc3VsdCA9IGZhbHNl OwoJfQoKCXJldHVybiBwYXJzZShFdmFsRWxzZSgkdGhpbmcsICRyZXN1bHQpKTsKfSI7czoz OiJtZDUiO3M6MzI6IjcxMWMyYzY3NTQ1OTA1ZjhjN2MyZjdkOTMxZDc4NmE3Ijt9