PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkhvbGQgdGhlIERhdGVzIGZvciBFY2xpcHNlQ29uIDIwMDciOwoJJHBhZ2VLZXl3b3Jkcwk9ICJFY2xpcHNlQ29uLCAyMDA3IjsKCSRwYWdlQXV0aG9yCQk9ICJJYW4gU2tlcnJldHQiOwoJCgkjIEFkZCBwYWdlLXNwZWNpZmljIE5hdiBiYXJzIGhlcmUKCSMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuaykKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJNeSBMaW5rIiwgIm15cGFnZS5waHAiLCAiX3NlbGYiKTsKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJHb29nbGUiLCAiaHR0cDovL3d3dy5nb29nbGUuY29tLyIsICJfYmxhbmsiKTsKCgkjIEVuZDogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncwoJIwoJCgkjIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQkKCSRodG1sID0gPDw8RU9IVE1MCjxkaXYgaWQ9Im1haW5jb250ZW50Ij4KCTxkaXYgaWQ9Im1pZGNvbHVtbiI+CgkJPGgxPiRwYWdlVGl0bGU8L2gxPgoJCTxoMj5QcmVzcyBSZWxlYXNlPC9oMj4KCQk8c3Ryb25nPkZvdXJ0aCBBbm51YWwgQ29tbXVuaXR5IENvbmZlcmVuY2UgQW5ub3VuY2VzIEtleW5vdGVzIGFuZCBUdXRvcmlhbHM7IE5ldyBPU0dpIERldmVsb3BlciBDb25mZXJlbmNlIENvLWxvY2F0ZWQ8L3N0cm9uZz48YnIvPgoJCTxwPjxzdHJvbmc+T1RUQVdBLU5vdmVtYmVyIDI4LCAyMDA2LSA8L3N0cm9uZz5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGFubm91bmNlZCB0b2RheSB0aGUga2V5bm90ZSBzcGVha2VycyBmb3IgaXRzIGZvdXJ0aCBhbm51YWwgY29tbXVuaXR5IGNvbmZlcmVuY2UsIEVjbGlwc2VDb24gMjAwNy4gVGhlIGNvbmZlcmVuY2UgYnJpbmdzIHRvZ2V0aGVyIHRoZSBFY2xpcHNlIGNvbW11bml0eSB0byBzaGFyZSBhbmQgbGVhcm4gbmV3IHRlY2huaXF1ZXMsIGlkZWFzIGFuZCB0ZWNobm9sb2dpZXMsIGFzIHdlbGwgYXMgcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGF0ZXN0IGRldmVsb3BtZW50cyBhbmQgZnV0dXJlIHBsYW5zIG9mIHRoZSBFY2xpcHNlIHByb2plY3RzLiBUaGUgY29uZmVyZW5jZSB3aWxsIGJlIGhlbGQgTWFyY2ggNS04LCAyMDA3IGF0IHRoZSBTYW50YSBDbGFyYSBDb252ZW50aW9uIENlbnRlci4gCgkJPC9wPgoJCTxwPlRoZSBrZXlub3RlIHNwZWFrZXJzIGZvciBFY2xpcHNlQ29uIDIwMDcgd2lsbCBmZWF0dXJlIHdlbGwga25vd24gaW5kdXN0cnkgc3BlYWtlcnMgaW5jbHVkaW5nIFNjb3R0IEFkYW1zLCBjcmVhdG9yIG9mIHRoZSBjb21pYyBzdHJpcCBEaWxiZXJ0OyBSb2JlcnQgkXIwbWySIExlZmtvd2l0eiwgYW4gZW50ZXJwcmlzZSBhcmNoaXRlY3QgYW5kIGZyZXF1ZW50IHNwZWFrZXIgb24gb3BlbiBzb3VyY2Ugc29mdHdhcmU7IGFuZCBEciBIZXJiZXJ0IFRob21wc29uLCBleHBlcnQgb24gYXBwbGljYXRpb24gc2VjdXJpdHkgYW5kIGNoaWVmIHNlY3VyaXR5IHN0cmF0ZWdpc3QgZm9yIFNlY3VyaXR5IElubm92YXRpb24uPC9wPgoJCQoJCTxwPpNFY2xpcHNlQ29uIGlzIHRoZSBwcmVtaWVyIGdhdGhlcmluZyBvZiB0aGUgeWVhciBmb3IgdGhlIEVjbGlwc2UgY29tbXVuaXR5LJQgc2FpZCBNaWtlIE1pbGlua292aWNoLCBleGVjdXRpdmUgZGlyZWN0b3Igb2YgdGhlIEVjbGlwc2UgRm91bmRhdGlvbi4gk0l0IGlzIGEgZ3JlYXQgb3Bwb3J0dW5pdHkgZm9yIHRoZSBFY2xpcHNlIHByb2plY3RzLCB1c2VycyBhbmQgbWVtYmVycyB0byBtZWV0IGFuZCBuZXR3b3JrLpQ8L3A+CgoJCTxwPlJlZ2lzdHJhdGlvbiBmb3IgRWNsaXBzZUNvbiAyMDA3IGlzIG5vdyBvcGVuLiBUaGUgY29uZmVyZW5jZSB3aWxsIGZlYXR1cmUgNTAgaW4tZGVwdGggdHV0b3JpYWxzLCA2NSBsb25nLXRhbGsgc2Vzc2lvbnMsIDEwMCBzaG9ydC10YWxrIHNlc3Npb25zIGFuZCAxNiBwYW5lbHMuIFRoZSBjb25mZXJlbmNlIHR1dG9yaWFscyBoYXZlIGJlZW4gYW5ub3VuY2VkIGFuZCBhcmUgb3BlbiBmb3IgcmVnaXN0cmF0aW9uLjwvcD4KCQoJCTxwPkVjbGlwc2VDb24gMjAwNyBpcyBhbHNvIHBsZWFzZWQgdG8gaG9zdCB0aGUgT1NHaSBEZXZlbG9wZXIgQ29uZmVyZW5jZSBhcyBhIHRyYWNrIHdpdGhpbiB0aGUgRWNsaXBzZUNvbiBjb25mZXJlbmNlLiBUaGUgT1NHaSBzcGVjaWZpY2F0aW9ucyB1bmRlcmxpZSB0aGUgY29tcG9uZW50IG1vZGVsIHVzZWQgd2l0aGluIEVjbGlwc2UgYnV0IGlzIGFsc28gdXNlZCBpbiBlbWJlZGRlZCBkZXZpY2VzIGFuZCBhcHBsaWNhdGlvbiBzZXJ2ZXJzLiAgVGhlIEVjbGlwc2UgRXF1aW5veCBwcm9qZWN0IGlzIGFuIE9TR2kgZnJhbWV3b3JrIHRoYXQgZm9ybXMgdGhlIGNvcmUgdGVjaG5vbG9neSBmb3IgRWNsaXBzZSBhbmQgRWNsaXBzZSBSQ1AuICBBdHRlbmRlZXMgb2YgdGhlIE9TR2kgRGV2ZWxvcGVyIENvbmZlcmVuY2Ugd2lsbCBoYXZlIGZ1bGwgYWNjZXNzIHRvIGFsbCBvZiB0aGUgRWNsaXBzZUNvbiBzZXNzaW9ucyBhbmQgZXZlbnRzLjwvcD4KCgkJPHA+TWVtYmVycyBvZiB0aGUgcHJlc3MgYW5kIGFuYWx5c3QgY29tbXVuaXR5IGFyZSBhbHNvIGVuY291cmFnZWQgdG8gYXR0ZW5kIEVjbGlwc2VDb24gMjAwNy4gTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29uZmVyZW5jZSwgaW5jbHVkaW5nIGhvdyB0byByZWdpc3RlciwgY2FuIGJlIGZvdW5kIG9ubGluZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Vjb24ub3JnIj5odHRwOi8vd3d3LmVjbGlwc2Vjb24ub3JnPC9hPi4gPC9wPgoJCQoJCTxwPjxzdHJvbmc+QWJvdXQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbjwvc3Ryb25nPjxiciAvPgoJCUVjbGlwc2UgaXMgYW4gb3BlbiBzb3VyY2UgY29tbXVuaXR5IHdob3NlIHByb2plY3RzIGFyZSBmb2N1c2VkIG9uIHByb3ZpZGluZyBhbiBleHRlbnNpYmxlIGRldmVsb3BtZW50IHBsYXRmb3JtIGFuZCBhcHBsaWNhdGlvbiBmcmFtZXdvcmtzIGZvciBidWlsZGluZyBzb2Z0d2FyZS4gRWNsaXBzZSBwcm92aWRlcyBleHRlbnNpYmxlIHRvb2xzIGFuZCBmcmFtZXdvcmtzIHRoYXQgc3BhbiB0aGUgc29mdHdhcmUgZGV2ZWxvcG1lbnQgbGlmZWN5Y2xlLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgbW9kZWxpbmcsIGxhbmd1YWdlIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBmb3IgSmF2YSwgQy9DKysgYW5kIG90aGVycywgdGVzdGluZyBhbmQgcGVyZm9ybWFuY2UsIGJ1c2luZXNzIGludGVsbGlnZW5jZSwgcmljaCBjbGllbnQgYXBwbGljYXRpb25zIGFuZCBlbWJlZGRlZCBkZXZlbG9wbWVudC4gQSBsYXJnZSwgdmlicmFudCBlY29zeXN0ZW0gb2YgbWFqb3IgdGVjaG5vbG9neSB2ZW5kb3JzLCBpbm5vdmF0aXZlIHN0YXJ0LXVwcywgdW5pdmVyc2l0aWVzIGFuZCByZXNlYXJjaCBpbnN0aXR1dGlvbnMgYW5kIGluZGl2aWR1YWxzIGV4dGVuZCwgY29tcGxlbWVudCBhbmQgc3VwcG9ydCB0aGUgRWNsaXBzZSBQbGF0Zm9ybS48L3A+CgkJPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBhIG5vdC1mb3ItcHJvZml0LCBtZW1iZXIgc3VwcG9ydGVkIGNvcnBvcmF0aW9uIHRoYXQgaG9zdHMgdGhlIEVjbGlwc2UgcHJvamVjdHMuIEZ1bGwgZGV0YWlscyBvZiBFY2xpcHNlIGFuZCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGFyZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+d3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+CgkJCgkJPHA+PGNlbnRlcj48aT5BbGwgY29tcGFueS9wcm9kdWN0IG5hbWVzIGFuZCBzZXJ2aWNlIG1hcmtzIG1heSBiZSB0cmFkZW1hcmtzIG9yIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcyBvZiB0aGVpciByZXNwZWN0aXZlIGNvbXBhbmllcy48L2k+PC9jZW50ZXI+PC9wPgoJCQoJCTxiciAvPjxiciAvPjxzdHJvbmc+UHJlc3MgQ29udGFjdDwvc3Ryb25nPjxicj4JCgkJSm9obiBNb3JhbiBvciBBbm5lIEx1bmRyZWdhbjxici8+CgkJU2Nod2FydHogQ29tbXVuaWNhdGlvbnM8YnIvPgoJCTc4MS02ODQtMDc3MDxici8+CgkJZWNsaXBzZUBzY2h3YXJ0ei1wci5jb20gPGJyLz4KCQk8YnIgLz4KCQkKCQk8Y2VudGVyPiMgIyAjPC9jZW50ZXI+IAoJCTxiciAvPgoJCTxicj4KCQkJPGJyPgoJPC9kaXY+CjwvZGl2PgoKCgoKCgkJCgpFT0hUTUw7CgoKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4KCg==