# Name: smd_if v0.9 # Type: Client side plugin # Generic multiple if condition tests # Author: Stef Dawson # URL: http://stefdawson.com/ # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjY6InNtZF9pZiI7czo2OiJhdXRob3IiO3M6MTE6IlN0ZWYg RGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nvbi5jb20v IjtzOjc6InZlcnNpb24iO3M6MzoiMC45IjtzOjExOiJkZXNjcmlwdGlvbiI7czozNToiR2Vu ZXJpYyBtdWx0aXBsZSBpZiBjb25kaXRpb24gdGVzdHMiO3M6NDoiaGVscCI7czo0NjUxNDoi PGRpdiBpZD0ic21kX2hlbHAiPgoKCTxoMT5zbWRfaWY8L2gxPgoKCTxwPkEgZ2VuZXJpYyAm IzgyMTY7aWYgY29uZGl0aW9uJiM4MjE3OyB0ZXN0ZXIuIENhbiB0ZXN0IGFueSBmaWVsZCBv ciB2YXJpYWJsZSBpbiB0aGUgY3VycmVudCBhcnRpY2xlLCBmaWxlLCBpbWFnZSwgbGluaywg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyLCA8Y29kZT4mbHQ7dHhwOnZhcmlh YmxlIC8mZ3Q7PC9jb2RlPiBvciA8c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiBjb250 ZXh0IGZvciBhIHZhcmlldHkgb2YgYXR0cmlidXRlcyBhbmQgdGFrZSBhY3Rpb24gaWYgPHNw YW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5GQUxT RTwvc3Bhbj4uPC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5TdXBwb3J0 cyBtb3N0IG1ham9yIGFydGljbGUsIGZpbGUsIGltYWdlIGFuZCBsaW5rIHZhcmlhYmxlcyBz dWNoIGFzIHNlY3Rpb24sIGNhdGVnb3J5LCBjdXN0b20gZmllbGRzLCBpZCwgcXVlcnkgc3Ry aW5nLCBhdXRob3IsIGJvZHksIGV4Y2VycHQsIHlhaGRlIHlhaGRlLCBwbHVzIHVybCB2YXJz LCBzZXJ2ZXIgdmFycywgdHhwIHZhcnMsIHBocCB2YXJzLCBhbmQgc3ViLWNhdGVnb3J5L3Bh cmVudCBjaGVja2luZzwvbGk+CgkJPGxpPlRlc3RzIGluY2x1ZGUgZXF1YWxpdHksIGluZXF1 YWxpdHksIGxlc3MgdGhhbiwgZ3JlYXRlciB0aGFuLCBkaXZpc2libGUgYnksIGVtcHR5LCB1 c2VkLCBkZWZpbmVkLCBiZWdpbnMsIGVuZHMsIGNvbnRhaW5zLCBpcyBudW1lcmljIC8gYWxw aGEgLyBhbHBoYW51bWVyaWMgLyBsb3dlcmNhc2UgLyB1cHBlcmNhc2UsIGFtb25nIG90aGVy czwvbGk+CgkJPGxpPlRlc3RzIGZvciBtb3JlIHRoYW4gb25lIGNvbmRpdGlvbiBhdCBvbmNl IGFuZCBhcHBsaWVzIGVpdGhlciA8c3BhbiBjbGFzcz0iY2FwcyI+QU5EPC9zcGFuPiBsb2dp YyAoYWxsIHRlc3RzIG11c3QgcGFzcykgb3IgT1IgbG9naWMgKGFueSB0ZXN0IG11c3QgcGFz cyk8L2xpPgoJCTxsaT5BbGwgdGVzdGVkIGZpZWxkcyBhbmQgdmFsdWVzIGFyZSBhdmFpbGFi bGUgdG8gdGhlIGNvbnRhaW5lciBzbyB5b3UgY2FuIGRpc3BsYXkgdGhlbTwvbGk+CgkJPGxp PkN1c3RvbSByZWd1bGFyLWV4cHJlc3Npb24gZmlsdGVycyBhcmUgYXZhaWxhYmxlIHRvIGhl bHAgd2VlZCBvdXQgYmFkIGRhdGE8L2xpPgoJCTxsaT5VZ2x5IGFuZCB2ZXJ5IGRpcnR5LiBV c2VzIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+JiM4MjE3O3MgPGNvZGU+ZXZhbCgp PC9jb2RlPiBjb21tYW5kIHdoaWNoIG1vc3QgcHJvZ3JhbW1lcnMgY29uY3VyIHNob3VsZCBi ZSByZW5hbWVkIDxjb2RlPmV2aWwoKTwvY29kZT48L2xpPgoJPC91bD4KCgk8aDI+QXV0aG9y PC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVudEZvcm0i PlN0ZWYgRGF3c29uPC9hPi4gQmFzZWQgb24gYW4gaWRlYSBicmV3aW5nIGluIHRoZSBiYWNr IG9mIG15IG1pbmQgd2hpbGUgaGFja2luZyBjaHNfaWZfdXJsdmFyLjwvcD4KCgk8aDI+SW5z dGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVn aW4gZnJvbSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5z LzkzMC9zbWRfaWYiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRw Oi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29k ZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQ bHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUg PGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lk PTI1MzU3Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9u IHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5UbyB1 bmluc3RhbGwsIHNpbXBseSBkZWxldGUgZnJvbSB0aGUgQWRtaW4gLSZndDsgUGx1Z2lucyBw YWdlLjwvcD4KCgk8aDI+VXNhZ2U8L2gyPgoKCTxwPlVzZSB0aGUgdGFnIGluIGFueSBwYWdl LCBmb3JtIG9yIGFydGljbGUgY29udGV4dC4gQ2FuIGFsc28gYmUgdXNlZCBpbnNpZGUgZmls ZSwgaW1hZ2UgKGluIHRoZSBmdXR1cmUpIG9yIGxpbmsgbGlzdHMgdG8gdGFrZSBhY3Rpb24g ZGVwZW5kaW5nIG9uIGF0dHJpYnV0ZXMgb2YgdGhlIGN1cnJlbnQgaXRlbS48L3A+CgoJPGgz IGNsYXNzPSJ0YWciPnNtZF9pZjwvaDM+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5BdCB0 aGUgcGxhY2UgeW91IHdpc2ggdG8gY29tcGFyZSBhIGZpZWxkIHdpdGggYW5vdGhlciB2YWx1 ZSwgcHV0IHRoaXMgdGFnIHdpdGggdGhlIGZpcnN0IHRocmVlIG1hbmRhdG9yeSBhdHRyaWJ1 dGVzLiBFYWNoIHRha2UgYSBzZXJpZXMgb2YgY29tbWEtc2VwYXJhdGVkIGxpc3RzICYjODIx MjsgdGhvdWdoIHRoZSA8YSBocmVmPSIjcGFyYW1kZWxpbSI+Y29tbWEgaXMgb3ZlcnJpZGFi bGUgd2l0aCBwYXJhbV9kZWxpbTwvYT4uIElmIHRoZSByZXN1bHQgb2YgYWxsIHRoZSBjb21w YXJpc29uIHRlc3RzIGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPiB0aGUgY29u dGFpbmVkIGJsb2NrIHdpbGwgYmUgZXhlY3V0ZWQuIElmIHRoZSByZXN1bHQgaXMgPHNwYW4g Y2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPiwgYW55IDxjb2RlPiZsdDt0eHA6ZWxzZSAvJmd0 OzwvY29kZT4gd2lsbCBiZSBleGVjdXRlZCBpbnN0ZWFkLiBXaXRob3V0IGFueSA8Y29kZT4m bHQ7dHhwOmVsc2UgLyZndDs8L2NvZGU+IGJsb2NrLCBub3RoaW5nIGlzIG91dHB1dCBpZiB0 aGUgcmVzdWx0IGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj4uPC9wPgoKCTxo NCBjbGFzcz0iYXR0cyAiIGlkPSJhdHRyaWJ1dGVzIj5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSBtYW5kIj5maWVsZDwvc3Bhbj4gOiB0aGUg PGEgaHJlZj0iI2ZpZWxkIj5maWVsZHM8L2E+IHRvIHRlc3Q8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0LW5hbWUgbWFuZCI+b3BlcmF0b3I8L3NwYW4+IDogdGhlIDxhIGhyZWY9IiNv cGVyYXRvciI+b3BlcmF0aW9uczwvYT4gZm9yIGNvbXBhcmlzb24gd2l0aCB0aGF0IGZpZWxk IChlLmcuIDxjb2RlPmVxPC9jb2RlPiwgPGNvZGU+bm90PC9jb2RlPiwgPGNvZGU+YmVnaW5z PC9jb2RlPiwgZXRjKS4gRGVmYXVsdCBpcyB1c3VhbGx5IDxjb2RlPmVxPC9jb2RlPjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSBtYW5kIj52YWx1ZTwvc3Bhbj4gOiB0aGUg PGEgaHJlZj0iI3ZhbHVlIj52YWx1ZXM8L2E+IHdpdGggd2hpY2ggdG8gY29tcGFyZSB0aGUg ZmllbGRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5sb2dpYzwvc3Bhbj4g OiBob3cgbXVsdGlwbGUgdGVzdHMgYXJlIGpvaW5lZDogPHNwYW4gY2xhc3M9ImNhcHMiPkFO RDwvc3Bhbj4gb3IgT1IuIERlZmF1bHQgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPkFORDwvc3Bh bj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNhc2Vfc2Vuc2l0aXZlPC9z cGFuPiA6IDEgPSBjYXNlLXNlbnNpdGl2ZSBjb21wYXJpc29uOyAwID0gaWdub3JlIGNhc2Uu IERlZmF1bHQgaXMgMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ZmlsdGVy PC9zcGFuPiA6IGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucyB3aXRoIHdoaWNoIHRvIGZp bHRlciBvbmUgb3IgbW9yZSBmaWVsZHMvdmFsdWVzLiBTZWUgPGEgaHJlZj0iI2ZpbHRlcmlu ZyI+ZmlsdGVyaW5nPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+cmVw bGFjZTwvc3Bhbj4gOiBsaXN0IG9mIGl0ZW1zIHdpdGggd2hpY2ggdG8gcmVwbGFjZSBlYWNo IG9mIHRoZSBtYXRjaGluZyBmaWx0ZXJzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj5maWx0ZXJfdHlwZTwvc3Bhbj4gOiBsaW1pdCB0aGUgZmlsdGVyIHRvIGNlcnRhaW4g dHlwZXMgb2YgdGVzdC4gQ2hvb3NlIGZyb20gPGNvZGU+YWxsPC9jb2RlPiAodGhlIGRlZmF1 bHQpLCA8Y29kZT51cmx2YXI8L2NvZGU+LCA8Y29kZT5wb3N0dmFyPC9jb2RlPiwgPGNvZGU+ c3ZydmFyPC9jb2RlPiwgPGNvZGU+dHhwdmFyPC9jb2RlPiwgPGNvZGU+cGhwdmFyPC9jb2Rl Piwgb3IgYW55IGZpZWxkIG5hbWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUi PmZpbHRlcl9vbjwvc3Bhbj4gOiBlaXRoZXIgYXBwbHkgdGhlIGZpbHRlciB0byB0aGUgPGNv ZGU+ZmllbGQ8L2NvZGU+LCB0aGUgPGNvZGU+dmFsdWU8L2NvZGU+IG9yIGJvdGguIERlZmF1 bHQ6IDxjb2RlPmZpZWxkPC9jb2RlPi4gUGxlYXNlIHNlZSB0aGUgPGEgaHJlZj0iI2ZjYXZl YXQiPmZpbHRlcmluZyBjYXZlYXQ8L2E+IGJlbG93IGZvciBpbXBvcnRhbnQgaW5mb3JtYXRp b24gYWJvdXQgdGhpcyBhdHRyaWJ1dGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPnBhcmFtX2RlbGltPC9zcGFuPiA6IGRlbGltaXRlciB1c2VkIGJldHdlZW4gZWFjaCBm aWVsZCwgb3BlcmF0b3Igb3IgdmFsdWUgaW4gYSBtdWx0aS10ZXN0LiBEZWZhdWx0IGlzIGEg Y29tbWEgKCwpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5tb2RfZGVsaW08 L3NwYW4+IDogZGVsaW1pdGVyIHVzZWQgd2hlbiBzcGVjaWZ5aW5nIGZpZWxkIG9yIG9wZXJh dG9yIG1vZGlmaWVycyBmb3IgdXJsdmFyLCBwb3N0dmFyLCBzdnJ2YXIgYW5kIHR4cHZhci4g RGVmYXVsdCBpcyBhIGNvbG9uICg6KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFt ZSI+bGlzdF9kZWxpbTwvc3Bhbj4gOiBkZWxpbWl0ZXIgdXNlZCB3aGVuIHNwZWNpZnlpbmcg YSBsaXN0IG9mIHZhbHVlcyB0byBjaGVjayB2aWEgdGhlIDxjb2RlPmluPC9jb2RlPiBvciA8 Y29kZT5ub3RpbjwvY29kZT4gb3BlcmF0b3JzLiBEZWZhdWx0IGlzIGEgZm9yd2FyZC1zbGFz aCAoLyk8L2xpPgoJPC91bD4KCgk8cD5UaGUgbGlzdHMgYXJlIHByb2Nlc3NlZCBpbiBvcmRl ciwgaS5lLiB0aGUgMXN0IGZpZWxkIHVzZXMgdGhlIDFzdCBvcGVyYXRvciBpbiB0aGUgbGlz dCBhbmQgY29tcGFyZXMgaXQgdG8gdGhlIDFzdCB2YWx1ZTsgdGhlIDJuZCBmaWVsZCB1c2Vz IHRoZSAybmQgb3BlcmF0b3IgaW4gdGhlIGxpc3QgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSAy bmQgdmFsdWUsIGFuZCBzbyBvbi4gVmFsdWVzIHNob3VsZCB1c3VhbGx5IGJlIHNwZWNpZmll ZCB3aXRoIHBsYWNlaG9sZGVycyB0byBtYWludGFpbiBvcmRlcjogZS5nLiA8Y29kZT52YWx1 ZT0mcXVvdDssIDQsLCB0b3AmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPk5vdGUgdGhhdCwgYWx0 aG91Z2ggdGhlIGZpcnN0IHRocmVlIGF0dHJpYnV0ZXMgYXJlIGNvbnNpZGVyZWQgbWFuZGF0 b3J5LCBpZiB5b3UgaGFwcGVuIHRvIHJlcXVpcmUgdGhlIGRlZmF1bHQgb3BlcmF0b3IgZm9y IGFsbCB5b3VyIHRlc3RzLCB5b3UgY2FuIHNhZmVseSBvbWl0IDxjb2RlPm9wZXJhdG9yPC9j b2RlPi4gU2ltaWxhcmx5IHdpdGggdmFsdWVzOiBpZiB5b3UgYXJlIGVudGlyZWx5IHRlc3Rp bmcgdGhlIGV4aXN0ZW5jZSBvciB0eXBlIG9mIHZhcmlhYmxlcywgeW91IGNhbiBvbWl0IHRo ZSA8Y29kZT52YWx1ZTwvY29kZT4gcGFyYW1ldGVyIGlmIHlvdSB3aXNoLiBBbmQgaWYgeW91 IGFyZSB0ZXN0aW5nIHRoZSBzYW1lIDxjb2RlPmZpZWxkPC9jb2RlPiBhZ2FpbiBhbmQgYWdh aW4gZm9yIGRpZmZlcmluZyBjb25kaXRpb25zLCB5b3UgY2FuIGxpc3QgaXQganVzdCBvbmNl IGFzIGEgY29udmVuaWVudCBzaG9ydGN1dC48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAi IGlkPSJmaWVsZCI+ZmllbGQ8L2g0PgoKCTxwPkxpc3Qgb2YgZmllbGQgbG9jYXRpb25zIHRv IGxvb2sgYXQuIFNvbWUgdXNlZnVsIHZhbHVlcyBhcmU6PC9wPgoKCTx1bD4KCQk8bGk+PGNv ZGU+c2VjdGlvbjwvY29kZT48L2xpPgoJCTxsaT48Y29kZT5jYXRlZ29yeTwvY29kZT4gKG9y IDxjb2RlPmNhdGVnb3J5MTwvY29kZT4sIG9yIDxjb2RlPmNhdGVnb3J5MjwvY29kZT4gaWYg b24gYW4gYXJ0aWNsZSBwYWdlKTwvbGk+CgkJPGxpPjxjb2RlPmF1dGhvcmlkPC9jb2RlPiBv ciA8Y29kZT5hdXRob3I8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+aWQ8L2NvZGU+IChmaWxl L2xpbmsvaW1hZ2UvYXJ0aWNsZSBJRCkuIEluIGFuIGluZGl2aWR1YWwgYXJ0aWNsZSBjb250 ZXh0LCB1c2UgPGNvZGU+dGhpc2lkPC9jb2RlPiBpbnN0ZWFkPC9saT4KCQk8bGk+PGNvZGU+ cXVlcnk8L2NvZGU+ICh0aGUgcXVlcnkgc3RyaW5nIGZyb20gdGhlIHNlYXJjaCBmb3JtKTwv bGk+CgkJPGxpPjxjb2RlPnBnPC9jb2RlPiAodGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgaW4g bGlzdHMpPC9saT4KCQk8bGk+PGNvZGU+bW9udGg8L2NvZGU+IChjdXJyZW50IG1vbnRoIGZp ZWxkIGZyb20gdGhlIGFkZHJlc3MgYmFyKTwvbGk+CgkJPGxpPjxjb2RlPnN0YXR1czwvY29k ZT4gKGRvY3VtZW50IHN0YXR1czogMjAwLCA0MDQsIDQwMywgZXRjKTwvbGk+CgkJPGxpPjxj b2RlPnBhZ2U8L2NvZGU+ICh0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gUGFn ZSB0ZW1wbGF0ZSB1c2VkIGJ5IHRoaXMgc2VjdGlvbik8L2xpPgoJCTxsaT48Y29kZT5uZXh0 X2lkPC9jb2RlPiAvIDxjb2RlPnByZXZfaWQ8L2NvZGU+IChJRCBvZiBuZXh0L3ByZXYgZG9j dW1lbnQgaWYgb24gYXJ0aWNsZSBwYWdlKTwvbGk+CgkJPGxpPjxjb2RlPm5leHRfdGl0bGU8 L2NvZGU+IC8gPGNvZGU+cHJldl90aXRsZTwvY29kZT4oVGl0bGUgb2YgbmV4dC9wcmV2IGRv Y3VtZW50IGlmIG9uIGFydGljbGUgcGFnZSk8L2xpPgoJCTxsaT48Y29kZT5uZXh0X3V0aXRs ZTwvY29kZT4gLyA8Y29kZT5wcmV2X3V0aXRsZTwvY29kZT4gKHVybC10aXRsZSBvZiBuZXh0 L3ByZXYgZG9jdW1lbnQgaWYgb24gYXJ0aWNsZSBwYWdlKTwvbGk+CgkJPGxpPjxjb2RlPnBl cm1saW5rX21vZGU8L2NvZGU+ICh0YWtlIGFjdGlvbiBiYXNlZCBvbiBvbmUgb2YgdGhlIG1l c3N5L2NsZWFuIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHNjaGVtZXMpPC9saT4K CQk8bGk+PGNvZGU+b3RoZXIgYXJ0aWNsZS9maWxlL2xpbmsgZmllbGQ8L2NvZGU+IChlLmcu IGJvZHksIGV4Y2VycHQsIGFydGljbGVfaW1hZ2UsIGtleXdvcmRzLCBsaW5rYW5tZSwgZmls ZW5hbWUsIGRvd25sb2FkcywgJiM4MjMwOyk8L2xpPgoJCTxsaT48Y29kZT5teV9jdXN0b21f ZmllbGRfbmFtZTwvY29kZT4gKGFueSBjdXN0b20gZmllbGRzIHlvdSBoYXZlIGRlZmluZWQp PC9saT4KCQk8bGk+PGNvZGU+dXJsdmFyOnZhcl9uYW1lPC9jb2RlPiAoYW55IHZhcmlhYmxl IGluIHRoZSBhZGRyZXNzIGJhciBhZnRlciB0aGUgPGNvZGU+PzwvY29kZT4pPC9saT4KCQk8 bGk+PGNvZGU+cG9zdHZhcjp2YXJfbmFtZTwvY29kZT4gKGFueSB2YXJpYWJsZSBwb3N0ZWQg ZnJvbSBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gZm9ybSk8L2xpPgoJCTxs aT48Y29kZT5zdnJ2YXI6dmFyX25hbWU8L2NvZGU+IChhbnkgc3RhbmRhcmQgc2VydmVyIHZh cmlhYmxlLCBlLmcuIDxzcGFuIGNsYXNzPSJjYXBzIj5IVFRQPC9zcGFuPl9VU0VSX0FHRU5U KTwvbGk+CgkJPGxpPjxjb2RlPnR4cHZhcjpteV92YXI8L2NvZGU+IChhbnkgVGV4dHBhdHRl cm4gdmFyaWFibGUgc2V0IHdpdGggPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSBuYW1lPSZxdW90 O215X3ZhciZxdW90OyAvJmd0OzwvY29kZT4pPC9saT4KCQk8bGk+PGNvZGU+cGhwdmFyOm15 X3ZhcjwvY29kZT4gKGFueSA8c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiB2YXJpYWJs ZSA8ZW0+aW4gdGhlIGdsb2JhbCBzY29wZTwvZW0+KTwvbGk+CgkJPGxpPjxjb2RlPnBhcmVu dDpvcHRpb25hbF9tb2RpZmllcnM8L2NvZGU+ICh3aGV0aGVyIHRoZSBnaXZlbiBjYXRlZ29y eSBpcyBhIGRlc2NlbmRlbnQgb2YgYW5vdGhlciBjYXRlZ29yeSk8L2xpPgoJCTxsaT48Y29k ZT5OVUxMPC9jb2RlPiAodXNlZnVsIHdoZW4gY29tcGFyaW5nIGFyYml0cmFyeSB2YWx1ZXMg Zm9yIGVtcHRpbmVzcyk8L2xpPgoJPC91bD4KCgk8cD5JZiB5b3Ugc3BlY2lmeSBhIGZpZWxk IG5hbWUgdGhhdCBkb2VzIG5vdCBleGlzdCwgdGhlIHRleHQgeW91IHVzZSB3aWxsIGJlIHRh a2VuIHZlcmJhdGltIGluIG1vc3QgY2FzZXMuPC9wPgoKCTxwPklmIHlvdSB3aXNoIHRvIGNv bXBhcmUgYSBmaWVsZCB0aGF0IG1pZ2h0IGNvbnRhaW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhU TUw8L3NwYW4+IChlLmcgPGNvZGU+Ym9keTwvY29kZT4pLCBhZGQgdGhlIG1vZGlmaWVyIDxj b2RlPjpOT1RBR1M8L2NvZGU+IHRvIHRoZSBlbmQgb2YgdGhlIGZpZWxkLiBJdCB3aWxsIGhh dmUgaXRzIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBhbmQgPHNwYW4gY2xhc3M9 ImNhcHMiPlBIUDwvc3Bhbj4gdGFncyBzdHJpcHBlZCBmcm9tIGl0IGFuZCB3aWxsIGFsc28g YmUgdHJpbW1lZCB0byByZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzLiBZb3Ug bWF5IGNob29zZSB0byBzb2xlbHkgcmVtb3ZlIHNwYWNlcyBmcm9tIGJvdGggdGhlIHN0YXJ0 IGFuZCBlbmQgb2YgYW55IGZpZWxkIGJ5IGFkZGluZyA8Y29kZT46VFJJTTwvY29kZT4gdG8g dGhlIGVuZCBvZiB0aGUgZmllbGQuPC9wPgoKCTxwPlRoZSBzcGVjaWFsIGZpZWxkIDxjb2Rl PnBhcmVudDwvY29kZT4gY2hlY2tzIHRoZSBwYXJlbnQgY2F0ZWdvcnkgZm9yIGEgbWF0Y2gu IFVubGlrZSB0aGUgb3RoZXIgZmllbGQgdHlwZXMsIHRoZSBkZWZhdWx0IDxhIGhyZWY9IiNv cGVyYXRvciI+b3BlcmF0b3I8L2E+IGZvciBwYXJlbnQgaXMgJiM4MjE2O2NvbnRhaW5zJiM4 MjE3Oy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBlbnRpcmUgdHJlZSBpcyBjaGVja2VkIGZvciBh IG1hdGNoLCBzdGFydGluZyBmcm9tIHRoZSB0b3Agb2YgdGhlIHRyZWUgZG93biB0byB0aGUg Y3VycmVudCBjYXRlZ29yeS4gSW50ZXJuYWxseSwgdGhlIHBsdWdpbiBtYWtlcyB1cCBhICYj ODIyMDticmVhZGNydW1iIHRyYWlsJiM4MjIxOyBvZiBjYXRlZ29yaWVzIGluIHRoZSBjdXJy ZW50IGJyYW5jaCwgZWFjaCBzZXBhcmF0ZWQgYnkgYSBzcGFjZSwgc28gdGVzdGluZyBmb3Ig ZXF1YWxpdHkgd291bGQgcmVxdWlyZSBwdXR0aW5nIHRoZW0gYWxsIGluIHRoZSA8YSBocmVm PSIjdmFsdWUiPnZhbHVlPC9hPiBwYXJhbWV0ZXIuPC9wPgoKCTxwPllvdSBhcmUgb2YgY291 cnNlIGZyZWUgdG8gY2hvb3NlIGFuIGFsdGVybmF0aXZlIG9wZXJhdG9yOyA8Y29kZT5iZWdp bnM8L2NvZGU+IGlzIHZlcnkgdXNlZnVsIGZvciB0ZXN0aW5nIGlmIHRoZSB0b3AgbGV2ZWwg Y2F0ZWdvcnkgbWF0Y2hlcyB0aGUgb25lIGdpdmVuIGluIHRoZSA8Y29kZT52YWx1ZTwvY29k ZT4gZmllbGQuPC9wPgoKCTxwPklmIHlvdSB1c2UgPGNvZGU+cGFyZW50OkxWTG48L2NvZGU+ LCB0aGUgY29tcGFyaXNvbiB3aWxsIGJlIHJlc3RyaWN0ZWQgdG8gdGhhdCAmIzgyMjA7bGV2 ZWwmIzgyMjE7IG9mIHN1Yi1jYXRlZ29yeTsgTFZMMSBpcyB0aGUgJiM4MjIwO3RvcCYjODIy MTsgbGV2ZWwsIExWTDIgaXMgdGhlIG5leHQgc3ViLWNhdGVnb3J5IGxldmVsLCBhbmQgc28g b24uIFdoZW4gdXNpbmcgdGhlc2UgbW9kaWZpZXJzLCB0aGUgJiM4MjE2O2VxJiM4MjE3OyBv cGVyYXRvciBiZWNvbWVzIG1vcmUgdXNlZnVsIGJlY2F1c2UgeW91IGFyZSBjb21wYXJpbmcg YSBzaW5nbGUgcGFyZW50IGNhdGVnb3J5LjwvcD4KCgk8cD5JZiB5b3Ugd2lzaCB0byBjb21w YXJlIGFnYWluc3QgdGhlIGNhdGVnb3J5JiM4MjE3O3MgdGl0bGUgaW5zdGVhZCBvZiBpdHMg bmFtZSwgYWRkIHRoZSA8Y29kZT46VFRMPC9jb2RlPiBtb2RpZmllci4gVG8gdGVzdCB0aGUg bnVtYmVyIG9mIGNoaWxkcmVuIHRoZSBnaXZlbiBjYXRlZ29yeSBoYXMsIHNwZWNpZnkgPGNv ZGU+OktJRFM8L2NvZGU+LiBOb3RlIHRoYXQgPHNwYW4gY2xhc3M9ImNhcHMiPlRUTDwvc3Bh bj4gYW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5LSURTPC9zcGFuPiBhcmUgbXV0dWFsbHkgZXhj bHVzaXZlIGFuZCBpZiB0aGV5IGFyZSBib3RoIGVtcGxveWVkLCB0aGUgbGFzdCBvbmUgdXNl ZCB0YWtlcyBwcmlvcml0eS48L3A+CgoJPHA+V2hlbiB1c2luZyBhcnRpY2xlcywgeW91IGNh biBmdXJ0aGVyIG1vZGlmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBwYXJlbnQgdXNpbmcgdGhl IDxjb2RlPkNBVG48L2NvZGU+IHN5bnRheCAod2hlcmUgJiM4MjE2O24mIzgyMTc7IGlzIDEg b3IgMikuIFNwZWNpZnlpbmcgJiM4MjIwO3BhcmVudCYjODIyMTsgd2l0aG91dCA8Y29kZT5D QVRuPC9jb2RlPiB3aWxsIHVzZSB0aGUgZ2xvYmFsIGNhdGVnb3J5ICg8Y29kZT4/Yz08L2Nv ZGU+KS4gSWYgeW91IGFkZCA8Y29kZT46Q0FUbjwvY29kZT4gaXQgd2lsbCBpbnN0ZWFkIGNv bXBhcmUgdGhlIGFydGljbGUmIzgyMTc7cyBjYXRlZ29yeTEgb3IgY2F0ZWdvcnkyIHJlc3Bl Y3RpdmVseS48L3A+CgoJPHA+WW91IGNhbiB1c2UgPHNwYW4gY2xhc3M9ImNhcHMiPkNBVDwv c3Bhbj4sIDxzcGFuIGNsYXNzPSJjYXBzIj5MVkw8L3NwYW4+IGFuZCA8c3BhbiBjbGFzcz0i Y2FwcyI+VFRMPC9zcGFuPi9LSURTIGluIGNvbWJpbmF0aW9uLCBpbmRlcGVuZGVudGx5IG9y IG5vdCBhdCBhbGwuIFRoaXMgYWxsb3dzIGNvbXBhcmlzb25zIHN1Y2ggYXMgJiM4MjIwO2lm IHRoZSAybmQgc3ViLWNhdGVnb3J5IG9mIGNhdGVnb3J5MSBlcXVhbHMgYmxhaGJsYWgmIzgy MjE7IG9yICYjODIyMDtpZiBjYXRlZ29yeTIgaXMgYSBjaGlsZCBvZiBibGFoYmxhaCYjODIy MTsuIFNlZSA8YSBocmVmPSIjZWc0Ij5FeGFtcGxlIDQ8L2E+LjwvcD4KCgk8cD5PbmUgb3Ro ZXIgc3BlY2lhbCBmaWVsZCBpcyA8Y29kZT5OVUxMPC9jb2RlPi4gVGhpcyBpcyBleGFjdGx5 IHdoYXQgaXQgc2F5cyBpdCBpczogZW1wdHkuIFRoZSByZWFzb24gZm9yIGl0cyBpbmNsdXNp b24gaXMgdGhhdCBzb21ldGltZXMgeW91IHdpc2ggdG8gdGVzdCBzb21ldGhpbmcgdGhhdCBp c24mIzgyMTc7dCBhIHRydWUgdmFyaWFibGUgJiM4MjEyOyBlLmcuIGEgcmVwbGFjZW1lbnQg dmFyaWFibGUgZnJvbSBzbWRfdmFycyBvciBzbWRfZWFjaCAmIzgyMTI7IHRvIHNlZSBpZiBp dCYjODIxNztzIGVtcHR5IG9yIG5vdC48L3A+CgoJPHA+SWYgeW91IHdlcmUgdG8gcHV0IHRo aXM6PC9wPgoKCTxwPjxjb2RlPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3tyZXN1bHR9 JnF1b3Q7IG9wZXJhdG9yPSZxdW90O2lzZW1wdHkmcXVvdDsmZ3Q7PC9jb2RlPjwvcD4KCgk8 cD55b3Ugd291bGQgbm90IGdldCB0aGUgcmVzdWx0IHlvdSBleHBlY3QgKGl0JiM4MjE3O3Mg cHJldHR5IGVzb3RlcmljIGJ1dCBpdCByZXZvbHZlcyBhcm91bmQgdGhlIGZhY3QgdGhhdCA8 Y29kZT4mcXVvdDsmcXVvdDs8L2NvZGU+IChhcyBhIHZhcmlhYmxlIG5hbWUpIGlzIG5vdCBl bXB0eSwgaXQmIzgyMTc7cyBpbnZhbGlkKS4gVG8gZ2V0IHJvdW5kIHRoaXMgeW91IG1heSB1 c2UgPHNwYW4gY2xhc3M9ImNhcHMiPk5VTEw8L3NwYW4+IGFzIGEgcGxhY2Vob2xkZXIgYW5k IG1vdmUgdGhlIHRoaW5nIHlvdSB3YW50IHRvIGNoZWNrIGludG8gdGhlIDxjb2RlPnZhbHVl PC9jb2RlPiBpbnN0ZWFkLCBlLmc6PC9wPgoKCTxwPjxjb2RlPiZsdDt0eHA6c21kX2lmIGZp ZWxkPSZxdW90O05VTEwmcXVvdDsgb3BlcmF0b3I9JnF1b3Q7ZXEmcXVvdDsgdmFsdWU9JnF1 b3Q7e3Jlc3VsdH0mcXVvdDsmZ3Q7PC9jb2RlPjwvcD4KCgk8cD53aWxsIHRlc3QgdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5OVUxMPC9zcGFuPiBvYmplY3QgKGkuZS4gJiM4MjE2O2VtcHRp bmVzcyYjODIxNzspIHRvIHNlZSBpZiBpdCYjODIxNztzIGVxdWFsIHRvIHRoZSA8Y29kZT57 cmVzdWx0fTwvY29kZT4gcmVwbGFjZW1lbnQgdmFyaWFibGUuIFlvdSBjYW4gdXNlIHNpbWls YXIgbG9naWMgdG8gdGVzdCBmb3Igb3B0aW9uYWwgdmFyaWFibGVzIGJ5IHN3YXBwaW5nIHRo ZSBmaWVsZCBhbmQgdmFsdWUsIGxpa2UgdGhpczo8L3A+CgoJPHA+PGNvZGU+Jmx0O3R4cDpz bWRfaWYgZmllbGQ9JnF1b3Q7NyZxdW90OyBvcGVyYXRvcj0mcXVvdDtndCZxdW90OyB2YWx1 ZT0mcXVvdDt7cmVzdWx0fSZxdW90OyZndDs8L2NvZGU+PC9wPgoKCTxwPlRoYXQgd291bGQg c2VlIGlmIHRoZSByZXBsYWNlbWVudCB2YXJpYWJsZSA8Y29kZT57cmVzdWx0fTwvY29kZT4g d2FzIGxlc3MgdGhhbiBvciBlcXVhbCB0byA3ICh0aGF0JiM4MjE3O3Mgbm90IGEgdHlwbywg dGhlIGxvZ2ljIGlzIHJldmVyc2VkIGluIHRoaXMgY2FzZTogaXQgaXMgaW50ZXJwcmV0ZWQg YXM6ICYjODIyMDtpcyA3IGdyZWF0ZXIgdGhhbiB7cmVzdWx0fSYjODIyMTssIHdoaWNoIGlz IHRoZSBzYW1lIGFzICYjODIyMDtpcyB7cmVzdWx0fSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g NyYjODIyMTshKTwvcD4KCgk8aDQgY2xhc3M9ImF0dC1uYW1lICIgaWQ9Im9wZXJhdG9yIj5v cGVyYXRvcjwvaDQ+CgoJPHA+TGlzdCBvZiBvcGVyYXRvcnMgdG8gYXBwbHksIGluIG9yZGVy LCB0byBlYWNoIGZpZWxkLiBDaG9vc2UgZnJvbTo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT5l cTwvY29kZT4gRXF1YWwgKHRoZSBkZWZhdWx0IGZvciBhbGwgZXhjZXB0ICYjODIxNjtwYXJl bnQmIzgyMTc7KTwvbGk+CgkJPGxpPjxjb2RlPm5vdDwvY29kZT4gTm90IGVxdWFsPC9saT4K CQk8bGk+PGNvZGU+bHQ8L2NvZGU+IExlc3MgdGhhbjwvbGk+CgkJPGxpPjxjb2RlPmd0PC9j b2RlPiBHcmVhdGVyIHRoYW48L2xpPgoJCTxsaT48Y29kZT5sZTwvY29kZT4gTGVzcyB0aGFu IG9yIGVxdWFsIHRvPC9saT4KCQk8bGk+PGNvZGU+Z2U8L2NvZGU+IEdyZWF0ZXIgdGhhbiBv ciBlcXVhbCB0bzwvbGk+CgkJPGxpPjxjb2RlPmluPC9jb2RlPiBGaWVsZCBpcyBvbmUgb2Yg YSBsaXN0IG9mIHZhbHVlcyAodXNlIDxjb2RlPmxpc3RfZGVsaW08L2NvZGU+IHRvIHNlcGFy YXRlIHZhbHVlcyk8L2xpPgoJCTxsaT48Y29kZT5ub3RpbjwvY29kZT4gRmllbGQgaXMgbm90 IG9uZSBvZiB0aGUgZ2l2ZW4gbGlzdCBvZiB2YWx1ZXMgKHVzZSA8Y29kZT5saXN0X2RlbGlt PC9jb2RlPiB0byBzZXBhcmF0ZSB2YWx1ZXMpPC9saT4KCQk8bGk+PGNvZGU+ZGl2aXNpYmxl PC9jb2RlPiBGaWVsZCBpcyBleGFjdGx5IGRpdmlzaWJsZSBieSB0aGUgdmFsdWU8L2xpPgoJ CTxsaT48Y29kZT5iZXR3ZWVuPC9jb2RlPiBGaWVsZCBsaWVzIGJldHdlZW4gdGhlIGdpdmVu IHZhbHVlcywgZXhjbHVzaXZlICh1c2UgPGNvZGU+bGlzdF9kZWxpbTwvY29kZT4gdG8gc2Vw YXJhdGUgdmFsdWVzKTwvbGk+CgkJPGxpPjxjb2RlPnJhbmdlPC9jb2RlPiBGaWVsZCBpcyB3 aXRoaW4gdGhlIHJhbmdlIG9mIGdpdmVuIHZhbHVlcywgaW5jbHVzaXZlICh1c2UgPGNvZGU+ bGlzdF9kZWxpbTwvY29kZT4gdG8gc2VwYXJhdGUgdmFsdWVzKTwvbGk+CgkJPGxpPjxjb2Rl PmJlZ2luczwvY29kZT4gRmllbGQgYmVnaW5zIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFyYWN0 ZXJzPC9saT4KCQk8bGk+PGNvZGU+Y29udGFpbnM8L2NvZGU+IEZpZWxkIGNvbnRhaW5zIGEg c2VxdWVuY2Ugb2YgY2hhcmFjdGVycyAoZGVmYXVsdCBmb3IgJiM4MjE2O3BhcmVudCYjODIx NzspPC9saT4KCQk8bGk+PGNvZGU+ZW5kczwvY29kZT4gRmllbGQgZW5kcyB3aXRoIGEgc2Vx dWVuY2Ugb2YgY2hhcmFjdGVyczwvbGk+CgkJPGxpPjxjb2RlPmlzZW1wdHk8L2NvZGU+IEZp ZWxkIGlzIGVtcHR5IChjb250YWlucyBub3RoaW5nKTwvbGk+CgkJPGxpPjxjb2RlPmlzdXNl ZDwvY29kZT4gRmllbGQgaGFzIHNvbWUgdmFsdWU8L2xpPgoJCTxsaT48Y29kZT5kZWZpbmVk PC9jb2RlPiBGaWVsZCBpcyBzZXQgKHVzZWZ1bCB3aXRoIHVybHZhciB2YXJpYWJsZXMpPC9s aT4KCQk8bGk+PGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBGaWVsZCBpcyBub3Qgc2V0LCBvciBt aXNzaW5nIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmU8L2xp PgoJCTxsaT48Y29kZT5pc251bTwvY29kZT4gRmllbGQgaXMgYSBudW1iZXI8L2xpPgoJCTxs aT48Y29kZT5pc2FscGhhPC9jb2RlPiBGaWVsZCBjb250YWlucyBjaGFyYWN0ZXJzIG9ubHk8 L2xpPgoJCTxsaT48Y29kZT5pc2FsbnVtPC9jb2RlPiBGaWVsZCBjb250YWlucyBhbHBoYW51 bWVyaWMgY2hhcmFjdGVycyBvbmx5PC9saT4KCQk8bGk+PGNvZGU+aXNsb3dlcjwvY29kZT4g RXZlcnkgY2hhcmFjdGVyIGluIHRoZSBmaWVsZCBpcyBsb3dlciBjYXNlPC9saT4KCQk8bGk+ PGNvZGU+aXN1cHBlcjwvY29kZT4gRXZlcnkgY2hhcmFjdGVyIGluIHRoZSBmaWVsZCBpcyB1 cHBlciBjYXNlPC9saT4KCQk8bGk+PGNvZGU+aXNwdW5jdDwvY29kZT4gRXZlcnkgY2hhcmFj dGVyIGluIHRoZSBmaWVsZCBpcyBzb21lIHB1bmN0dWF0aW9uIG1hcms8L2xpPgoJCTxsaT48 Y29kZT5pc3NwYWNlPC9jb2RlPiBFdmVyeSBjaGFyYWN0ZXIgaW4gdGhlIGZpZWxkIGlzIGEg d2hpdGVzcGFjZSBjaGFyYWN0ZXIgKG9yIHRhYiwgbmV3bGluZSwgZXRjKTwvbGk+Cgk8L3Vs PgoKCTxwPldpdGggdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzIChwcmltYXJpbHkgZ3QsIGx0 LCBnZSwgbGUpIHlvdSBtYXkgZmluZCBvZGQgYmVoYXZpb3VyIHdoZW4gY29tcGFyaW5nIG51 bWJlcnMuIEZvciBleGFtcGxlLCA8Y29kZT51cmx2YXI6cGljIGd0IDY8L2NvZGU+IHdpbGwg cmV0dXJuIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPiBpZiA8Y29kZT5waWM8L2Nv ZGU+IGlzIHNldCB0byAmIzgyMjA7ZnJlZCYjODIyMTsuIFRoaXMgaXMgYmVjYXVzZSB0aGUg d29yZCAmIzgyMjA7ZnJlZCYjODIyMTsgKG9yIGF0IGxlYXN0IHRoZSAmIzgyMjA7Y2hhcmFj dGVyIGYmIzgyMjE7KSBpcyBncmVhdGVyIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+QVND SUk8L3NwYW4+IHRhYmxlIHRoYW4gdGhlICYjODIyMDtjaGFyYWN0ZXIgNiYjODIyMTsuPC9w PgoKCTxwPlRvIGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtLCB5b3UgbWF5IGFwcGVuZCA8Y29k ZT46TlVNPC9jb2RlPiB0byB0aGUgZW5kIG9mIGFueSBvZiB0aGVzZSBvcGVyYXRvcnMgdG8g Zm9yY2UgdGhlIHBsdWdpbiB0byBjaGVjayB0aGF0IHRoZSB2YWx1ZXMgYXJlIGludGVnZXJz LjwvcD4KCgk8cD5JZiB5b3Ugd2lzaCB0byBjb21wYXJlIHRoZSBsZW5ndGggb2YgYSBmaWVs ZCBvciB2YWx1ZSwgYXBwZW5kIDxjb2RlPjpMRU48L2NvZGU+IHRvIGFueSBvZiB0aGUgbnVt ZXJpY2FsIGNvbXBhcmlzb24gb3BlcmF0b3JzLiBJdCBkb2VzbiYjODIxNzt0IG1ha2Ugc2Vu c2UgdG8gdXNlIGJvdGggPGNvZGU+Ok5VTTwvY29kZT4gYW5kIDxjb2RlPjpMRU48L2NvZGU+ IHRvZ2V0aGVyLCBzbyB0aGV5IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuPC9wPgoKCTxwPlRo ZXJlIGlzIGEgc3VidGxlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb3BlcmF0b3JzIDxjb2Rl PmJldHdlZW48L2NvZGU+IGFuZCA8Y29kZT5yYW5nZTwvY29kZT47IHRoZSBmb3JtZXIgZG9l cyBub3QgaW5jbHVkZSB0aGUgZW5kcG9pbnQgdmFsdWVzIHlvdSBzcGVjaWZ5IHdoZXJlYXMg dGhlIGxhdHRlciBkb2VzLiBGb3IgZXhhbXBsZSwgdGhlIHZhbHVlIDxjb2RlPjEwPC9jb2Rl PiBpcyBpbiB0aGUgcmFuZ2UgPGNvZGU+MTAvMjA8L2NvZGU+IGJ1dCBpdCBpcyA8ZW0+bm90 PC9lbT4gYmV0d2VlbiA8Y29kZT4xMC8yMDwvY29kZT4uIFRoZSB2YWx1ZSA8Y29kZT4xMTwv Y29kZT4sIGhvd2V2ZXIsIHNhdGlzZmllcyBib3RoLiBZb3UgY2FuIHVzZSB0aGUgPGNvZGU+ Ok5VTTwvY29kZT4gbW9kaWZpZXIgZm9yIHRoZXNlIHR3byBvcGVyYXRvcnMsIHRob3VnaCBt b3N0IHRlc3RzIHdpbGwgd29yayBmaW5lIHdpdGhvdXQgaXQuIFlvdSBjYW4gYWxzbyBjb21w YXJlIG5vbi1pbnRlZ2VyIHZhbHVlcyB3aXRoIHRoZXNlIG9wZXJhdG9ycy48L3A+CgoJPHA+ VGhlIDxjb2RlPmJlZ2luczwvY29kZT4sIDxjb2RlPmVuZHM8L2NvZGU+IGFuZCA8Y29kZT5j b250YWluczwvY29kZT4gb3BlcmF0b3JzLCBhbG9uZyB3aXRoIGFueSBvZiB0aGUgPGNvZGU+ aXM8L2NvZGU+IG9wZXJhdG9ycyAoZXhjZXB0IDxjb2RlPmlzc3BhY2U8L2NvZGU+KSwgY2Fu IHRha2UgYW4gZXh0cmEgcGFyYW1ldGVyIGFzIHdlbGwuIFNpbmNlIHRoZXkgY29tcGFyZSBl dmVyeSBjaGFyYWN0ZXIgYWdhaW5zdCB0aGUgZ2l2ZW4gYmVoYXZpb3VyLCBzcGFjZSBjaGFy YWN0ZXJzIGNhbiBtZXNzIHRoaW5ncyB1cCBhIGJpdC4gRm9yIGV4YW1wbGUgPGNvZGU+Zmll bGQ9JnF1b3Q7Y3VzdG9tMSZxdW90OyBvcGVyYXRvcj0mcXVvdDtpc2xvd2VyJnF1b3Q7PC9j b2RlPiB3aWxsIGZhaWwgaWYgY3VzdG9tMSBjb250YWlucyAmIzgyMjA7dGhpcyBpcyBhIHRl c3QmIzgyMjE7LiBPciBjb21wYXJpbmcgc29tZXRoaW5nIHRvIDxjb2RlPmJvZHk8L2NvZGU+ IGNhbiBmYWlsIGJlY2F1c2UgdGhlIGJvZHkgb2Z0ZW4gc3RhcnRzIHdpdGggYSBudW1iZXIg b2Ygc3BhY2UgY2hhcmFjdGVycy4gVG8gY2lyY3VtdmVudCB0aGlzLCBhZGQgPGNvZGU+Ok5P U1BBQ0U8L2NvZGU+IHRvIHRoZSBvcGVyYXRvciB3aGljaCB3aWxsIHJlbW92ZSBhbGwgc3Bh Y2VzIGZyb20gdGhlIHN0cmluZyBiZWZvcmUgdGVzdGluZyBpdC48L3A+CgoJPHA+Tm90ZSBh bHNvIHRoYXQgd2hpbGUgPGNvZGU+ZGVmaW5lZDwvY29kZT4gYW5kIDxjb2RlPnVuZGVmaW5l ZDwvY29kZT4gZGlmZmVyIHNlbWFudGljYWxseSBmcm9tIDxjb2RlPmlzdXNlZDwvY29kZT4g YW5kIDxjb2RlPmlzZW1wdHk8L2NvZGU+IChyZXNwZWN0aXZlbHkpLCB0aGUgd2F5IDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGFzc2lnbnMgdmFyaWFibGVzIG1lYW5zIHRoYXQs IGZvciB0aGUgbW9zdCBwYXJ0LCB0aGUgdGVybXMgYXJlIGludGVyY2hhbmdlYWJsZS4gV2hl biBkZWFsaW5nIHdpdGggdXJsdmFycywgcG9zdHZhcnMgYW5kIHN2cnZhcnMsIHRoZSB0d28g c2V0cyBvZiBvcGVyYXRvcnMgYmVoYXZlIGluZGVwZW5kZW50bHksIGFzIHlvdSB3b3VsZCBl eHBlY3QuIFNlZSA8YSBocmVmPSIjZWc1Ij5FeGFtcGxlIDU8L2E+IGZvciBtb3JlLiBOZWl0 aGVyIDxjb2RlPmRlZmluZWQ8L2NvZGU+IG5vciA8Y29kZT51bmRlZmluZWQ8L2NvZGU+IG1h a2Ugc2Vuc2Ugd2l0aCA8Y29kZT5wYXJlbnQ8L2NvZGU+LCBzbyB0aGV5IGFyZSBmb3JiaWRk ZW4uPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0idmFsdWUiPnZhbHVlPC9oND4K Cgk8cD5MaXN0IG9mIHZhbHVlcyB0byBjb21wYXJlIGVhY2ggZmllbGQgaW4gdHVybiB0by4g Q2FuIGJlIHN0YXRpYyB2YWx1ZXMvdGV4dCBvciB0aGUgbmFtZSBvZiBhbnkgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gZmllbGQsIGxpa2UgdGhvc2UgZ2l2ZW4gaW4gPGEgaHJl Zj0iI2ZpZWxkIj5maWVsZDwvYT4gKGV4Y2VwdCAmIzgyMjA7cGFyZW50JiM4MjIxOykuPC9w PgoKCTxwPlRvIGRpc3Rpbmd1aXNoIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g ZmllbGQgZnJvbSBzdGF0aWMgdGV4dCwgcHJlZml4IHRoZSBmaWVsZCBuYW1lIHdpdGggPGNv ZGU+PzwvY29kZT4uIEZvciBleGFtcGxlOiA8Y29kZT52YWx1ZT0mcXVvdDt0aXRsZSZxdW90 OzwvY29kZT4gd2lsbCBjb21wYXJlIHlvdXIgY2hvc2VuIGZpZWxkIGFnYWluc3QgdGhlIHdv cmQgJiM4MjIwO3RpdGxlJiM4MjIxOywgd2hlcmVhcyA8Y29kZT52YWx1ZT0mcXVvdDs/dGl0 bGUmcXVvdDs8L2NvZGU+IHdpbGwgY29tcGFyZSB5b3VyIGZpZWxkIGFnYWluc3QgdGhlIGN1 cnJlbnQgYXJ0aWNsZSYjODIxNztzIHRpdGxlLjwvcD4KCgk8cD5JZiB5b3Ugd2lzaCB0byBj b21wYXJlIGEgdmFsdWUgdGhhdCBtaWdodCBjb250YWluIDxzcGFuIGNsYXNzPSJjYXBzIj5I VE1MPC9zcGFuPiAoZS5nIDxjb2RlPj9ib2R5PC9jb2RlPiksIGFkZCB0aGUgbW9kaWZpZXIg PGNvZGU+Ok5PVEFHUzwvY29kZT4gdG8gdGhlIGVuZCBvZiB0aGUgdmFsdWUuIEl0IHdpbGwg aGF2ZSBhbnkgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGFuZCA8c3BhbiBjbGFz cz0iY2FwcyI+UEhQPC9zcGFuPiB0YWdzIHN0cmlwcGVkIGZyb20gaXQgYW5kIHdpbGwgYWxz byBiZSB0cmltbWVkIHRvIHJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMuIFlv dSBtYXkgY2hvb3NlIHRvIHNvbGVseSByZW1vdmUgc3BhY2VzIGZyb20gYm90aCB0aGUgc3Rh cnQgYW5kIGVuZCBvZiBhbnkgdmFsdWUgYnkgYWRkaW5nIDxjb2RlPjpUUklNPC9jb2RlPiB0 byB0aGUgZW5kIG9mIHRoZSB2YWx1ZS48L3A+CgoJPHA+Tm90ZSB0aGF0IHlvdSBtYXkgZmlu ZCB1c2luZyBkb3VibGUtcXVvdGVzIGluIGZpZWxkcyBnaXZlcyB1bmV4cGVjdGVkIHJlc3Vs dHMuIFRoZXkgYXJlIGJlc3QgYXZvaWRlZCwgb3Igd29ya2VkIGFyb3VuZCBieSB1c2luZyA8 Y29kZT5jb250YWluczwvY29kZT4gaW5zdGVhZCBvZiA8Y29kZT5lcTwvY29kZT4uPC9wPgoK CTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0ibG9naWMiPmxvZ2ljPC9oND4KCgk8cD5DYW4g YmUgb25lIG9mIDxjb2RlPmFuZDwvY29kZT4gKHRoZSBkZWZhdWx0KSBvciA8Y29kZT5vcjwv Y29kZT4uIElmIHVzaW5nIDxjb2RlPmFuZDwvY29kZT4sIGFsbCBjb25kaXRpb25zIG11c3Qg YmUgbWV0IGZvciBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPiByZXN1bHQuIElm IHVzaW5nIDxjb2RlPm9yPC9jb2RlPiwgYW55IG9mIHRoZSBjb25kaXRpb25zIHRoYXQgbWF0 Y2ggd2lsbCBnaXZlIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IHJlc3VsdC48 L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJjYXNlc2Vuc2UiPmNhc2Vfc2Vuc2l0 aXZlPC9oND4KCgk8cD5CeSBkZWZhdWx0LCBhbGwgY29tcGFyaXNvbnMgYXJlIGNhc2UtaW5z ZW5zaXRpdmUgKDApLiBJZiB5b3Ugd2lzaCB0byBtYWtlIHRoZW0gc2Vuc2l0aXZlIHRvIGNh cHRpbGlzYXRpb24sIHNwZWNpZnkgPGNvZGU+Y2FzZV9zZW5zaXRpdmU9JnF1b3Q7MSZxdW90 OzwvY29kZT4uIE5vdGUgdGhhdCBpZiB1c2luZyA8Y29kZT5pc2xvd2VyPC9jb2RlPiBvciA8 Y29kZT5pc3VwcGVyPC9jb2RlPiBpbiBhIGNvbXBhcmlzb24sIGNhc2Ugc2Vuc2l0aXZpdHkg d2lsbCBhdXRvbWF0aWNhbGx5IGJlIHN3aXRjaGVkIG9uIHdoaWxlIHRoZSB0ZXN0IGlzIHRh a2luZyBwbGFjZS48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJwYXJhbWRlbGlt Ij5wYXJhbV9kZWxpbTwvaDQ+CgoJPHA+WW91IG5vcm1hbGx5IHNwZWNpZnkgY29tbWEtc2Vw YXJhdGVkIGxpc3RzIHRvIHRoZSA8Y29kZT5maWVsZDwvY29kZT4sIDxjb2RlPm9wZXJhdG9y PC9jb2RlPiBhbmQgPGNvZGU+dmFsdWU8L2NvZGU+IHBhcmFtZXRlcnMuIFNvbWV0aW1lcyB0 aGlzIG1pZ2h0IG5vdCBiZSBkZXNpcmFibGUgaWYgeW91IGhhdmUgdXNlZCB0aGF0IGNoYXJh Y3RlciBpbiB0aGUgbmFtZSBvZiBhIGN1c3RvbSBmaWVsZCwgZm9yIGV4YW1wbGUuIFRoaXMg b3B0aW9uIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBkZWxpbWl0ZXIgdG8gYWxtb3N0IGFu eXRoaW5nIHlvdSBsaWtlLCBlLmcuIHNwZWNpZnlpbmcgPGNvZGU+cGFyYW1fZGVsaW09JnF1 b3Q7Ly8mcXVvdDs8L2NvZGU+IG1lYW5zIHlvdSB3b3VsZCBzcGVjaWZ5IDxlbT5hbGw8L2Vt PiB5b3VyIHBhcmFtZXRlciBsaXN0cyBsaWtlIHRoaXM6PC9wPgoKCTxwPjxjb2RlPmZpZWxk PSZxdW90O3NlY3Rpb24gLy8gdXJsdmFyOnR5cGUmcXVvdDsgb3BlcmF0b3I9JnF1b3Q7ZXEg Ly8gYmVnaW5zJnF1b3Q7IHZhbHVlPSZxdW90O2FuaW1hbHMgLy8gdGlnZXImcXVvdDs8L2Nv ZGU+PC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0ibW9kZGVsaW0iPm1vZF9kZWxp bTwvaDQ+CgoJPHA+VmVyeSBzaW1pbGFyIHRvIDxhIGhyZWY9IiNwYXJhbWRlbGltIj5wYXJh bV9kZWxpbTwvYT4sIHRoaXMgZ292ZXJucyB0aGUgZGVsaW1pdGVyIHRvIHVzZSBiZXR3ZWVu IGFuIG9wdGlvbiBhbmQgaXRzIG1vZGlmaWVyIChlLmcuIHRoZSB0aGluZyBzZXBhcmF0aW5n IHVybHZhciwgcG9zdHZhciwgc3ZydmFyIG9yIHR4cHZhciBmcm9tIHRoZSB2YXJpYWJsZSBu YW1lLCBvciBwYXJlbnQgZnJvbSA8Y29kZT5MVkw8L2NvZGU+IGFuZCA8Y29kZT5DQVQ8L2Nv ZGU+LCBhbmQgYWxzbyB0aGUgY2hhcmFjdGVyKHMpIHRoYXQgc2VwYXJhdGUgYW4gb3BlcmF0 b3IgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPk5VTTwvc3Bhbj4gb3IgPHNwYW4gY2xh c3M9ImNhcHMiPk5PU1BBQ0U8L3NwYW4+IG1vZGlmaWVycykuIEl0IGlzIHRoZSBjb2xvbiAo OikgYnkgZGVmYXVsdC48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJsaXN0ZGVs aW0iPmxpc3RfZGVsaW08L2g0PgoKCTxwPkZvciB1c2Ugd2l0aCB0aGUgPGNvZGU+aW48L2Nv ZGU+LCA8Y29kZT5ub3RpbjwvY29kZT4sIDxjb2RlPmJldHdlZW48L2NvZGU+IGFuZCA8Y29k ZT5yYW5nZTwvY29kZT4gb3BlcmF0b3JzLCB0aGlzIGlzIHRoZSBkZWxpbWl0ZXIgYmV0d2Vl biB2YWx1ZXMuIEl0IGlzIHRoZSBmb3J3YXJkLXNsYXNoICgvKSBieSBkZWZhdWx0LiBBIGNv bnRyaXZlZCBleGFtcGxlOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9 JnF1b3Q7dHhwdmFyOmxldmVsJnF1b3Q7IG9wZXJhdG9yPSZxdW90O2luJnF1b3Q7CiAgICAg dmFsdWU9JnF1b3Q7MS8yLzMvNS84LzEzLzIxLzM0JnF1b3Q7Jmd0OwogICZsdDtwJmd0O1Jl c3VsdCBpcyBhIEZpYm9uYWNjaSB2YWx1ZSEmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCBpbiBhbGwgJiM4MjE2O2RlbGltJiM4 MjE3OyBhdHRyaWJ1dGVzLCBzb21lIGNoYXJhY3RlciBzZXF1ZW5jZXMgbWF5IGNhdXNlIHBy b2JsZW1zIChxdW90ZXMgJiM4MjEyOyBzaW5nbGUgb3IgZG91YmxlICYjODIxMjsgc3ByaW5n IHRvIG1pbmQ7IG90aGVycyBsaWtlIHBhcmVudGhlc2VzIG1heSBhbHNvIGNhdXNlIHRoZSBw bHVnaW4gdG8gZXhwbG9kZSkuPC9wPgoKCTxoMz5SZXBsYWNlbWVudCB0YWdzPC9oMz4KCgk8 cD5FdmVyeSBmaWVsZCBvciB2YWx1ZSB0aGF0IHlvdSByZWZlciB0byBpbiB5b3VyIHNtZF9p ZiB0YWcgYmVjb21lcyBhdmFpbGFibGUgd2l0aGluIHRoZSBjb250YWluaW5nIGJsb2NrIHNv IHlvdSBjYW4gZGlzcGxheSBpdHMgY29udGVudHMgaWYgeW91IHdpc2guIE1vc3Qgb2YgdGhl IHRpbWUgdGhpcyBpcyBub3QgbXVjaCB1c2UgYnV0IGl0IGNhbiBiZSB2ZXJ5IHVzZWZ1bCB3 aXRoIHRoZSA8Y29kZT5pbjwvY29kZT4gb3BlcmF0b3Igb3IgdGhlIDxjb2RlPjpMRU48L2Nv ZGU+IG1vZGlmaWVyIC4gRm9yIGluc3RhbmNlLCBpZiB5b3UgaGF2ZSBhc2tlZCBzbWRfaWYg dG8gdGVzdCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgbmFt ZWQgJiM4MjE2O2xldmVsJiM4MjE3OyBhbmQgdG9sZCBpdCB0byBjb21wYXJlIGl0IHRvIHRo ZSBjdXN0b20gZmllbGQgbGFiZWxsZWQgJiM4MjE2O2FsbG93YWJsZV9sZXZlbHMmIzgyMTc7 LCB0d28gdGFncyBiZWNvbWUgYXZhaWxhYmxlIHdoaWNoIHlvdSBjYW4gdXNlIHdpdGhpbiB0 aGUgY29udGFpbmluZyBibG9jazo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT57c21kX2lmX2xl dmVsfTwvY29kZT4gd291bGQgZGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlICYjODIxNjtsZXZl bCYjODIxNzsgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGU8L2xpPgoJ CTxsaT48Y29kZT57c21kX2lmX2FsbG93YWJsZV9sZXZlbHN9PC9jb2RlPiB3b3VsZCBkaXNw bGF5IHRoZSBjb250ZW50cyBvZiB0aGUgY3VycmVudCBhcnRpY2xlJiM4MjE3O3MgY3VzdG9t IGZpZWxkPC9saT4KCTwvdWw+CgoJPHA+VGhlIHJlcGxhY2VtZW50IHRhZ3MgYXJlIGFsd2F5 cyBwcmVmaXhlZCB3aXRoIDxjb2RlPnNtZF9pZl88L2NvZGU+IHNvIHRoZXkgZG9uJiM4MjE3 O3QgY2xhc2ggd2l0aCB0aGUgb25lcyBpbiBzbWRfZ2FsbGVyeSAoZm9yIGV4YW1wbGUsIHdo ZW4gdXNpbmcgc21kX2lmIGluc2lkZSBhbiBzbWRfZ2FsbGVyeSB0YWcpLiBJZiB5b3UgYXJl IGNvbXBhcmluZyBhIGZpeGVkLXZhbHVlIGZpZWxkIChzdWNoIGFzIDxjb2RlPmZpZWxkPSZx dW90O05VTEwmcXVvdDs8L2NvZGU+IG9yIDxjb2RlPnZhbHVlPSZxdW90OzEyJnF1b3Q7PC9j b2RlPiBvciBzbWRfZ2FsbGVyeSYjODIxNztzIDxjb2RlPnZhbHVlPSZxdW90O3tjYXRlZ29y eX0mcXVvdDs8L2NvZGU+KSB0aGUgbmFtZSBvZiB0aGUgcmVwbGFjZW1lbnQgdGFncyBhcmUg PGNvZGU+e3NtZF9pZl9maWVsZE59PC9jb2RlPiBmb3IgZmllbGRzIGFuZCA8Y29kZT57c21k X2lmX3ZhbE59PC9jb2RlPiBmb3IgdmFsdWVzLCB3aGVyZSBOIGlzIHRoZSB0ZXN0IG51bWJl ciBzdGFydGluZyBmcm9tIDEuPC9wPgoKCTxwPklmIHlvdSB1c2UgdGhlIG11bHRpcGxlIHZh bHVlIG9wdGlvbnMgc3VjaCBhcyA8Y29kZT5pbjwvY29kZT4sIDxjb2RlPmJldHdlZW48L2Nv ZGU+LCA8Y29kZT5yYW5nZTwvY29kZT4sIGV0YyB5b3Ugd2lsbCBhbHNvIHNlZSByZXBsYWNl bWVudCB0YWdzIG9mIHRoZSBmb2xsb3dpbmcgZm9ybWF0OiA8Y29kZT57c21kX2lmX3ZhbE5f WH08L2NvZGU+IHdoZXJlIE4gaXMgdGhlIHZhbHVlIGNvdW50ZXIgKGFzIGFib3ZlKSBhbmQg WCBpcyBhbiBpbmNyZW1lbnRpbmcgbnVtYmVyOyB3aXRoIG9uZSBmb3IgZWFjaCB2YWx1ZSBp biB5b3VyIGxpc3QuIEZvciBleGFtcGxlLCA8Y29kZT52YWx1ZT0mcXVvdDsxMC8yMC8zMCZx dW90OzwvY29kZT4gc2V0czo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT57IHNtZF9pZl92YWwx XzEgfTwvY29kZT4gPSAxMDwvbGk+CgkJPGxpPjxjb2RlPnsgc21kX2lmX3ZhbDFfMiB9PC9j b2RlPiA9IDIwPC9saT4KCQk8bGk+PGNvZGU+eyBzbWRfaWZfdmFsMV8zIH08L2NvZGU+ID0g MzA8L2xpPgoJPC91bD4KCgk8cD5UaGVyZSBhcmUgYWxzbyAmIzgyMTY7bGVuZ3RoJiM4MjE3 OyByZXBsYWNlbWVudCB0YWdzLiBGb2xsb3dpbmcgYSBzaW1pbGFyIGNvbnZlbnRpb24gdG8g YWJvdmUsIHRoZXNlIGFyZSBwcmVmaXhlZCB3aXRoIDxjb2RlPnNtZF9pZl9sZW5fPC9jb2Rl Pi4gSWYgeW91IGdldCBzdHVjaywgdGVtcG9yYXJpbHkgc3dpdGNoIDxjb2RlPmRlYnVnPSZx dW90OzEmcXVvdDs8L2NvZGU+IG9uIHRvIHNlZSB0aGUgcmVwbGFjZW1lbnRzIGF2YWlsYWJs ZSBhbmQgdGhlaXIgYXNzb2NpYXRlZCBuYW1lcy92YWx1ZXMuPC9wPgoKCTxwPlNlZSA8YSBo cmVmPSIjZWc4Ij5FeGFtcGxlIDg8L2E+IGFuZCA8YSBocmVmPSIjZWc5Ij45PC9hPiBmb3Ig bW9yZS48L3A+CgoJPGgyIGlkPSJmaWx0ZXJpbmciPkZpbHRlcmluZzwvaDI+CgoJPHA+QWxs IHVzZXIgaW5wdXQgaXMgdGFpbnRlZCBieSBkZWZhdWx0LjwvcD4KCgk8cD5BbnkgdGltZSB5 b3UgcmVseSBvbiBzb21lb25lIHRvIGVudGVyIHNvbWV0aGluZywgYXQgbGVhc3Qgb25lIHBl cnNvbiB3aWxsIGludmFyaWFibHkgY2F0Y2ggeW91IG91dDsgZWl0aGVyIGFjY2lkZW50YWxs eSBvciBtYWxpY2lvdXNseS4gRm9yIHRoaXMgcmVhc29uLCBzbWRfaWYgc3VwcG9ydHMgcG93 ZXJmdWwgZmlsdGVyaW5nIHJ1bGVzIHNvIHlvdSBjYW4gdHJhcCBhbmQgcmVtb3ZlIHN1c3Bl Y3QgaW5wdXQuIEl0IGFscmVhZHkgZG9lcyBzb21lIG9mIHRoaXMgZm9yIHlvdSB3aXRoIHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+Tk9UQUdTPC9zcGFuPiBtb2RpZmllciwgYnV0IGZpbHRl cmluZyBnaXZlcyBhbm90aGVyIGxldmVsIG9mIGNvbnRyb2wgYWJvdmUgdGhhdC48L3A+CgoJ PHA+TGV0JiM4MjE3O3Mgc2F5IHlvdSBhcmUgYXNraW5nIHRoZSB1c2VyIHRvIGVudGVyIGEg dmFsdWUgYW5kIHlvdSBuZWVkIHRvIGNvbXBhcmUgaXQgdG8gYSByYW5nZS4gV2hhdCBpZiwg aW5zdGVhZCBvZiBhIG51bWJlciwgdGhleSBlbnRlcmVkIDxjb2RlPmZyM2Q8L2NvZGU+IG9y IDxjb2RlPjtybSAtcmYgMSo7PC9jb2RlPi4gVGhlIHBsdWdpbiBtaWdodCBqdXN0IGZhbGwg b3ZlciAocHJvYmFibHkgd2l0aCBhbiBlcnJvciwgd2hpY2ggaXMgbm90IHZlcnkgcGxlYXNh bnQgZm9yIHVzZXJzKSwgb3IgaXQgbWlnaHQgY2F1c2UgaGFybSB0byB0aGUgZmlsZXN5c3Rl bSBpZiBhIHBlcnNvbiB0cnlpbmcgdG8gaGFjayB5b3VyIHNpdGUgd2FzIHNraWxsZWQgZW5v dWdoIChpdCYjODIxNztzIHVubGlrZWx5LCBidXQgcG9zc2libGUpLjwvcD4KCgk8cD5JbiBi b3RoIGNhc2VzLCBmaWx0ZXJpbmcgY29tZXMgdG8gdGhlIHJlc2N1ZS4gWW91IGNhbiBzcGVj aWZ5IHRoYXQgeW91IDxlbT5leHBlY3Q8L2VtPiBvbmx5IGRpZ2l0cyBmcm9tIDAgdG8gOSBp biB5b3VyIGZpZWxkcyBhbmQgY2FuIHRlbGwgdGhlIHBsdWdpbiB0byBjaG9wIG91dCBhbnl0 aGluZyB0aGF0IGlzIG5vdCBudW1lcmljLiBTbyBpbiB0aGUgZmlyc3QgY2FzZSBhYm92ZSwg YWxsIHlvdSB3b3VsZCBzZWUgaWYgdGhlIHVzZXIgZW50ZXJlZCAmIzgyMTY7ZnIzZCYjODIx Nzsgd291bGQgYmUgJiM4MjE2OzMmIzgyMTc7LjwvcD4KCgk8cD5Gb3J0dW5hdGVseSAmIzgy MTI7IGFuZCB1bmZvcnR1bmF0ZWx5ICYjODIxMjsgaXQmIzgyMTc7cyBidWlsdCBhcm91bmQg PGEgaHJlZj0iaHR0cDovL3d3dy5yZWd1bGFyLWV4cHJlc3Npb25zLmluZm8vIj5yZWd1bGFy IGV4cHJlc3Npb25zPC9hPiB3aGljaCBhcmUgZmllbmRpc2hseSBwb3dlcmZ1bCBidXQgY2Fu IGFsc28gYmUgZmllbmRpc2hseSB0cmlja3kgdG8gbGVhcm4gaWYgeW91IGFyZSBub3QgZmFt aWxpYXIuIFRoZXkgYXJlIHdvcnRoIGxlYXJuaW5nLjwvcD4KCgk8cD5MZXQmIzgyMTc7cyBk aXZlIGluIGF0IHRoZSBkZWVwIGVuZCBhbmQgdGVsbCB0aGUgcGx1Z2luIHRoYXQsIHVuZGVy IG5vIGNpcmN1bXN0YW5jZXMsIG11c3Qgd2UgYWxsb3cgYW55IGlucHV0IHRoYXQgaXMgbm9u LW51bWVyaWM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O3R4cDp2YXJpYWJsZSBuYW1lPSZxdW90O2hpZ2hlc3QmcXVvdDsgdmFsdWU9JnF1b3Q7 MTAwJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3VybHZhcjpsb3cm cXVvdDsgb3BlcmF0b3I9JnF1b3Q7Z2UsIGxlJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7MSwg dHhwdmFyOmhpZ2hlc3QmcXVvdDsgZmlsdGVyPSZxdW90Oy9bXjAtOV0rLyZxdW90OyBkZWJ1 Zz0mcXVvdDsyJnF1b3Q7Jmd0OwogICAmbHQ7cCZndDt7c21kX2lmX2xvd30gaXMgdmFsaWQg YW5kIGlzIGJldHdlZW4KICAge3NtZF9pZl92YWwxfSBhbmQge3NtZF9pZl9oaWdoZXN0fS4m bHQ7L3AmZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogICAmbHQ7cCZndDtTb3JyeSwgdGhlIHZh bHVlIHtzbWRfaWZfbG93fSBpcyBub3Qgd2l0aGluIHRoZQogICAgIHJhbmdlIHtzbWRfaWZf dmFsMX0te3NtZF9pZl9oaWdoZXN0fS4mbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPlsgRWFnbGUtZXllZCBwZW9wbGUgbWF5IG5vdGljZSB0aGF0 IHNvbWV0aGluZyBzaW1pbGFyIGNhbiBiZSBhY2hpZXZlZCB3aXRoIHRoZSA8Y29kZT46TlVN PC9jb2RlPiBtb2RpZmllci4gVGhlIGRpZmZlcmVuY2UgaGVyZSBpcyB0aGF0IHRoZSByZXBs YWNlbWVudCB2YXJpYWJsZXMgYXJlIGFsc28gZmlsdGVyZWQsIHdoZXJlYXMgd2l0aCA8Y29k ZT46TlVNPC9jb2RlPiB0aGV5IGNvbnRhaW4gdGhlIG9yaWdpbmFsIChwb3NzaWJseSBpbnZh bGlkKSBpbnB1dCBdPC9wPgoKCTxwPkFsdGhvdWdoIG91dCBvZiB0aGUgc2NvcGUgb2YgdGhp cyBkb2N1bWVudGF0aW9uLCBpdCYjODIxNztzIHdvcnRoIGp1c3QgdGFraW5nIGEgbW9tZW50 IHRvIHNlZSB3aGF0IHRoZSBmaWx0ZXIgaXMgZG9pbmc6PC9wPgoKPHByZT48Y29kZT4vW14w LTldKy8KPC9jb2RlPjwvcHJlPgoKCTx1bD4KCQk8bGk+VGhlIGZvcndhcmQgc2xhc2hlcyBh cmUgc3RhcnQgYW5kIGVuZCBkZWxpbWl0ZXJzIGFuZCBzaG91bGQgYWx3YXlzIGJlIHByZXNl bnQgKHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSYjODIxNztyZSBkb2luZyEpPC9saT4KCQk8 bGk+VGhlIHNxdWFyZSBicmFja2V0cyA8Y29kZT5bXTwvY29kZT4gZGVub3RlIGEgY2hhcmFj dGVyIGNsYXNzLCBvciBncm91cCBvZiBjaGFyYWN0ZXJzLiBJbiB0aGlzIGNhc2UgdGhleSBj b250YWluIHRoZSByYW5nZSBvZiBkaWdpdHMgMCB0byA5PC9saT4KCQk8bGk+VGhlIGNpcmN1 bWZsZXggPGNvZGU+XjwvY29kZT4gbmVnYXRlcyB0aGUgY2xhc3MgKGkuZS4gbm9uLWRpZ2l0 cyk8L2xpPgoJCTxsaT5UaGUgcGx1cyA8Y29kZT4rPC9jb2RlPiBtZWFucyAmIzgyMTY7b25l IG9yIG1vcmUgb2YgdGhlIHRoaW5ncyBJJiM4MjE3O3ZlIGp1c3Qgc2VlbiYjODIxNzs8L2xp PgoJPC91bD4KCgk8cD5TbyBwdXR0aW5nIGl0IGFsbCB0b2dldGhlciwgaXQgcmVhZHMgJiM4 MjIwO0ZpbmQgZXZlcnkgb2NjdXJyZW5jZSBvZiBvbmUgb3IgbW9yZSBub24tZGlnaXRzJiM4 MjIxOy4gVGh1cyBpdCBsb29rcyBhdCBldmVyeSBmaWVsZCBhbmQgZmluZHMgYW55dGhpbmcg bm9uLW51bWVyaWMuIFRoZW4gaXQgcmVwbGFjZXMgd2hhdGV2ZXIgaXQgZmluZHMgd2l0aCA8 Y29kZT4mIzM5OyYjMzk7PC9jb2RlPiwgaS5lLiBub3RoaW5nLCBuYWRhLCB6aXAuIEVmZmVj dGl2ZWx5LCBpdCBkZWxldGVzIHdoYXRldmVyIG5vbi1kaWdpdHMgaXQgZmluZHMgYW5kIGxl YXZlcyB0aGUgZ29vZCBzdHVmZiAodGhlIG51bWJlcnMpIGJlaGluZC48L3A+CgoJPGgzIGlk PSJmcmVwbGFjaW5nIj5SZXBsYWNpbmcgYmFkIGRhdGE8L2gzPgoKCTxwPkZvciBlYWNoIG1h dGNoaW5nIGZpbHRlciB0aGVyZSYjODIxNztzIGFuIGVxdWl2YWxlbnQgPGNvZGU+cmVwbGFj ZTwvY29kZT4gc3RyaW5nLiBCeSBkZWZhdWx0IHRoaXMgaXMgc2V0IHRvIDxjb2RlPnJlcGxh Y2U9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB3aGljaCBtZWFucyAmIzgyMjA7cmVwbGFjZSB3aGF0 ZXZlciB5b3UgZmluZCB3aXRoIG5vdGhpbmcmIzgyMjE7OyBvciBpbiBvdGhlciB3b3JkcyAm IzgyMjA7ZGVsZXRlIGV2ZXJ5dGhpbmcgdGhhdCBtYXRjaGVzIHRoZSBmaWx0ZXImIzgyMjE7 LiBZb3UgbWF5IGVsZWN0IHRvIHJlcGxhY2UgeW91ciBmaWx0ZXJlZCBkYXRhIHdpdGggc29t ZXRoaW5nIGVsc2UsIHNheSwgPGNvZGU+cmVwbGFjZT0mcXVvdDt0eHAmcXVvdDs8L2NvZGU+ LiBTbyBpZiBzb21lb25lIGVudGVyZWQgJiM4MjIwO2ZyM2QmIzgyMjE7IHlvdSB3b3VsZCBz ZWUgdGhlIHJlcGxhY2VtZW50IHZhcmlhYmxlIGhhcyBhIHZhbHVlICYjODIyMDt0eHAzdHhw JiM4MjIxOyAodGhlIHJlYXNvbiB5b3Ugb25seSBnZXQgb25lICYjODIxNjt0eHAmIzgyMTc7 IGJlZm9yZSB0aGUgbnVtYmVyIGlzIGR1ZSB0byB0aGUgZXhwcmVzc2lvbiBiZWluZyA8ZW0+ Z3JlZWR5PC9lbT4gYW5kIGdvYmJsaW5nIHVwIGFzIG1hbnkgY2hhcmFjdGVycyBhcyBpdCBj YW4gaW4gYSBncm91cCBiZWZvcmUgcmVwbGFjaW5nIHRoZW0uIFNlZSBhbnkgcmVnZXggdHV0 b3JpYWwgZm9yIG1vcmUgb24gdGhpcyB0b3BpYykuPC9wPgoKCTxwPlVuZGVyIG5vcm1hbCBj aXJjdW1zdGFuY2VzIHlvdSB3b24mIzgyMTc7dCB3YW50IHRvIG1lc3Mgd2l0aCA8Y29kZT5y ZXBsYWNlPC9jb2RlPiBhcyBpdCYjODIxNztsbCBkbyB3aGF0IHlvdSB3YW50IHdpdGggdGhl IGRlZmF1bHQgJiM4MjE2O2RlbGV0ZSYjODIxNzsgb3BlcmF0aW9uLjwvcD4KCgk8aDMgaWQ9 ImZvcHRpb25zIj5GaWx0ZXJpbmcgb3B0aW9uczwvaDM+CgoJPHA+QnkgZGVmYXVsdCwgdGhl IHBsdWdpbiBvbmx5IGxvb2tzIGF0IDxjb2RlPmZpZWxkPC9jb2RlPiBkYXRhLiBJZiB5b3Ug d2lzaCB0byBjaGFuZ2UgdGhhdCwgdXNlIHRoZSA8Y29kZT5maWx0ZXJfaW48L2NvZGU+IGF0 dHJpYnV0ZS48L3A+CgoJPHA+VGhlIHBsdWdpbiBhbHNvIGFwcGxpZXMgdGhlIGZpbHRlciB0 byBhbGwgZmllbGRzICg8Y29kZT5maWx0ZXJfdHlwZT0mcXVvdDthbGwmcXVvdDs8L2NvZGU+ KS4gWW91IG1heSB3aXNoIHRvIG9ubHkgdGFyZ2V0IGEgZmlsdGVyIGF0IHVybCBhbmQgc2Vy dmVyIHZhcnMsIGluIHdoaWNoIGNhc2UgeW91IHdvdWxkIHNwZWNpZnkgPGNvZGU+ZmlsdGVy X3R5cGU9JnF1b3Q7dXJsdmFyLCBzdnJ2YXImcXVvdDs8L2NvZGU+LiBPciBtYXliZSB5b3Ug d2lzaCB0byB2YWxpZGF0ZSB0aGUgYXJ0aWNsZSBpbWFnZSBmaWVsZCBpbiBjYXNlIHNvbWVv bmUgZW50ZXJlZCBzb21lIHJvZ3VlIGRhdGEgdGhlcmU6IDxjb2RlPmZpbHRlcl90eXBlPSZx dW90O2FydGljbGVfaW1hZ2UmcXVvdDs8L2NvZGU+LjwvcD4KCgk8aDMgaWQ9ImZjYXZlYXQi PkZpbHRlcmluZyBjYXZlYXQ8L2gzPgoKCTxwPklmIHlvdSBzcGVjaWZ5IDxjb2RlPmZpbHRl cl9vbj0mcXVvdDtmaWVsZCwgdmFsdWUmcXVvdDs8L2NvZGU+IGl0IGlzIGltcG9ydGFudCB0 byBub3RlIHRoYXQgdGhlIDxlbT5zYW1lIGZpbHRlcjwvZW0+IHdpbGwgYmUgYXBwbGllZCB0 byBlYWNoIGNvcnJlc3BvbmRpbmcgZmllbGQgYW5kIHZhbHVlLiBJZiB5b3VyIGZpbHRlciBp cyB0b28gc3RyaWN0IHRoZXJlJiM4MjE3O3MgYSBjaGFuY2UgaXQgbWF5IGZpbHRlciBldmVy eSBjaGFyYWN0ZXIgb3V0IG9mIGJvdGggPGNvZGU+ZmllbGQ8L2NvZGU+IGFuZCA8Y29kZT52 YWx1ZTwvY29kZT4sIHRodXMgaWYgeW91ciB0ZXN0IHdhcyBmb3IgZXF1YWxpdHkgdGhlIHRl c3Qgd291bGQgcmV0dXJuICYjODIxNjt0cnVlJiM4MjE3Oy4gSGVyZSYjODIxNztzIGFuIGV4 YW1wbGU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7dXJsdmFyOmNvbXAxJnF1b3Q7IG9wZXJhdG9yPSZx dW90O2VxJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7dXJsdmFyOmNvbXAyJnF1b3Q7IGZpbHRl cj0mcXVvdDsvW15hLXpBLVpdKy8mcXVvdDsKICAgICBmaWx0ZXJfb249JnF1b3Q7ZmllbGQs IHZhbHVlJnF1b3Q7Jmd0OwogICAvLyBJJiMzOTttIE5PVCBuZWNlc3NhcmlseSB2YWxpZAom bHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5JZiB5b3VyIHVzZXIgdHlw ZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IDxjb2RlPnNpdGUuY29t L2FydGljbGU/Y29tcDE9MTIzNDUmYW1wO2NvbXAyPTY3ODkwPC9jb2RlPiB0aGUgcGx1Z2lu IHdvdWxkIGRvIHRoZSBmb2xsb3dpbmc6PC9wPgoKCTxvbD4KCQk8bGk+RmlsdGVyIGNvbXAx IGFuZCByZW1vdmUgYWxsIG5vbi1sZXR0ZXIgY2hhcmFjdGVyczwvbGk+CgkJPGxpPkZpbHRl ciBjb21wMiBhbmQgcmVtb3ZlIGFsbCBub24tbGV0dGVyIGNoYXJhY3RlcnM8L2xpPgoJCTxs aT5Mb29rIGF0IGNvbXAxICh3aGljaCBpcyBub3cgZW1wdHkpIGFuZCBjb21wMiAod2hpY2gg aXMgYWxzbyBlbXB0eSksIHRoZW4gY29tcGFyZSB0aGVtPC9saT4KCTwvb2w+CgoJPHA+WW91 IGNhbiBzZWUgd2hhdCYjODIxNztzIGdvaW5nIHRvIGhhcHBlbjogdGhlIHRlc3QgcmVzdWx0 IGlzIGdvaW5nIHRvIGJlICYjODIxNjt0cnVlJiM4MjE3OyBiZWNhdXNlICYjODIyMDtub3Ro aW5nJiM4MjIxOyBkb2VzIGluZGVlZCBlcXVhbCAmIzgyMjA7bm90aGluZyYjODIyMTsuIFNv IHRoZSBhY3Qgb2YgdGhlIHVzZXIgZW50ZXJpbmcgdHdvIG5vbnNlbnNpY2FsLCBjb21wbGV0 ZWx5IG51bWVyaWMgc3RyaW5ncyBvZiBkYXRhIGhhcyBicm9rZW4geW91ciBsb2dpYy48L3A+ CgoJPHA+Rm9yIHRoaXMgcmVhc29uLCBpZiB5b3UgYXJlIGZpbHRlcmluZyBvbiBib3RoIGZp ZWxkIGFuZCB2YWx1ZSwgeW91IHNob3VsZCBwZXJmb3JtIDxlbT5hZGRpdGlvbmFsPC9lbT4g dGVzdHMgdG8gc2VlIGlmIGVpdGhlciBmaWVsZCAvIHZhbHVlIGlzIHNldCBhdCBhbGwuIFRo aXMgaXMgYmV0dGVyOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3VybHZhcjpjb21wMSwgdXJsdmFyOmNv bXAxLCB1cmx2YXI6Y29tcDImcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtlcSwgaXN1c2Vk LCBpc3VzZWQmcXVvdDsgdmFsdWU9JnF1b3Q7dXJsdmFyOmNvbXAyJnF1b3Q7CiAgICAgZmls dGVyPSZxdW90Oy9bXmEtekEtWl0rLyZxdW90OwogICAgIGZpbHRlcl9vbj0mcXVvdDtmaWVs ZCwgdmFsdWUmcXVvdDsmZ3Q7CiAgIC8vIEkmIzM5O20gbm93IGFjdHVhbGx5IHZhbGlkCiZs dDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlNvIG5vdywgaWYgeW91ciBm aWx0ZXIgcmVtb3ZlcyBldmVyeXRoaW5nIGZyb20gYm90aCA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiB2YXJzLCBpdCBzdGlsbCBmYWlscyB0aGUgJiM4MjE2O2hhcyB0aGUgdXNl ciBlbnRlcmVkIGFueXRoaW5nIGF0IGFsbCYjODIxNzsgdGVzdHMgYmVjYXVzZSBhcyBmYXIg YXMgdGhlIHBsdWdpbiBpcyBjb25jZXJuZWQsIHRoZSB2aXNpdG9yIGhhcyBzdWJtaXR0ZWQg cnViYmlzaC48L3A+CgoJPGgzIGlkPSJmZnVydGhlciI+R29pbmcgZnVydGhlcjwvaDM+CgoJ PHA+VGhlIGFib3ZlIGV4YW1wbGVzIGFsbCB1c2UgYSBzaW5nbGUgZmlsdGVyLiBZb3UgY2Fu IHNwZWNpZnkgbW9yZSB0aGFuIG9uZSBmaWx0ZXIgYW5kIHJlcGxhY2VtZW50IGlmIHlvdSB3 aXNoLCBqdXN0IGNvbW1hLWRlbGltaXQgdGhlbSAodW5sZXNzIHlvdSYjODIxNzt2ZSBvdmVy cmlkZW4gdGhlIDxjb2RlPnBhcmFtX2RlbGltPC9jb2RlPiBvZiBjb3Vyc2UpLjwvcD4KCgk8 cD5XaGVuIHlvdSBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgZmlsdGVyLCB0aGV5IGlnbm9yZSB0 aGUgPGNvZGU+ZmlsdGVyX3R5cGU8L2NvZGU+IGF0dHJpYnV0ZSBiZWNhdXNlIHRoZSBmaWx0 ZXJzIGFyZSBhcHBsaWVkIGluIG9yZGVyOyBvbmUgcGVyIHRlc3QuIElmIHlvdSB3aXNoIHRv IHNraXAgYSBwYXJ0aWN1bGFyIGZpZWxkIGFuZCBub3QgYXBwbHkgYSBmaWx0ZXIsIHNpbXBs eSBsZWF2ZSBhbiBlbXB0eSBjb21tYSBhcyBhIHBsYWNlaG9sZGVyLCBlLmcuIDxjb2RlPmZp bHRlcj0mcXVvdDssIC9bXmEtekEtWjAtOVwtXSsvLCAsIC9bXjAtOV0rLyZxdW90OzwvY29k ZT4gd291bGQgYXBwbHkgdGhlIHJlc3BlY3RpdmUgZmlsdGVycyB0byB0aGUgMm5kIGFuZCA0 dGggdGVzdHMgb25seS48L3A+CgoJPGgyPkV4YW1wbGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+ RXhhbXBsZSAxOiBzdGFuZGFyZCBjb21wYXJpc29uPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3NlY3Rp b24sIGlkJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7YmVnaW5zLCBndCZxdW90OwogICAg IHZhbHVlPSZxdW90O2xpb24sIDEyJnF1b3Q7Jmd0OwogJmx0O3AmZ3Q7VGhlIGxpb24gc2xl ZXBzIHRvbmlnaHQmbHQ7L3AmZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Um9v b29vYXJycnIhICpDSE9NUCombHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPkNoZWNrcyBpZiB0aGUgY3VycmVudCBzZWN0aW9uIG5hbWUgYmVnaW5z IHdpdGggdGhlIHdvcmQgJiM4MjIwO2xpb24mIzgyMjE7IGFuZCB0aGUgYXJ0aWNsZSBJRCBp cyBncmVhdGVyIHRoYW4gMTIuIERpc3BsYXlzICYjODIyMDtUaGUgbGlvbiBzbGVlcHMgdG9u aWdodCYjODIyMTsgaWYgYm90aCBjb25kaXRpb25zIGFyZSBtZXQgb3IgZGlzcGxheXMgdGhl IHRleHQgJiM4MjIwO1Jvb29vb2FycnJyISA8c3Ryb25nPjxzcGFuIGNsYXNzPSJjYXBzIj5D SE9NUDwvc3Bhbj48L3N0cm9uZz4mIzgyMjA7IGlmIG5vdC48L3A+CgoJPGgzIGlkPSJlZzIi PkV4YW1wbGUgMjogb3RoZXIgdHlwZXMgb2YgZmllbGQ8L2gzPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7c3Vt bWFyeSwgY2F0ZWdvcnkxLCB1cmx2YXI6cGljJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7 aXN1c2VkLCBlcSwgaXNudW0mcXVvdDsKICAgICB2YWx1ZT0mcXVvdDssIGFuaW1hbCAsJnF1 b3Q7ICZndDsKICAmbHQ7cCZndDtBbGwgbWF0Y2hlZCZsdDsvcCZndDsKJmx0O3R4cDplbHNl IC8mZ3Q7CiAmbHQ7cCZndDtNYXRjaCBmYWlsZWQmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9p ZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNoZWNrcyBpZiB0aGUgY3VzdG9tIGZpZWxkIGxh YmVsbGVkICYjODIyMDtzdW1tYXJ5JiM4MjIxOyBoYXMgc29tZSBkYXRhIGluIGl0LCBjaGVj a3MgaWYgY2F0ZWdvcnkxIGVxdWFscyAmIzgyMjA7YW5pbWFsJiM4MjIxOyBhbmQgdGVzdHMg aWYgdGhlIHVybHZhciA8Y29kZT5waWM8L2NvZGU+IGlzIG51bWVyaWMgKGUuZy4gPGNvZGU+ P3BpYz01PC9jb2RlPikuPC9wPgoKCTxwPklmIGFsbCB0aGVzZSBjb25kaXRpb25zIGFyZSBt ZXQgdGhlICYjODIyMDtBbGwgbWF0Y2hlZCYjODIyMTsgbWVzc2FnZSBpcyBkaXNwbGF5ZWQs IGVsc2UgdGhlICYjODIyMDtNYXRjaCBmYWlsZWQmIzgyMjE7IG1lc3NhZ2UgaXMgc2hvd24u IE5vdGUgdGhhdCA8Y29kZT5pc3VzZWQ8L2NvZGU+IGFuZCA8Y29kZT5pc251bTwvY29kZT4g ZG9uJiM4MjE3O3QgdGFrZSBhcmd1bWVudHMgZm9yIDxjb2RlPnZhbHVlPC9jb2RlPiBhbmQg dGhlaXIgcG9zaXRpb25zIGFyZSBoZWxkIGJ5IGVtcHR5IGNvbW1hcyAodGVjaG5pY2FsbHkg dGhlIGxhc3QgY29tbWEgaXNuJiM4MjE3O3QgbmVlZGVkIGJ1dCBpdCBoZWxwcyBrZWVwIGV2 ZXJ5dGhpbmcgbmVhdCBpZiB5b3UgYWRkIGZ1cnRoZXIgdGVzdHMgbGF0ZXIgb24pLjwvcD4K Cgk8aDMgaWQ9ImVnMyI+RXhhbXBsZSAzOiB1c2luZyAmIzgyMTY7b3ImIzgyMTc7IGxvZ2lj PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6 c21kX2lmIGZpZWxkPSZxdW90O2FydGljbGVfaW1hZ2UsIHN2cnZhcjpIVFRQX1VTRVJfQUdF TlQmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtlcSwgY29udGFpbnMmcXVvdDsKICAgICB2 YWx1ZT0mcXVvdDt1cmx2YXI6cGljLCBTYWZhcmkmcXVvdDsKICAgICBsb2dpYz0mcXVvdDtv ciZxdW90OyZndDsKICZsdDtwJmd0O0NvbWUgaW50byBteSBwYXJsb3VyJmx0Oy9wJmd0Owom bHQ7dHhwOmVsc2UgLyZndDsKICZsdDtwJmd0O05vdCB0b2RheSwgdGhhbmtzJmx0Oy9wJmd0 OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Db21wYXJlcyAoZm9y IGVxdWFsaXR5KSB0aGUgY3VycmVudCBhcnRpY2xlIGltYWdlIGlkIHdpdGggdGhlIHZhbHVl IG9mIHRoZSB1cmwgdmFyaWFibGUgPGNvZGU+cGljPC9jb2RlPiBhbmQgY2hlY2tzIGlmIHRo ZSB2YWx1ZSBvZiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8L3NwYW4+X1VTRVJfQUdF TlQgc3RyaW5nIGNvbnRhaW5zICYjODIyMDtTYWZhcmkmIzgyMjE7LiBUaGlzIGV4YW1wbGUg dXNlcyB0aGUgJiM4MjE2O29yJiM4MjE3OyBsb2dpYywgaGVuY2UgaWYgPGVtPmVpdGhlcjwv ZW0+IGNvbmRpdGlvbiBpcyBtZXQgdGhlICYjODIxNjtjb21lIGludG8gbXkgcGFybG91ciYj ODIxNzsgbWVzc2FnZSBpcyBzaG93biwgb3RoZXJ3aXNlIHRoZSAmIzgyMTY7bm90IHRvZGF5 JiM4MjE3OyBtZXNzYWdlIGlzIGRpc3BsYXllZC48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1w bGUgNDogc3ViLWNhdGVnb3J5IHRlc3Rpbmc8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7cGFyZW50OkxW TDImcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtlcSZxdW90OwogICAgIHZhbHVlPSZxdW90 O21hbW1hbCZxdW90OyZndDsKICZsdDt0eHA6YXJ0aWNsZSAvJmd0OwombHQ7dHhwOmVsc2Ug LyZndDsKICZsdDtwJmd0O05vdCB0b2RheSwgdGhhbmtzJmx0Oy9wJmd0OwombHQ7L3R4cDpz bWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5PbiBhIGNhdGVnb3J5IGxpc3QgcGFnZSwg dGhpcyBjaGVja3MgdGhlIDJuZCBzdWItY2F0ZWdvcnkgb2YgdGhlIHRyZWUgdG8gc2VlIGlm IGl0IGVxdWFscyAmIzgyMjA7bWFtbWFsJiM4MjIxOy4gSWYgaXQgZG9lcywgdGhlIGFydGlj bGUgaXMgZGlzcGxheWVkOyBpZiBub3QsIHRoZSBtZXNzYWdlIGlzIHNob3duIGluc3RlYWQu IFJlbW92aW5nIHRoZSA8Y29kZT46TFZMMjwvY29kZT4gJiM4MjEyOyB3aGljaCBtZWFucyB5 b3UgY2FuIGFsc28gcmVtb3ZlIHRoZSBvcGVyYXRvciBwYXJhbWV0ZXIgdG8gZm9yY2UgdGhl IGNvbXBhcmlzb24gdG8gYmUgdGhlIGRlZmF1bHQgJiM4MjIwO2NvbnRhaW5zJiM4MjIxOyAm IzgyMTI7IGNoZWNrcyBpZiB0aGUgY3VycmVudCAoZ2xvYmFsKSBjYXRlZ29yeSBpcyBhIGNo aWxkIG9mICYjODIxNjttYW1tYWwmIzgyMTc7IGF0IGFueSBuZXN0aW5nIGxldmVsLjwvcD4K Cgk8cD5Nb3ZlIHRoZSBleGFtcGxlIGludG8gYW4gYXJ0aWNsZSBvciBhcnRpY2xlIEZvcm0g YW5kIGNoYW5nZSB0aGUgZmllbGQgdG8gPGNvZGU+cGFyZW50OkNBVDE8L2NvZGU+IHRvIHNl ZSBpZiB0aGUgYXJ0aWNsZSYjODIxNztzIGNhdGVnb3J5MSBtYXRjaGVzICYjODIxNjttYW1t YWwmIzgyMTc7IGF0IGFueSBsZXZlbCwgb3IgdXNlIDxjb2RlPmZpZWxkPSZxdW90O3BhcmVu dDpDQVQxOkxWTDImcXVvdDs8L2NvZGU+IHRvIGNvbWJpbmUgdGhlIGNoZWNrcy48L3A+CgoJ PGgzIGlkPSJlZzUiPkV4YW1wbGUgNTogZGVmaW5lZC91bmRlZmluZWQvaXN1c2VkL2lzZW1w dHk8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpzbWRfaWYgZmllbGQ9JnF1b3Q7dXJsdmFyOnBpYywgdXJsdmFyOnBhZ2UmcXVvdDsKICAg ICBvcGVyYXRvcj0mcXVvdDtndDpOVU0sIHVuZGVmaW5lZCZxdW90OwogICAgIHZhbHVlPSZx dW90Oz9hcnRpY2xlX2ltYWdlLCZxdW90OyZndDsKICZsdDtwJmd0O1llcyBwbGVhc2UmbHQ7 L3AmZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Tm90IHRvZGF5LCB0aGFua3Mm bHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRlc3Rz IGlmIHRoZSB1cmwgdmFyaWFibGUgPGNvZGU+cGljPC9jb2RlPiBpcyBzdHJpY3RseSBudW1l cmljYWxseSBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIGluIHRoZSBjdXJyZW50IGFydGljbGUm IzgyMTc7cyA8Y29kZT5hcnRpY2xlX2ltYWdlPC9jb2RlPiBmaWVsZCBhbmQgdGhhdCB0aGUg dXJsIHZhcmlhYmxlIDxjb2RlPnBhZ2U8L2NvZGU+IGlzIG1pc3NpbmcgZnJvbSB0aGUgPHNw YW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gYWRkcmVzcy4gQ29tcGFyZSB0aGUgb3V0Y29t ZSBvZiB0aGlzIHRlc3Qgd2l0aCB0aGUgb3RoZXIgb3BlcmF0b3JzIHVzaW5nIHRoZSBmb2xs b3dpbmcgdGFibGUgd2hlbiB0ZXN0aW5nIHRoZSA8Y29kZT5wYWdlPC9jb2RlPiB1cmx2YXI6 PC9wPgoKCTx0YWJsZT4KCQk8dHI+CgkJCTx0aD48c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj48L3NwYW4+IDwvdGg+CgkJCTx0aD5kZWZpbmVkIDwv dGg+CgkJCTx0aD51bmRlZmluZWQgPC90aD4KCQkJPHRoPmlzdXNlZCA8L3RoPgoJCQk8dGg+ aXNlbXB0eSA8L3RoPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IGluZGV4LnBocD9wYWcgPC90 ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNF PC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4g Y2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNs YXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3Rk PgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8 L3NwYW4+PC9zcGFuPiA8L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IGluZGV4LnBocD9w YWdlPSA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2Fw cyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMi PjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4g PHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3Nw YW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBz Ij5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPiBpbmRl eC5waHA/cGFnZT00IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNs YXNzPSJjYXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFz cz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4K CQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3Nw YW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFz cz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCTwvdHI+Cgk8L3RhYmxlPgoK CTxoMyBpZD0iZWc2Ij5FeGFtcGxlIDY6IHNob3J0IGNpcmN1aXRpbmcgdGhlIDxjb2RlPmZp ZWxkPC9jb2RlPjwvaDM+CgoJPHA+UHV0IHRoaXMgaW5zaWRlIHlvdXIgPGNvZGU+cGxhaW5s aW5rczwvY29kZT4gZm9ybSBhbmQgZXhlY3V0ZSBhIDxjb2RlPiZsdDt0eHA6bGlua2xpc3Qg LyZndDs8L2NvZGU+IGZyb20gYW4gYXJ0aWNsZSBwYWdlL2Zvcm06PC9wPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1 b3Q7aWQmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtnZTpOVU0sIGxlOk5VTSZxdW90Owog ICAgIHZhbHVlPSZxdW90O3VybHZhcjptaW4sIHVybHZhcjptYXgmcXVvdDsmZ3Q7CiAgJmx0 O3R4cDpsaW5rZGVzY3RpdGxlIC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiZsdDsvdHhwOnNtZF9pZiZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgd2lsbCBsaXN0IG9ubHkgdGhlIGxpbmtzIHRo YXQgaGF2ZSBJRHMgYmV0d2VlbiB0aGUgPGNvZGU+bWluPC9jb2RlPiBhbmQgPGNvZGU+bWF4 PC9jb2RlPiB2YXJpYWJsZXMgc3BlY2lmaWVkIG9uIHRoZSBhZGRyZXNzIGJhci4gTm90aWNl IHRoYXQgdGhlIGlkIGZpZWxkIGlzIG9ubHkgbGlzdGVkIG9uY2UgYW5kIGVhY2ggb3BlcmF0 b3IgaXMgYXBwbGllZCB0byBpdCBpbiB0dXJuLjwvcD4KCgk8aDMgaWQ9ImVnNyI+RXhhbXBs ZSA3OiBhbHBoYW51bWVyaWMgdGVzdGluZzwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDt1cmx2YXI6cHJv ZHVjdF9jb2RlJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7aXNhbG51bSZxdW90OyZndDsK ICAmbHQ7dHhwOm91dHB1dF9mb3JtIGZvcm09JnF1b3Q7c2hvd19wcm9kdWN0JnF1b3Q7IC8m Z3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7SW52YWxpZCBwcm9kdWN0IGNvZGUm bHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRlc3Rz IHRvIHNlZSBpZiB0aGUgcHJvZHVjdF9jb2RlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IHZhcmlhYmxlIGlzIGFscGhhbnVtZXJpYyBhbmQgZGlzcGxheXMgYSBmb3JtIGlmIHNv LjwvcD4KCgk8aDMgaWQ9ImVnOCI+RXhhbXBsZSA4OiBkaXNwbGF5aW5nIHVzZWQgdmFsdWVz PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6 c21kX2lmIGZpZWxkPSZxdW90O3VybHZhcjpzb3J0X29yZGVyJnF1b3Q7CiAgICAgb3BlcmF0 b3I9JnF1b3Q7aW4mcXVvdDsKICAgICB2YWx1ZT0mcXVvdDtpZC9wcmljZS9zaXplL2NvbG91 ciZxdW90OyZndDsKICAmbHQ7cCZndDtTb3J0aW5nIHZhbHVlcyBieSB7c21kX2lmX3NvcnRf b3JkZXJ9Jmx0Oy9wJmd0OwogIC8vIERvIHNvbWUgc3R1ZmYKJmx0O3R4cDplbHNlIC8mZ3Q7 CiAgLy8gVXNlIGEgZGVmYXVsdCBzb3J0LCBvciBzaG93IGFuIGVycm9yIGhlcmUKJmx0Oy90 eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+QnkgdXNpbmcgdGhlIHJlcGxhY2Vt ZW50IHRhZyB7c21kX2lmX3NvcnRfb3JkZXJ9IHlvdSBoYXZlIHBsdWNrZWQgdGhlIHZhbHVl IGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGJhciBhbmQgaW5zZXJ0 ZWQgaXQgaW50byB0aGUgYXJ0aWNsZS4gVXNlZnVsIHdoZW4gdXNpbmcgdGhlIDxjb2RlPmlu PC9jb2RlPiBvciA8Y29kZT5ub3RpbjwvY29kZT4gb3BlcmF0b3JzIGJlY2F1c2UsIGFsdGhv dWdoIHlvdSBrbm93IHRoYXQgdGhlIGZpZWxkIG1hdGNoZWQgb25lIG9mIHRoZSB2YWx1ZXMg aW4geW91ciBsaXN0LCB5b3Ugd291bGQgb3RoZXJ3aXNlIG5vdCBrbm93IHdoaWNoIG9uZSBo YXMgYmVlbiBnaXZlbiBvbiB0aGUgYWRkcmVzcyBiYXIuIElmIHlvdSBzcGVjaWZ5IHRoZSA8 Y29kZT5kZWJ1ZzwvY29kZT4gYXR0cmlidXRlIGluIHRhZ3MgbGlrZSB0aGVzZSB5b3UgY2Fu IG1vcmUgZWFzaWx5IHNlZSB3aGF0IHJlcGxhY2VtZW50cyBhcmUgYXZhaWxhYmxlLjwvcD4K Cgk8aDMgaWQ9ImVnOSI+RXhhbXBsZSA5OiB1c2luZyBwaHB2YXI8L2gzPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpwaHAmZ3Q7Cmdsb2JhbCAk Ym9keWV4OwokYm9keWV4ID0gZXhjZXJwdChhcnJheSgpKS5ib2R5KGFycmF5KCkpOwombHQ7 L3R4cDpwaHAmZ3Q7CiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3BocHZhcjpib2R5ZXgm cXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtndDpMRU4mcXVvdDsKICAgICB2YWx1ZT0mcXVv dDszMDAmcXVvdDsmZ3Q7CiAgJmx0O3AmZ3Q7WW91IGFyZSBhIGJpZyBib3kgYXQge3NtZF9p Zl9sZW5fYm9keWV4fQogICAgIGNoYXJhY3RlcnMgbG9uZyEmbHQ7L3AmZ3Q7CiZsdDsvdHhw OnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPklmIHB1dCBpbiBhbiBhcnRpY2xlIEZv cm0gKDxzcGFuIGNsYXNzPSJjYXBzIj5OT1Q8L3NwYW4+IGRpcmVjdGx5IGluIGFuIGFydGlj bGUgb3IgeW91JiM4MjE3O2xsIGdldCBhbiBvdXQgb2YgbWVtb3J5IGVycm9yISksIHRoaXMg Y2hlY2tzIHRoZSBleGNlcnB0IGFuZCBib2R5IGFuZCBzaG93cyB0aGUgbWVzc2FnZSBpZiB0 aGUgY29tYmluZWQgdG90YWwgbGVuZ3RoIGlzIG1vcmUgdGhhbiAzMDAgY2hhcmFjdGVycy48 L3A+CgoJPGgzIGlkPSJlZzEwIj5FeGFtcGxlIDEwOiA8Y29kZT5iZXR3ZWVuPC9jb2RlPiBh bmQgPGNvZGU+cmFuZ2U8L2NvZGU+PC9oMz4KCgk8cD5DaGVjayB0aGF0IHRoZSBnaXZlbiA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBwYXJhbXMgPGNvZGU+ZGF5PC9jb2RlPiBh bmQgPGNvZGU+bW9udGg8L2NvZGU+IGFyZSB3aXRoaW4gcmVhc29uYWJsZSB0b2xlcmFuY2Uu IE5vdGUgdGhhdCBpdCYjODIxNztzIHN0aWxsIHBvc3NpYmxlIHRvIHNwZWNpZnkgdGhlIDMx c3QgRmVicnVhcnkgc28geW91IG1heSByZXF1aXJlIGV4dHJhIGNoZWNrcyBpbiB0aGUgY29u dGFpbmVyLjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3VybHZhcjpkYXksIHVybHZhcjptb250aCZxdW90 OwogICAgIG9wZXJhdG9yPSZxdW90O2JldHdlZW4sIGJldHdlZW4mcXVvdDsgdmFsdWU9JnF1 b3Q7MC8zMiwgMC8xMyZxdW90OyZndDsKICAgLy8gTGlrZWx5IGEgdmFsaWQgZGF0ZSBzdXBw bGllZAombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGlzIGlzIGZ1 bmN0aW9uYWxseSBlcXVpdmFsZW50LCBhbmQgcHJvYmFibHkgbW9yZSBvYnZpb3VzIHRvIGFu eW9uZSBlbHNlIHJlYWRpbmcgdGhlIGNvZGU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7dXJsdmFyOmRh eSwgdXJsdmFyOm1vbnRoJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7cmFuZ2UsIHJhbmdl JnF1b3Q7IHZhbHVlPSZxdW90OzEvMzEsIDEvMTImcXVvdDsmZ3Q7CiAgIC8vIExpa2VseSBh IHZhbGlkIGRhdGUgc3VwcGxpZWQKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+SWYgeW91IHdhbnRlZCB0byBmYWN0b3IgdGhlIHllYXIgaW4gYW5kIG1ha2Ugc3Vy ZSB0aGF0IG5vYm9keSB1c2VkIGEgeWVhciBsZXNzIHRoYW4gMTkwMCBvciBncmVhdGVyIHRo YW4gdGhlIGN1cnJlbnQgeWVhciwgdHJ5IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpwaHAmZ3Q7Cmdsb2JhbCAkdGhpc3llYXI7 CiR0aGlzeWVhciA9IGRhdGUoJnF1b3Q7WSZxdW90Oyk7CiZsdDsvdHhwOnBocCZndDsKJmx0 O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7dXJsdmFyOmQsIHVybHZhcjptLCB1cmx2YXI6eSZx dW90OwogICAgIG9wZXJhdG9yPSZxdW90O3JhbmdlLCByYW5nZSwgcmFuZ2UmcXVvdDsKICAg ICB2YWx1ZT0mcXVvdDsxLzMxLCAxLzEyLCAxOTAwL3BocHZhcjp0aGlzeWVhciZxdW90OyZn dDsKICAgLy8gTGlrZWx5IGEgdmFsaWQgZGF0ZSBzdXBwbGllZAombHQ7L3R4cDpzbWRfaWYm Z3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMTEiPkV4YW1wbGUgMTE6IHJlYWRpbmcg bXVsdGlwbGUgdmFsdWVzIGZyb20gZGlmZmVyZW50IHBsYWNlczwvaDM+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnZhcmlhYmxlIG5hbWU9JnF1 b3Q7bHR1YWUmcXVvdDsmZ3Q7NDImbHQ7L3R4cDp2YXJpYWJsZSZndDsKJmx0O3R4cDpzbWRf aWYgZmllbGQ9JnF1b3Q7dXJsdmFyOnRyaWdnZXImcXVvdDsKICAgICBvcGVyYXRvcj0mcXVv dDtpbiZxdW90OyB2YWx1ZT0mcXVvdDszLzE1LzM2L3R4cHZhcjpsdHVhZS8xODAvP3NlY3Jl dCZxdW90OyZndDsKICAgJmx0O3AmZ3Q7WW91IGZvdW5kIG9uZSBvZiB0aGUgbWFnaWMgbnVt YmVycyZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ Rmlyc3Qgb2YgYWxsIHdlIHNldCB1cCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gdmFyaWFibGUsIHRoZW4gdGVzdCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gdmFyaWFibGUgPGNvZGU+dHJpZ2dlcjwvY29kZT4gYW5kIHNlZSBpZiBpdCBpcyBvbmUg b2YgdGhlIG51bWJlcnMgbGlzdGVkIGluIHRoZSA8Y29kZT52YWx1ZTwvY29kZT4gYXR0cmli dXRlLiBOb3RlIHRoYXQgd2UgaGF2ZSBzcGVjaWZpZWQgdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IHZhcmlhYmxlIGFzIG9uZSBvZiB0aGUgbnVtYmVycywgYW5kIGFsc28g dGhlIGNvbnRlbnRzIG9mIHRoZSBjdXN0b20gZmllbGQgY2FsbGVkIDxjb2RlPnNlY3JldDwv Y29kZT4uIEVzc2VudGlhbGx5LCB0aGlzIGJ1aWxkcyB1cCB0aGUgdmFsdWUgYXR0cmlidXRl IGZyb20gYWxsIHRoZSBzb3VyY2VzIGFuZCB0ZXN0cyB0aGUgZmluYWwgcmVzdWx0LiBTbyBp ZiBzZWNyZXQgaGVsZCB0aGUgbnVtYmVyIDk0LCB0aGlzIHNtZF9pZiB0YWcgY2hlY2tzIGlm IHRyaWdnZXIgaXMgb25lIG9mIDMsIDE1LCAzNiwgNDIsIDE4MCBvciA5NCBhbmQgZGlzcGxh eXMgdGhlIG1lc3NhZ2UgaWYgc28uIElmIDxjb2RlPnNlY3JldDwvY29kZT4gaW5zdGVhZCBj b250YWluZWQgPGNvZGU+OTQvMTAxLzI0ODwvY29kZT4gdGhlc2UgdGhyZWUgdmFsdWVzIHdv dWxkIGFsc28gYmUgdGVzdGVkIGFzIHBhcnQgb2YgdGhlIDxjb2RlPmluPC9jb2RlPiBvcGVy YXRvci48L3A+CgoJPGgyIGNsYXNzPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHVs PgoJCTxsaT4zMCBEZWMgMDcgfCAwLjEgfCBJbml0aWFsIHJlbGVhc2U8L2xpPgoJCTxsaT4z MCBEZWMgMDcgfCAwLjIgfCBBZGRlZCBwYXJlbnQgY2F0ZWdvcnkgY2hlY2tpbmcgKHRoYW5r cyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MDIgSmFuIDA4IHwgMC4zIHwgQWRkZWQgZGVmaW5l ZC91bmRlZmluZWQgYW5kIHN0cmljdCBudW1lcmljIGNvbXBhcmlzb25zPC9saT4KCQk8bGk+ MDYgSmFuIDA4IHwgMC40IHwgQWRkZWQgPGNvZGU+PzwvY29kZT4gbm90YXRpb24gdG8gYWxs b3cgdGhlIHZhbHVlIHRvIHJlYWQgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZmll bGRzOyBiZXR0ZXIgcXVvdGUgc3VwcG9ydCAoYm90aCB0aGFua3MgTmVpbEEpPC9saT4KCQk8 bGk+MDYgSmFuIDA4IHwgMC40MSB8IEZpeGVkIGxvd2VyIGNhc2UgZmllbGQgbmFtZXMgYW5k IHVuZGVmaW5lZCBpbmRleCBlcnJvciAodGhhbmtzIHBldGVyaik8L2xpPgoJCTxsaT4xNCBK YW4gMDggfCAwLjUgfCBBZGRlZCBjYXNlX3NlbnNpdGl2ZSBvcHRpb247IG1hZGUgJiM4MjE2 O2NvbnRhaW5zJiM4MjE3OyB0aGUgZGVmYXVsdCBmb3IgJiM4MjE2O3BhcmVudCYjODIxNzsg dGVzdHM7IGltcHJvdmVkIGhlbHAgKGFsbCB0aGFua3MgdGhlX2dob3N0KTsgYWRkZWQgZGVs aW0gb3B0aW9uczwvbGk+CgkJPGxpPjE1IEphbiAwOCB8IDAuNTEgfCBGaXhlZCBkZWZpbmVk L3VuZGVmaW5lZCBzeW50YXggZXJyb3I7IHRpZ2h0ZW5lZCBpc3VzZWQvaXNlbXB0eSB0byBk aXN0aW5ndWlzaCB0aGVtIGZyb20gZGVmaW5lZC91bmRlZmluZWQ8L2xpPgoJCTxsaT4yNSBN YXkgMDggfCAwLjYgfCBGaXhlZCAmIzgyMTY7dW5kZWZpbmVkIGluZGV4JiM4MjE3OyBlcnJv cnMgKHRoYW5rcyByZWRib3QgYW5kIHRoZV9naG9zdCkgOyBhZGRlZCBtb3JlIHByZXRleHQg dmFyaWFibGVzIDsgYWRkZWQgbW9yZSA8Y29kZT5pczwvY29kZT4gY2hlY2tzIChhbmQgdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5OT1NQQUNFPC9zcGFuPiBtb2RpZmllcikgOyBhbGxvd2Vk IGZpbGUgYW5kIGxpbmsgdGVzdHMgKGluY2x1ZGluZyBwYXJlbnQgY2F0ZWdvcmllcyk8L2xp PgoJCTxsaT4yNiBNYXkgMDggfCAwLjYxIHwgRml4ZWQgc3R1cGlkIG92ZXJzaWdodCBpbiBm aWVsZCBuYW1lIGdlbmVyYXRpb24gdG8gYWxsb3cgYXJiaXRyYXJ5IG5hbWVzIGluc3RlYWQg b2YgZm9yY2luZyAkdGhpc2FydGljbGUgKHRoYW5rcyB0byBKb2FuYSBDYXJ2YWxobyBmb3Ig bGVhZGluZyBtZSB0byB0aGlzKTwvbGk+CgkJPGxpPjExIEp1biAwOCB8IDAuNjIgfCBGaXhl ZCBpbmNvcnJlY3QgcmVzdWx0IGlmIGV2YWwoKSBpcyBlbXB0eSA7IGFkZGVkIDxzcGFuIGNs YXNzPSJjYXBzIj5OVUxMPC9zcGFuPiBmaWVsZCBvYmplY3Q8L2xpPgoJCTxsaT4xMCBTZXAg MDggfCAwLjcgfCBGaXhlZCB3YXJuaW5nIGlmIGVtcHR5IGN1c3RvbSBmaWVsZCBpbiB2YWx1 ZSAodGhhbmtzIHZpc3VhbHBlb3BsZSkgOyBhZGRlZCB0eHB2YXIgc3VwcG9ydCAodGhhbmtz IHRoZV9naG9zdCkgOyBhZGRlZCB0aGlzaW1hZ2Ugc3VwcG9ydCAoZm9yIHRoZSBmdXR1cmUp IDsgYWRkZWQgb3BlcmF0b3JzIDxjb2RlPmluPC9jb2RlPiwgPGNvZGU+bm90aW48L2NvZGU+ IGFuZCB0aGUgPGNvZGU+bGlzdF9kZWxpbTwvY29kZT4gYXR0cmlidXRlOyBlbmFibGVkIHJl cGxhY2VtZW50IHRhZ3MgZm9yIG1hdGNoZWQgdmFyaWFibGVzPC9saT4KCQk8bGk+MDEgT2N0 IDA4IHwgMC43MSB8IEZpeGVkIHRoZSBmaXggZm9yIGVtcHR5IGN1c3RvbSBmaWVsZHMgaW1w bGVtZW50ZWQgaW4gMC43ICh0aGFua3MgbWFwdS92aXN1YWxwZW9wbGUpPC9saT4KCQk8bGk+ MDEgT2N0IDA4IHwgMC43MiB8IEFkZGVkIDxjb2RlPjpOT1RBR1M8L2NvZGU+ICh0aGFua3Mg bWFwdSk8L2xpPgoJCTxsaT4xMyBPY3QgMDggfCAwLjczIHwgQWRkZWQgPGNvZGU+Ok5PU1BB Q0U8L2NvZGU+IHRvIDxjb2RlPmJlZ2luczwvY29kZT4sIDxjb2RlPmVuZHM8L2NvZGU+IGFu ZCA8Y29kZT5jb250YWluczwvY29kZT4gKHRoYW5rcyBtYXB1KSwgYWRkZWQgcGhwdmFyIHN1 cHBvcnQsIDxjb2RlPjpMRU48L2NvZGU+IG1vZGlmaWVyIGFuZCBsZW5ndGggcmVwbGFjZW1l bnQgdGFncyAoYWxsIHRoYW5rcyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MTMgT2N0IDA4IHwg MC43NCB8IEJ1ZyBmaXggdGhlIHNtZF9pZl8gbmFtZXMgb2YgdmFscyBhbmQgZmllbGRzIHRv IGF2b2lkIGNsYXNoZXMuIE5vdyBudW1lcmljYWxseSBpbmRleGVkPC9saT4KCQk8bGk+MDIg RGVjIDA4IHwgMC43NSB8IEFkZGVkIDxjb2RlPmRpdmlzaWJsZTwvY29kZT4gb3BlcmF0b3Ig KHRoYW5rcyBnb21lZGlhKSA7IGFsbG93IHNob3J0LWNpcmN1aXQgb2YgZmllbGRzICh0aGFu a3MgcmVkYm90KTwvbGk+CgkJPGxpPjIwIE1hciAwOSB8IDAuNzYgfCBBZGRlZCA8Y29kZT5w b3N0dmFyPC9jb2RlPiBmaWVsZCB0eXBlICh0aGFua3Mga29zdGFzNDUpPC9saT4KCQk8bGk+ MjIgTWFyIDA5IHwgMC43NyB8IEFkZGVkIDxjb2RlPjpUUklNPC9jb2RlPiBtb2RpZmllciAo dGhhbmtzIGdvbWVkaWEpPC9saT4KCQk8bGk+MDUgQXByIDA5IHwgMC44IHwgQWRkZWQgZmls dGVyaW5nIGNhcGFiaWxpdHk8L2xpPgoJCTxsaT4yNiBTZXAgMDkgfCAwLjgxIHwgQWRkZWQg cGFyZW50IDxjb2RlPlRUTDwvY29kZT4gYW5kIDxjb2RlPktJRFM8L2NvZGU+IG1vZGlmaWVy cyAodGhhbmtzIHBob3Rvbm9tYWQpIDsgaW1wcm92ZWQgcGFyZW50IGRlYnVnIG91dHB1dDwv bGk+CgkJPGxpPjAyIE1hciAxMCB8IDAuODIgfCBBZGRlZCA8Y29kZT5iZXR3ZWVuPC9jb2Rl PiBhbmQgPGNvZGU+cmFuZ2U8L2NvZGU+ICh0aGFua3Mgc3BlZWtlKTwvbGk+CgkJPGxpPjAy IE1hciAxMCB8IDAuOSB8IEludGVybmFsIGNvZGUgcmVmYWN0b3Jpc2F0aW9uIDsgYWxsb3dl ZCBtdWx0aXBsZSB2YWx1ZXMgdG8gYmUgcmVhZCBmcm9tIG11bHRpcGxlIHNvdXJjZXMgKHRo YW5rcyBzcGVla2UpIDsgZW5oYW5jZWQgcmVwbGFjZW1lbnQgdGFnczwvbGk+Cgk8L3VsPgoK PC9kaXY+CjwhLS0gKioqIEJFR0lOIFBMVUdJTiBDU1MgKioqIC0tPgo8c3R5bGUgdHlwZT0i dGV4dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjMgO30KI3NtZF9oZWxwIGNv ZGUgeyBmb250LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3Iiwg Y291cmllciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkNDO30KI3NtZF9o ZWxwIGNvZGUuYmxvY2sgeyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRlcjoxcHggZG90dGVk ICM5OTk7IGJhY2tncm91bmQtY29sb3I6ICNmMGU2OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdp bjoxMHB4IDEwcHggMjBweDsgcGFkZGluZzoxMHB4OyB9CiNzbWRfaGVscCBhOmxpbmssICNz bWRfaGVscCBhOnZpc2l0ZWQgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25l OyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30K I3NtZF9oZWxwIGE6aG92ZXIsICNzbWRfaGVscCBhOmFjdGl2ZSB7IGNvbG9yOiBibHVlOyB0 ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBibHVlOyBw YWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgaDEgeyBjb2xvcjogIzM2OTsgZm9udDog MjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRl cjsgfQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBh ZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMt c2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsgY29sb3I6ICM2OTM7IGZvbnQ6IGJvbGQgMTJweCBB cmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAg MDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9s ZCAxMXB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46 IDEwcHggMCAwIDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXR0 LW5hbWUgeyBmb250LXdlaWdodDpib2xkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91 bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dp ZHRoOjEwMCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07IGJvcmRl cjoxcHggc29saWQgIzY2Njt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6 MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KPC9zdHlsZT4KPCEtLSAqKiogRU5E IFBMVUdJTiBDU1MgKioqIC0tPgoiO3M6NDoiY29kZSI7czoxNDc5MDoiZnVuY3Rpb24gc21k X2lmKCRhdHRzLCR0aGluZykgew0KCWdsb2JhbCAkdGhpc2FydGljbGUsICRwcmV0ZXh0LCAk dGhpc2ZpbGUsICR0aGlzbGluaywgJHRoaXNpbWFnZSwgJHZhcmlhYmxlOw0KDQoJZXh0cmFj dChsQXR0cyhhcnJheSgNCgkJJ2ZpZWxkJyA9PiAnJywNCgkJJ29wZXJhdG9yJyA9PiAnJywN CgkJJ3ZhbHVlJyA9PiAnJywNCgkJJ2xvZ2ljJyA9PiAnYW5kJywNCgkJJ2Nhc2Vfc2Vuc2l0 aXZlJyA9PiAwLA0KCQknZmlsdGVyJyA9PiAnJywNCgkJJ3JlcGxhY2UnID0+ICcnLA0KCQkn ZmlsdGVyX3R5cGUnID0+ICdhbGwnLA0KCQknZmlsdGVyX29uJyA9PiAnZmllbGQnLA0KCQkn cGFyYW1fZGVsaW0nID0+ICcsJywNCgkJJ21vZF9kZWxpbScgPT4gJzonLA0KCQknbGlzdF9k ZWxpbScgPT4gJy8nLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJLy8g U3BlY2lhbCBmaWVsZCBuYW1lcyB0aGF0IHJlZmVyIHRvICRwcmV0ZXh0IG9yIGVsc2V3aGVy ZSAtIGV2ZXJ5dGhpbmcgZWxzZSBpcyBhc3N1bWVkIHRvDQoJLy8gZXhpc3QgaW4gJHRoaXNh cnRpY2xlIHNvIGN1c3RvbSBmaWVsZHMgY2FuIGJlIHVzZWQNCgkkYWxsUHR4dCA9IGFycmF5 KA0KCQkiaWQiID0+ICckcHJldGV4dFsiaWQiXScsDQoJCSJzZWN0aW9uIiA9PiAnJHByZXRl eHRbInMiXScsDQoJCSJjYXRlZ29yeSIgPT4gJyRwcmV0ZXh0WyJjIl0nLA0KCQkicXVlcnki ID0+ICckcHJldGV4dFsicSJdJywNCgkJInBnIiA9PiAnJHByZXRleHRbInBnIl0nLA0KCQki bW9udGgiID0+ICckcHJldGV4dFsibW9udGgiXScsDQoJCSJhdXRob3IiID0+ICckcHJldGV4 dFsiYXV0aG9yIl0nLA0KCQkic3RhdHVzIiA9PiAnJHByZXRleHRbInN0YXR1cyJdJywNCgkJ InBhZ2UiID0+ICckcHJldGV4dFsicGFnZSJdJywNCgkJIm5leHRfaWQiID0+ICckcHJldGV4 dFsibmV4dF9pZCJdJywNCgkJIm5leHRfdGl0bGUiID0+ICckcHJldGV4dFsibmV4dF90aXRs ZSJdJywNCgkJIm5leHRfdXRpdGxlIiA9PiAnJHByZXRleHRbIm5leHRfdXRpdGxlIl0nLA0K CQkicHJldl9pZCIgPT4gJyRwcmV0ZXh0WyJwcmV2X2lkIl0nLA0KCQkicHJldl90aXRsZSIg PT4gJyRwcmV0ZXh0WyJwcmV2X3RpdGxlIl0nLA0KCQkicHJldl91dGl0bGUiID0+ICckcHJl dGV4dFsicHJldl91dGl0bGUiXScsDQoJCSJwZXJtbGlua19tb2RlIiA9PiAnJHByZXRleHRb InBlcm1saW5rX21vZGUiXScsDQoJKTsNCgkvLyBFYWNoIGVudHJ5IGhhcyB0aGUgb3BlcmF0 aW9uIHRvIGJlIGV2YWwoKWQgbGF0ZXIgYW5kIGEgbGlzdCBvZiBkaXNhbGxvd2VkIGZpZWxk cw0KCSRhbGxPcHMgPSBhcnJheSgNCgkJJ2VxJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkg JiYgQ0FTVCBGSUVMRCA9PT0gQ0FTVCBWQUxVRScsICcnKSwNCgkJJ25vdCcgPT4gYXJyYXko J2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklFTEQgIT09IENBU1QgVkFMVUUnLCAnJyksDQoJ CSdndCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklFTEQgPiBDQVNUIFZB TFVFJywgJycpLA0KCQknZ2UnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBDQVNUIEZJ RUxEID49IENBU1QgVkFMVUUnLCAnJyksDQoJCSdsdCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5B TUUpICYmIENBU1QgRklFTEQgPCBDQVNUIFZBTFVFJywgJycpLA0KCQknbGUnID0+IGFycmF5 KCdpc3NldChWQVJOQU1FKSAmJiBDQVNUIEZJRUxEIDw9IENBU1QgVkFMVUUnLCAnJyksDQoJ CSdiZXR3ZWVuJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgKCR0d2Vlbj1leHBsb2Rl KCInLiRsaXN0X2RlbGltLiciLCBWQUxVRSkpICYmIENBU1QgRklFTEQgPiAkdHdlZW5bMF0g JiYgQ0FTVCBGSUVMRCA8ICR0d2VlblsxXScsICcnKSwNCgkJJ3JhbmdlJyA9PiBhcnJheSgn aXNzZXQoVkFSTkFNRSkgJiYgKCRybmc9ZXhwbG9kZSgiJy4kbGlzdF9kZWxpbS4nIiwgVkFM VUUpKSAmJiBDQVNUIEZJRUxEID49ICRybmdbMF0gJiYgQ0FTVCBGSUVMRCA8PSAkcm5nWzFd JywgJycpLA0KCQknZGl2aXNpYmxlJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgQ0FT VCBGSUVMRCAlIENBU1QgVkFMVUUgPT09IDAnLCAnJyksDQoJCSdpbicgPT4gYXJyYXkoJ2lz c2V0KFZBUk5BTUUpICYmIGluX2FycmF5KEZJRUxELCBleHBsb2RlKCInLiRsaXN0X2RlbGlt LiciLCBWQUxVRSkpICE9PSBmYWxzZScsICcnKSwNCgkJJ25vdGluJyA9PiBhcnJheSgnaXNz ZXQoVkFSTkFNRSkgJiYgaW5fYXJyYXkoRklFTEQsIGV4cGxvZGUoIicuJGxpc3RfZGVsaW0u JyIsIFZBTFVFKSkgPT09IGZhbHNlJywgJycpLA0KCQknYmVnaW5zJyA9PiBhcnJheSgnaXNz ZXQoVkFSTkFNRSkgJiYgc3RycG9zKEZJRUxELCBWQUxVRSkgPT09IDAnLCAnJyksDQoJCSdj b250YWlucycgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIHN0cnBvcyhGSUVMRCwgVkFM VUUpICE9PSBmYWxzZScsICcnKSwNCgkJJ2VuZHMnID0+IGFycmF5KCdpc3NldChWQVJOQU1F KSAmJiBzdWJzdHIoRklFTEQsIHN0cmxlbihGSUVMRCkgLSBzdHJsZW4oVkFMVUUpKSA9PT0g VkFMVUUnLCAnJyksDQoJCSdkZWZpbmVkJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSknLCAn cGFyZW50JyksDQoJCSd1bmRlZmluZWQnID0+IGFycmF5KCchaXNzZXQoVkFSTkFNRSknLCAn cGFyZW50JyksDQoJCSdpc2VtcHR5JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgRklF TEQgPT0gIiInLCAnJyksDQoJCSdpc3VzZWQnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAm JiBGSUVMRCAhPSAiIicsICcnKSwNCgkJJ2lzbnVtJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFN RSkgJiYgY3R5cGVfZGlnaXQoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc2FscGhhJyA9 PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfYWxwaGEoKHN0cmluZylGSUVMRCkn LCAnJyksDQoJCSdpc2FsbnVtJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVf YWxudW0oKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc2xvd2VyJyA9PiBhcnJheSgnaXNz ZXQoVkFSTkFNRSkgJiYgY3R5cGVfbG93ZXIoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdp c3VwcGVyJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfdXBwZXIoKHN0cmlu ZylGSUVMRCknLCAnJyksDQoJCSdpc3B1bmN0JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkg JiYgY3R5cGVfcHVuY3QoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc3NwYWNlJyA9PiBh cnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfc3BhY2UoKHN0cmluZylGSUVMRCknLCAn JyksDQoJKTsNCg0KCSRudW1lcmljT3BzID0gImd0LCBnZSwgbHQsIGxlLCBlcSwgbm90LCBk aXZpc2libGUsIHJhbmdlLCBiZXR3ZWVuIjsNCgkkY2FzZU9wcyA9ICJpc2xvd2VyLCBpc3Vw cGVyIjsNCgkkc3BhY2VPcHMgPSAiaXNudW0sIGlzYWxwaGEsIGlzYWxudW0sIGlzbG93ZXIs IGlzdXBwZXIsIGlzcHVuY3QsIGJlZ2lucywgY29udGFpbnMsIGVuZHMiOw0KCSRmaWVsZHMg PSBkb19saXN0KCRmaWVsZCwgJHBhcmFtX2RlbGltKTsNCgkkbnVtRmxkcyA9IGNvdW50KCRm aWVsZHMpOw0KCSRvcHMgPSBkb19saXN0KCRvcGVyYXRvciwgJHBhcmFtX2RlbGltKTsNCgkk bnVtT3BzID0gY291bnQoJG9wcyk7DQoJJHZhbHMgPSBkb19saXN0KCR2YWx1ZSwgJHBhcmFt X2RlbGltKTsNCgkkbnVtVmFscyA9IGNvdW50KCR2YWxzKTsNCgkkcGFyZW50Q2F0cyA9ICcn OyAvLyBQbGFjZWhvbGRlciBmb3IgdGhlIGNvbmNhdGVuYXRlZCBsaXN0IG9mIGNhdGVnb3J5 IGxlYWYgbm9kZXMNCgkkcmVwbGFjZW1lbnRzID0gYXJyYXkoKTsNCgkkdHlwZSA9ICgkdGhp c2ZpbGUpID8gImZpbGUiIDogKCgkdGhpc2xpbmspID8gImxpbmsiIDogKCgkdGhpc2ltYWdl KSA/ICJpbWFnZSIgOiAiYXJ0aWNsZSIpKTsNCgkkb3V0ID0gYXJyYXkoKTsNCgkkaXRlcmF0 aW9ucyA9ICgkbnVtRmxkcyA+ICRudW1PcHMpID8gJG51bUZsZHMgOiAkbnVtT3BzOw0KCSRm aWx0ZXIgPSAoIWVtcHR5KCRmaWx0ZXIpKSA/IGRvX2xpc3QoJGZpbHRlciwgJHBhcmFtX2Rl bGltKSA6IGFycmF5KCk7DQoJJHJlcGxhY2UgPSAoIWVtcHR5KCRyZXBsYWNlKSkgPyBkb19s aXN0KCRyZXBsYWNlLCAkcGFyYW1fZGVsaW0pIDogYXJyYXkoKTsNCgkkbnVtRmlsdGVycyA9 IGNvdW50KCRmaWx0ZXIpOw0KCSRudW1SZXBsYWNlID0gY291bnQoJHJlcGxhY2UpOw0KCSRm aWx0ZXJfb24gPSAoIWVtcHR5KCRmaWx0ZXJfb24pKSA/IGRvX2xpc3QoJGZpbHRlcl9vbiwg JHBhcmFtX2RlbGltKSA6IGFycmF5KCk7DQoJJGZpbHRlcl90eXBlID0gKCFlbXB0eSgkZmls dGVyX3R5cGUpKSA/IGRvX2xpc3QoJGZpbHRlcl90eXBlLCAkcGFyYW1fZGVsaW0pIDogYXJy YXkoKTsNCglpZiAoJGRlYnVnID4gMSAmJiAoJGZpbHRlciB8fCAkcmVwbGFjZSkpIHsNCgkJ ZWNobyAiKysgRklMVEVSUyAvIFJFUExBQ0VNRU5UUyArKyI7DQoJCWRtcCgkZmlsdGVyLCAk cmVwbGFjZSk7DQoJfQ0KDQoJZm9yICgkaWR4ID0gMDsgJGlkeCA8ICRpdGVyYXRpb25zOyAk aWR4KyspIHsNCgkJJGZsZCA9ICgkaWR4IDwgJG51bUZsZHMpID8gJGZpZWxkc1skaWR4XSA6 ICRmaWVsZHNbMF07IC8vIEFsbG93IHNob3J0LWNpcmN1aXQNCgkJJGZsZFBhcnRzID0gZXhw bG9kZSgkbW9kX2RlbGltLCAkZmxkKTsNCgkJJHZhbCA9ICgkaWR4IDwgJG51bVZhbHMpID8g JHZhbHNbJGlkeF0gOiAnJzsNCgkJJHZhbExpc3QgPSBleHBsb2RlKCRsaXN0X2RlbGltLCAk dmFsKTsNCgkJJHZhbFJlcCA9IGFycmF5KCk7DQoJCWZvcmVhY2ggKCR2YWxMaXN0IGFzICRr ZHggPT4gJHRoZXZhbCkgew0KCQkJJHZhbFJlcFska2R4XSA9IGV4cGxvZGUoJG1vZF9kZWxp bSwgJHRoZXZhbCk7DQoJCX0NCg0KCQkkb3AgPSAoJGlkeCA8ICRudW1PcHMgJiYgJG9wc1sk aWR4XSAhPSAnJykgPyAkb3BzWyRpZHhdIDogKCgkZmxkUGFydHNbMF09PSJwYXJlbnQiKSA/ ICJjb250YWlucyIgOiAiZXEiKTsNCgkJJG9wUGFydHMgPSBleHBsb2RlKCRtb2RfZGVsaW0s ICRvcCk7DQoJCSRvcCA9IChhcnJheV9rZXlfZXhpc3RzKCRvcFBhcnRzWzBdLCAkYWxsT3Bz KSkgPyAkb3BQYXJ0c1swXSA6ICJlcSI7DQoJCSRjYXN0ID0gKChjb3VudCgkb3BQYXJ0cykg PT0gMikgJiYgKCRvcFBhcnRzWzFdID09PSAiTlVNIikgJiYgKGluX2xpc3QoJG9wLCAkbnVt ZXJpY09wcykpKSA/ICcoaW50KScgOiAnJzsNCgkJJGxlbmd0aCA9ICgoY291bnQoJG9wUGFy dHMpID09IDIpICYmICgkb3BQYXJ0c1sxXSA9PT0gIkxFTiIpICYmIChpbl9saXN0KCRvcCwg JG51bWVyaWNPcHMpKSkgPyAnc3RybGVuKEZJRUxEKScgOiAnJzsNCgkJJGtpbGxTcGFjZXMg PSAoKGNvdW50KCRvcFBhcnRzKSA9PSAyKSAmJiAoJG9wUGFydHNbMV0gPT09ICJOT1NQQUNF IikgJiYgKGluX2xpc3QoJG9wLCAkc3BhY2VPcHMpKSkgPyB0cnVlIDogZmFsc2U7DQoJCSRz dHJpcEZsZCA9ICgoY291bnQoJGZsZFBhcnRzKSA+IDEpICYmIChpbl9hcnJheSgiTk9UQUdT IiwgJGZsZFBhcnRzKSkpID8gdHJ1ZSA6IGZhbHNlOw0KCQkkdHJpbUZsZCA9ICgoY291bnQo JGZsZFBhcnRzKSA+IDEpICYmIChpbl9hcnJheSgiVFJJTSIsICRmbGRQYXJ0cykpKSA/IHRy dWUgOiBmYWxzZTsNCgkJJGNhc2Vfc2Vuc2l0aXZlID0gKGluX2xpc3QoJG9wLCAkY2FzZU9w cykpID8gMSA6ICRjYXNlX3NlbnNpdGl2ZTsNCgkJJHBhdCA9ICgkaWR4IDwgJG51bUZpbHRl cnMpID8gJGZpbHRlclskaWR4XSA6ICgoJGZpbHRlcikgPyAkZmlsdGVyWzBdIDogJycpOw0K CQkkcmVwID0gKCRpZHggPCAkbnVtUmVwbGFjZSkgPyAkcmVwbGFjZVskaWR4XSA6ICgoJHJl cGxhY2UpID8gJHJlcGxhY2VbMF0gOiAnJyk7DQoJCWlmICgkZGVidWcpIHsNCgkJCWVjaG8g J1RFU1QgJy4oJGlkeCsxKS5uOw0KCQkJZG1wKCRmbGRQYXJ0cywgJG9wUGFydHMsICR2YWxS ZXApOw0KCQl9DQoJCS8vIEdldCB0aGUgb3BlcmF0b3IgcmVwbGFjZW1lbnQgY29kZQ0KCQkk ZXhjbHVkZSA9IGRvX2xpc3QoJGFsbE9wc1skb3BdWzFdKTsNCgkJJG9wID0gJGFsbE9wc1sk b3BdWzBdOw0KDQoJCS8vIEFzIGxvbmcgYXMgdGhlIGN1cnJlbnQgb3BlcmF0b3IgYWxsb3dz IHRoaXMgZmllbGQuLi4NCgkJaWYgKCFpbl9hcnJheSgkZmxkUGFydHNbMF0sICRleGNsdWRl KSkgew0KCQkJLy8gTWFrZSB1cCB0aGUgdGVzdCBmaWVsZCB2YXJpYWJsZQ0KCQkJaWYgKGlz c2V0KCR0aGlzZmlsZVskZmxkUGFydHNbMF1dKSkgew0KCQkJCSRyZmxkID0gJGZsZFBhcnRz WzBdOw0KCQkJCSRmbGQgPSAnJHRoaXNmaWxlWyInLiRyZmxkLiciXSc7DQoJCQl9IGVsc2Ug aWYgKGlzc2V0KCR0aGlzbGlua1skZmxkUGFydHNbMF1dKSkgew0KCQkJCSRyZmxkID0gJGZs ZFBhcnRzWzBdOw0KCQkJCSRmbGQgPSAnJHRoaXNsaW5rWyInLiRyZmxkLiciXSc7DQoJCQl9 IGVsc2UgaWYgKGlzc2V0KCR0aGlzaW1hZ2VbJGZsZFBhcnRzWzBdXSkpIHsNCgkJCQkkcmZs ZCA9ICRmbGRQYXJ0c1swXTsNCgkJCQkkZmxkID0gJyR0aGlzaW1hZ2VbIicuJHJmbGQuJyJd JzsNCgkJCX0gZWxzZSBpZiAoYXJyYXlfa2V5X2V4aXN0cygkZmxkUGFydHNbMF0sICRhbGxQ dHh0KSkgew0KCQkJCSRyZmxkID0gJGZsZFBhcnRzWzBdOw0KCQkJCSRmbGQgPSAkYWxsUHR4 dFskcmZsZF07DQoJCQl9IGVsc2UgaWYgKCRmbGRQYXJ0c1swXSA9PSAicGFyZW50Iikgew0K CQkJCSR0cmVlRmllbGQgPSAnbmFtZSc7DQoJCQkJJGxldmVsID0gJyc7DQoJCQkJZm9yZWFj aCAoJGZsZFBhcnRzIGFzICRwYXJ0KSB7DQoJCQkJCWlmICgkcGFydCA9PSAicGFyZW50Iikg ew0KCQkJCQkJJHRoZUNhdCA9ICgkdGhpc2ZpbGUpID8gJHRoaXNmaWxlWydjYXRlZ29yeSdd IDogKCgkdGhpc2xpbmspID8gJHRoaXNsaW5rWydjYXRlZ29yeSddIDogKCgkdGhpc2ltYWdl KSA/ICR0aGlzaW1hZ2VbJ2NhdGVnb3J5J10gOiAkcHJldGV4dFsnYyddKSk7DQoJCQkJCX0g ZWxzZSBpZiAoc3RycG9zKCRwYXJ0LCAiQ0FUIikgPT09IDApIHsNCgkJCQkJCSR0aGVDYXQg PSAkdGhpc2FydGljbGVbImNhdGVnb3J5Ii5zdWJzdHIoJHBhcnQsIDMpXTsNCgkJCQkJfSBl bHNlIGlmIChzdHJwb3MoJHBhcnQsICJMVkwiKSA9PT0gMCkgew0KCQkJCQkJJGxldmVsID0g c3Vic3RyKCRwYXJ0LCAzKTsNCgkJCQkJfSBlbHNlIGlmIChzdHJwb3MoJHBhcnQsICJUVEwi KSA9PT0gMCkgew0KCQkJCQkJJHRyZWVGaWVsZCA9ICd0aXRsZSc7DQoJCQkJCX0gZWxzZSBp ZiAoc3RycG9zKCRwYXJ0LCAiS0lEUyIpID09PSAwKSB7DQoJCQkJCQkkdHJlZUZpZWxkID0g J2NoaWxkcmVuJzsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCSR0cmVlID0gZ2V0VHJlZVBhdGgo ZG9TbGFzaCgkdGhlQ2F0KSwgJHR5cGUpOw0KCQkJCWlmICgkZGVidWcgJiYgJHRyZWUpIHsN CgkJCQkJZWNobyAiQ0FURUdPUlkgVFJFRToiOw0KCQkJCQlkbXAoJHRyZWUpOw0KCQkJCX0N CgkJCQkkaXRlbXMgPSBhcnJheSgpOw0KCQkJCWZvcmVhY2ggKCR0cmVlIGFzICRsZWFmKSB7 DQoJCQkJCWlmICgkbGVhZlsnbmFtZSddID09ICJyb290IiB8fCAkbGVhZlsnbmFtZSddID09 ICR0aGVDYXQpIHsNCgkJCQkJCWNvbnRpbnVlOw0KCQkJCQl9IGVsc2UgaWYgKCRsZXZlbCA9 PSAnJyB8fCAkbGV2ZWwgPT0gJGxlYWZbJ2xldmVsJ10pIHsNCgkJCQkJCSRpdGVtc1tdID0g JGxlYWZbJHRyZWVGaWVsZF07DQoJCQkJCX0NCgkJCQl9DQoJCQkJJHBhcmVudENhdHMgPSBp bXBsb2RlKCIgIiwgJGl0ZW1zKTsNCgkJCQkkcmZsZCA9IHNhbml0aXplRm9yVXJsKCRwYXJl bnRDYXRzKTsNCgkJCQlpZiAoJGRlYnVnICYmICRwYXJlbnRDYXRzKSB7DQoJCQkJCWVjaG8g IisrIFBBUkVOVCBJTkZPICsrIjsNCgkJCQkJZG1wKCRwYXJlbnRDYXRzKTsNCgkJCQl9DQoJ CQkJJGZsZCA9ICckcGFyZW50Q2F0cyc7DQoJCQl9IGVsc2UgaWYgKCRmbGRQYXJ0c1swXSA9 PSAidHhwdmFyIikgew0KCQkJCWlmIChjb3VudCgkZmxkUGFydHMpID4gMSkgew0KCQkJCQkk cmZsZCA9ICRmbGRQYXJ0c1sxXTsNCgkJCQkJJGZsZCA9ICckdmFyaWFibGVbIicuJHJmbGQu JyJdJzsNCgkJCQl9DQoJCQl9IGVsc2UgaWYgKCRmbGRQYXJ0c1swXSA9PSAidXJsdmFyIikg ew0KCQkJCWlmIChjb3VudCgkZmxkUGFydHMpID4gMSkgew0KCQkJCQkkcmZsZCA9ICRmbGRQ YXJ0c1sxXTsNCgkJCQkJJGZsZCA9ICckX0dFVFsiJy4kcmZsZC4nIl0nOw0KCQkJCX0NCgkJ CX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09ICJwb3N0dmFyIikgew0KCQkJCWlmIChjb3Vu dCgkZmxkUGFydHMpID4gMSkgew0KCQkJCQkkcmZsZCA9ICRmbGRQYXJ0c1sxXTsNCgkJCQkJ JGZsZCA9ICckX1BPU1RbIicuJHJmbGQuJyJdJzsNCgkJCQl9DQoJCQl9IGVsc2UgaWYgKCRm bGRQYXJ0c1swXSA9PSAic3ZydmFyIikgew0KCQkJCWlmIChjb3VudCgkZmxkUGFydHMpID4g MSkgew0KCQkJCQkkcmZsZCA9ICRmbGRQYXJ0c1sxXTsNCgkJCQkJJGZsZCA9ICckX1NFUlZF UlsiJy4kcmZsZC4nIl0nOw0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09 ICJwaHB2YXIiKSB7DQoJCQkJaWYgKGNvdW50KCRmbGRQYXJ0cykgPiAxKSB7DQoJCQkJCSRy ZmxkID0gJGZsZFBhcnRzWzFdOw0KCQkJCQkkZmxkID0gJyRHTE9CQUxTWyInLiRyZmxkLici XSc7DQoJCQkJfQ0KCQkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2FydGljbGVbJGZsZFBhcnRz WzBdXSkpIHsNCgkJCQkkcmZsZCA9IHN0cnRvbG93ZXIoJGZsZFBhcnRzWzBdKTsNCgkJCQkk ZmxkID0gJyR0aGlzYXJ0aWNsZVsiJy4kcmZsZC4nIl0nOw0KCQkJfSBlbHNlIGlmICgkZmxk UGFydHNbMF0gPT0gIk5VTEwiKSB7DQoJCQkJJHNtZF9pZl92YXIgPSAnJzsNCgkJCQkkZmxk ID0gJyRzbWRfaWZfdmFyJzsNCgkJCQkkcmZsZCA9ICJOVUxMIjsNCgkJCX0gZWxzZSB7DQoJ CQkJJHNtZF9pZl92YXIgPSAkZmxkUGFydHNbMF07DQoJCQkJJGZsZCA9ICckc21kX2lmX3Zh cic7DQoJCQkJJHJmbGQgPSAiZmllbGQiLigkaWR4KjErMSk7DQoJCQl9DQoJCQkkcmxmbGQg PSAic21kX2lmX2xlbl8iLiRyZmxkOw0KCQkJJHJmbGQgPSAic21kX2lmXyIuJHJmbGQ7DQoN CgkJCS8vIFRha2UgYSBjb3B5IG9mICRmbGQgdG8gdXNlIGluIGFueSBpc3NldCgpIHJlcXVl c3RzDQoJCQkkZmxkQ2xlYW4gPSAkZmxkOw0KDQoJCQkvLyBBcHBseSB1c2VyLWRlZmluZWQg ZmllbGQgZmlsdGVycw0KCQkJaWYgKCRraWxsU3BhY2VzKSB7DQoJCQkJJGZsZCA9ICdwcmVn X3JlcGxhY2UoIi9ccysvIiwiIiwnLiRmbGQuJyknOw0KCQkJfQ0KCQkJaWYgKCRzdHJpcEZs ZCkgew0KCQkJCSRmbGQgPSAndHJpbShzdHJpcF90YWdzKCcuJGZsZC4nKSknOw0KCQkJfQ0K CQkJaWYgKCR0cmltRmxkKSB7DQoJCQkJJGZsZCA9ICd0cmltKCcuJGZsZC4nKSc7DQoJCQl9 DQoJCQkkZG9fZmZpbHQgPSAoJHBhdCAmJiBpbl9hcnJheSgnZmllbGQnLCAkZmlsdGVyX29u KSAmJiAoaW5fYXJyYXkoJGZsZFBhcnRzWzBdLCAkZmlsdGVyX3R5cGUpIHx8IGluX2FycmF5 KCdhbGwnLCAkZmlsdGVyX3R5cGUpKSApID8gdHJ1ZSA6IGZhbHNlOw0KDQoJCQkvLyBGaW5k IHRoZSByZWFsIHZhbHVlIHRvIGNvbXBhcmUgYWdhaW5zdCAobWF5IGJlIGFub3RoZXIgZmll bGQpDQoJCQkkdmFsY250ID0gMTsNCgkJCSR2ZmxkcyA9IGFycmF5KCk7DQoJCQkkY29yZV92 ZmxkID0gInZhbCIuKCgkaWR4KjEpKzEpOw0KDQoJCQlmb3JlYWNoICgkdmFsUmVwIGFzICRq ZHggPT4gJHZhbFBhcnRzKSB7DQoJCQkJJHN0cmlwVmFsID0gKChjb3VudCgkdmFsUGFydHMp ID4gMSkgJiYgKGluX2FycmF5KCJOT1RBR1MiLCAkdmFsUGFydHMpKSkgPyB0cnVlIDogZmFs c2U7DQoJCQkJJHRyaW1WYWwgPSAoKGNvdW50KCR2YWxQYXJ0cykgPiAxKSAmJiAoaW5fYXJy YXkoIlRSSU0iLCAkdmFsUGFydHMpKSkgPyB0cnVlIDogZmFsc2U7DQoJCQkJaWYgKCR2YWxQ YXJ0c1swXSA9PSAidXJsdmFyIikgew0KCQkJCQlpZiAoY291bnQoJHZhbFBhcnRzKSA+IDEp IHsNCgkJCQkJCSR2ZmxkID0gJHZhbFBhcnRzWzFdOw0KCQkJCQkJJHZhbCA9IChpc3NldCgk X0dFVFskdmZsZF0pICYmICRfR0VUWyR2ZmxkXSAhPSAiIikgPyAnJF9HRVRbIicuJHZmbGQu JyJdJyA6IGRvUXVvdGUoc3RyX3JlcGxhY2UoJyInLCAnXCInLCAkdmZsZCkpOw0KCQkJCQl9 DQoJCQkJfSBlbHNlIGlmICgkdmFsUGFydHNbMF0gPT0gInBvc3R2YXIiKSB7DQoJCQkJCWlm IChjb3VudCgkdmFsUGFydHMpID4gMSkgew0KCQkJCQkJJHZmbGQgPSAkdmFsUGFydHNbMV07 DQoJCQkJCQkkdmFsID0gKGlzc2V0KCRfUE9TVFskdmZsZF0pICYmICRfUE9TVFskdmZsZF0g IT0gIiIpID8gJyRfUE9TVFsiJy4kdmZsZC4nIl0nIDogZG9RdW90ZShzdHJfcmVwbGFjZSgn IicsICdcIicsICR2ZmxkKSk7DQoJCQkJCX0NCgkJCQl9IGVsc2UgaWYgKCR2YWxQYXJ0c1sw XSA9PSAic3ZydmFyIikgew0KCQkJCQlpZiAoY291bnQoJHZhbFBhcnRzKSA+IDEpIHsNCgkJ CQkJCSR2ZmxkID0gJHZhbFBhcnRzWzFdOw0KCQkJCQkJJHZhbCA9IChpc3NldCgkX1NFUlZF UlskdmZsZF0pICYmICRfU0VSVkVSWyR2ZmxkXSAhPSAiIikgPyAnJF9TRVJWRVJbIicuJHZm bGQuJyJdJyA6IGRvUXVvdGUoc3RyX3JlcGxhY2UoJyInLCAnXCInLCAkdmZsZCkpOw0KCQkJ CQl9DQoJCQkJfSBlbHNlIGlmICgkdmFsUGFydHNbMF0gPT0gInR4cHZhciIpIHsNCgkJCQkJ aWYgKGNvdW50KCR2YWxQYXJ0cykgPiAxKSB7DQoJCQkJCQkkdmZsZCA9ICR2YWxQYXJ0c1sx XTsNCgkJCQkJCSR2YWwgPSAoaXNzZXQoJHZhcmlhYmxlWyR2ZmxkXSkgJiYgJHZhcmlhYmxl WyR2ZmxkXSAhPSAiIikgPyAnJHZhcmlhYmxlWyInLiR2ZmxkLiciXScgOiBkb1F1b3RlKHN0 cl9yZXBsYWNlKCciJywgJ1wiJywgJHZmbGQpKTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSBpZiAo JHZhbFBhcnRzWzBdID09ICJwaHB2YXIiKSB7DQoJCQkJCWlmIChjb3VudCgkdmFsUGFydHMp ID4gMSkgew0KCQkJCQkJJHZmbGQgPSAkdmFsUGFydHNbMV07DQoJCQkJCQkkdmFsID0gKGlz c2V0KCRHTE9CQUxTWyR2ZmxkXSkgJiYgJEdMT0JBTFNbJHZmbGRdICE9ICIiKSA/ICckR0xP QkFMU1siJy4kdmZsZC4nIl0nIDogZG9RdW90ZShzdHJfcmVwbGFjZSgnIicsICdcIicsICR2 ZmxkKSk7DQoJCQkJCX0NCgkJCQl9IGVsc2UgaWYgKHN0cnBvcygkdmFsUGFydHNbMF0sICI/ IikgPT09IDApIHsNCgkJCQkJJHZhbFBhcnRzWzBdID0gc3Vic3RyKHN0cnRvbG93ZXIoJHZh bFBhcnRzWzBdKSwgMSk7DQoJCQkJCSR2ZmxkID0gJHZhbFBhcnRzWzBdOw0KCQkJCQlpZiAo aXNzZXQoJHRoaXNmaWxlWyR2ZmxkXSkgJiYgJHRoaXNmaWxlWyR2ZmxkXSAhPSAiIikgew0K CQkJCQkJJHZhbCA9ICckdGhpc2ZpbGVbIicuJHZmbGQuJyJdJzsNCgkJCQkJfSBlbHNlIGlm IChpc3NldCgkdGhpc2xpbmtbJHZmbGRdKSAmJiAkdGhpc2xpbmtbJHZmbGRdICE9ICIiKSB7 DQoJCQkJCQkkdmFsID0gJyR0aGlzbGlua1siJy4kdmZsZC4nIl0nOw0KCQkJCQl9IGVsc2Ug aWYgKGlzc2V0KCR0aGlzaW1hZ2VbJHZmbGRdKSAmJiAkdGhpc2ltYWdlWyR2ZmxkXSAhPSAi Iikgew0KCQkJCQkJJHZhbCA9ICckdGhpc2ltYWdlWyInLiR2ZmxkLiciXSc7DQoJCQkJCX0g ZWxzZSBpZiAoYXJyYXlfa2V5X2V4aXN0cygkdmZsZCwgJGFsbFB0eHQpICYmICRhbGxQdHh0 WyR2ZmxkXSAhPSAiIikgew0KCQkJCQkJJHZhbCA9ICRhbGxQdHh0WyR2ZmxkXTsNCgkJCQkJ fSBlbHNlIGlmIChpc3NldCgkdGhpc2FydGljbGVbJHZmbGRdKSAmJiAkdGhpc2FydGljbGVb JHZmbGRdICE9ICIiKSB7DQoJCQkJCQkkdmFsID0gJyR0aGlzYXJ0aWNsZVsiJy4kdmZsZC4n Il0nOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJHZhbCA9IGRvUXVvdGUoc3RyX3JlcGxhY2Uo JyInLCAnXCInLCAkdmZsZCkpOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHZmbGQg PSAkY29yZV92ZmxkLidfJy4kdmFsY250Ow0KCQkJCQkkdmFsID0gZG9RdW90ZShzdHJfcmVw bGFjZSgnIicsICdcIicsICR2YWxQYXJ0c1swXSkpOw0KCQkJCX0NCg0KCQkJCS8vIEFwcGx5 IHVzZXItZGVmaW5lZCB2YWx1ZSBmaWx0ZXJzDQoJCQkJaWYgKCRzdHJpcFZhbCkgew0KCQkJ CQkkdmFsID0gJ3RyaW0oc3RyaXBfdGFncygnLiR2YWwuJykpJzsNCgkJCQl9DQoJCQkJaWYg KCR0cmltVmFsKSB7DQoJCQkJCSR2YWwgPSAndHJpbSgnLiR2YWwuJyknOw0KCQkJCX0NCgkJ CQkkZG9fdmZpbHQgPSAoJHBhdCAmJiBpbl9hcnJheSgndmFsdWUnLCAkZmlsdGVyX29uKSAm JiAoaW5fYXJyYXkoJHZhbFBhcnRzWzBdLCAkZmlsdGVyX3R5cGUpIHx8IGluX2FycmF5KCdh bGwnLCAkZmlsdGVyX3R5cGUpKSApID8gdHJ1ZSA6IGZhbHNlOw0KDQoJCQkJLy8gUmVwbGFj ZSB0aGUgc3RyaW5nIHBhcnRzIGJ5IGV2YWx1YXRpbmcgYW55IHZhcmlhYmxlcy4uLg0KCQkJ CSRmaWx0X2ZsZCA9ICgkZG9fZmZpbHQpID8gInByZWdfcmVwbGFjZSgnJHBhdCcsICckcmVw JywgJGZsZCkiIDogJGZsZDsNCgkJCQkkZmlsdF92YWwgPSAoJGRvX3ZmaWx0KSA/ICJwcmVn X3JlcGxhY2UoJyRwYXQnLCAnJHJlcCcsICR2YWwpIiA6ICR2YWw7DQoJCQkJZXZhbCAoIlwk dmFsUmVwWyRqZHhdID0gIi4kZmlsdF92YWwuIjsiKTsNCg0KCQkJCS8vIE9ubHkgYWRkIHN1 Yi12YWx1ZXMgdG8gdGhlIHJlcGxhY2VtZW50cyBhcnJheSBpZiB0aGVyZSdzIG1vcmUgdGhh biBvbmUgc3ViLXZhbHVlDQoJCQkJaWYgKGNvdW50KCR2YWxSZXApID4gMSkgew0KCQkJCQkk dmZsZHNbInNtZF9pZl8iLiR2ZmxkXSA9ICR2YWxSZXBbJGpkeF07DQoJCQkJCSR2Zmxkc1si c21kX2lmX2xlbl8iLiR2ZmxkXSA9IHN0cmxlbigkdmFsUmVwWyRqZHhdKTsNCgkJCQl9DQoN CgkJCQkkdmFsY250Kys7DQoJCQl9DQoNCgkJCSRqb2luZWRWYWxzID0gam9pbigkbGlzdF9k ZWxpbSwgJHZhbFJlcCk7DQoJCQkkc21kX3ByZWZpbHRlciA9IGRvUXVvdGUoJGpvaW5lZFZh bHMpOw0KDQoJCQkvLyBBZGQgdGhlIGNvbWJpbmVkIG9wZXJhdG9yIGZvciBiYWNrd2FyZHMg Y29tcGF0aWJpbGl0eSB3aXRoIHBsdWdpbiB2MC44eA0KCQkJJHZmbGRzWyJzbWRfaWZfIi4k Y29yZV92ZmxkXSA9ICRqb2luZWRWYWxzOw0KCQkJJHZmbGRzWyJzbWRfaWZfbGVuXyIuJGNv cmVfdmZsZF0gPSBzdHJsZW4oJGpvaW5lZFZhbHMpOw0KDQoJCQkkY21kID0gc3RyX3JlcGxh Y2UoIkNBU1QiLCAkY2FzdCwgJG9wKTsNCgkJCSRjbWQgPSAoJGxlbmd0aCkgPyBzdHJfcmVw bGFjZSgiRklFTEQiLCAkbGVuZ3RoLCAkY21kKSA6ICRjbWQ7DQoJCQkkY21kID0gc3RyX3Jl cGxhY2UoIkZJRUxEIiwgKCgkY2FzZV9zZW5zaXRpdmUpID8gJGZpbHRfZmxkIDogJ3N0cnRv bG93ZXIoJy4kZmlsdF9mbGQuJyknKSwgJGNtZCk7DQoJCQkkY21kID0gc3RyX3JlcGxhY2Uo IlZBUk5BTUUiLCAkZmxkQ2xlYW4sICRjbWQpOw0KCQkJJGNtZCA9IHN0cl9yZXBsYWNlKCJW QUxVRSIsICgoJGNhc2Vfc2Vuc2l0aXZlKSA/ICdWQUxVRScgOiAnc3RydG9sb3dlcihWQUxV RSknKSwgJGNtZCk7DQoNCgkJCS8vIFZhbHVlIHJlcGxhY2VtZW50cyBoYXZlIGFscmVhZHkg YmVlbiBydW4gdGhyb3VnaCBldmlsKCkgc28gdGhleSBjYW4gYmUgYXNzaWduZWQgZGlyZWN0 bHkNCgkJCWZvcmVhY2ggKCR2ZmxkcyBhcyAkdmFsaXQgPT4gJHZhbHZhbCkgew0KCQkJCSRy ZXBsYWNlbWVudHNbJ3snLiR2YWxpdC4nfSddID0gJHZhbHZhbDsNCgkJCX0NCg0KCQkJLy8g RmllbGQgcmVwbGFjZW1lbnRzIG5lZWQgc29tZSBldmFsKCkgYWN0aW9uLi4uDQoJCQkkY21k ID0gIkBcJHJlcGxhY2VtZW50c1sneyIuJHJmbGQuIn0nXSA9ICIuJGZpbHRfZmxkLiI7IFxu QFwkcmVwbGFjZW1lbnRzWyd7Ii4kcmxmbGQuIn0nXSA9IHN0cmxlbigiLiRmaWx0X2ZsZC4i KTsgXG5cJG91dFsiLiRpZHguIl0gPSAoIi5zdHJfcmVwbGFjZSgiVkFMVUUiLCAoKCRzbWRf cHJlZmlsdGVyPT09IicnIiAmJiBzdHJwb3MoJG9wLCAic3RycG9zIikgIT09IGZhbHNlKSA/ ICInICciIDogJHNtZF9wcmVmaWx0ZXIpLCAkY21kKS4iKSA/ICd0cnVlJyA6ICdmYWxzZSc7 IjsNCgkJCWlmICgkZGVidWcpIHsNCgkJCQlkbXAoJGNtZCk7DQoJCQl9DQoJCQkvLyAuLi4g YW5kIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uDQoJCQlldmFsKCRjbWQpOw0KCQl9DQoJfQ0K CWlmICgkZGVidWcpIHsNCgkJZWNobyAiUkVTVUxUOiI7DQoJCWRtcCgkb3V0KTsNCgkJZWNo byAiUkVQTEFDRU1FTlRTOiI7DQoJCWRtcCgkcmVwbGFjZW1lbnRzKTsNCgl9DQoJaWYgKCRk ZWJ1ZyA+IDIpIHsNCgkJZWNobyAiUFJFVEVYVDoiOw0KCQlkbXAoJHByZXRleHQpOw0KCQll Y2hvICJUSElTIEFSVElDTEU6IjsNCgkJZG1wKCR0aGlzYXJ0aWNsZSk7DQoJCWVjaG8gIlRI SVMgRklMRToiOw0KCQlkbXAoJHRoaXNmaWxlKTsNCgkJZWNobyAiVEhJUyBMSU5LOiI7DQoJ CWRtcCgkdGhpc2xpbmspOw0KCQllY2hvICJUSElTIElNQUdFOiI7DQoJCWRtcCgkdGhpc2lt YWdlKTsNCgl9DQoJLy8gQ2hlY2sgbG9naWMNCgkkcmVzdWx0ID0gKCRvdXQpID8gdHJ1ZSA6 IGZhbHNlOw0KCWlmIChzdHJ0b2xvd2VyKCRsb2dpYykgPT0gImFuZCIgJiYgaW5fYXJyYXko ImZhbHNlIiwgJG91dCkpIHsNCgkJJHJlc3VsdCA9IGZhbHNlOw0KCX0NCglpZiAoc3RydG9s b3dlcigkbG9naWMpID09ICJvciIgJiYgIWluX2FycmF5KCJ0cnVlIiwgJG91dCkpIHsNCgkJ JHJlc3VsdCA9IGZhbHNlOw0KCX0NCg0KCXJldHVybiBwYXJzZShFdmFsRWxzZShzdHJ0cigk dGhpbmcsICRyZXBsYWNlbWVudHMpLCAkcmVzdWx0KSk7DQp9IjtzOjQ6InR5cGUiO3M6MToi MCI7czo1OiJmbGFncyI7czoxOiIwIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6MzoibWQ1Ijtz OjMyOiIzOGNiMzAwYmQ0ZGRjNjdiNzMxY2JkZGNlMjZiY2ZhNiI7fQ==