PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIGh0bWwKICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sPgo8aGVhZD4KPCEtLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCiAqIAogKiBDb250cmlidXRvcnM6CiAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIC0tPgo8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgLz4KPHRpdGxlPkNyZWF0aW5nIGEgbmV3IGxpc3RlbmVyIGNsYXNzPC90aXRsZT4KPC9oZWFkPgo8Ym9keSBpZD0idHdsc3Rud3oiPjxhIG5hbWU9InR3bHN0bnd6Ij48IS0tIC0tPjwvYT4KCjxoMSBjbGFzcz0idG9waWN0aXRsZTEiPkNyZWF0aW5nIGEgbmV3IGxpc3RlbmVyIGNsYXNzPC9oMT4KPGRpdj48ZGl2IGNsYXNzPSJza2lwc3BhY2UiPiA8cD4gVGhlIExpZmUtY3ljbGUgTGlzdGVuZXIgd2l6YXJkIGVuYWJsZXMgeW91IHRvIGNyZWF0ZSBKYXZhmSBsaXN0ZW5lciBjbGFzc2VzIGZvciB2YXJpb3VzIEoyRUUgbGlzdGVuZXIgdHlwZXMgcmVsYXRlZCB0byBzZXJ2bGV0IGNvbnRleHQgYW5kIHNlc3Npb24KZXZlbnRzIGFuZCBhdHRyaWJ1dGVzLjwvcD4KPHA+SWYgdGhlIHByb2R1Y3QgeW91IGhhdmUgaW5zdGFsbGVkIGNvbnRhaW5zIHRoZSBMaWZlLWN5Y2xlIHdpemFyZCwgIHlvdSBjYW4gY3JlYXRlIGEgbGlzdGVuZXIgY2xhc3MgYnkgY29tcGxldGluZyB0aGUgZm9sbG93aW5nIHN0ZXBzOiA8L3A+CiA8L2Rpdj4KPG9sPjxsaSBjbGFzcz0ic2tpcHNwYWNlIj48c3Bhbj5PcGVuIHRoZSBMaWZlLWN5Y2xlIExpc3RlbmVyIHdpemFyZC4gVG8gZG8gdGhpcywgb3BlbiB0aGUgSjJFRSBwZXJzcGVjdGl2ZSBhbmQgZnJvbSB0aGUgUHJvamVjdCBFeHBsb3JlciwgZXhwYW5kIGEgcHJvamVjdCB0aGF0IHlvdSBoYXZlCmNyZWF0ZWQuIFRoZW4gcmlnaHQgY2xpY2sgb24gdGhlIDxiPkxpc3RlbmVyPC9iPiBpY29uLAphbmQgc2VsZWN0IDxzcGFuIGNsYXNzPSJtZW51Y2FzY2FkZSI+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV3PC9zcGFuPiAmZ3Q7IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkxpZmUtY3ljbGUgTGlzdGVuZXI8L3NwYW4+PC9zcGFuPiBmcm9tIHRoZSBwb3AtdXAgbWVudS48L3NwYW4+ICBUaGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+Q3JlYXRlCgpMaXN0ZW5lcjwvc3Bhbj4gd2l6YXJkIGFwcGVhcnMuPC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPlNwZWNpZnkgYSBsaXN0ZW5lciBjbGFzcy4gVG8gdXNlIGFuIGV4aXN0aW5nIGNsYXNzLCBzZWxlY3QgdGhlCgphcHByb3ByaWF0ZSBjaGVjayBib3ggYW5kIHRoZW4gdXNlIHRoZSA8Yj5Ccm93c2U8L2I+IGJ1dHRvbiB0byBsb2NhdGUgdGhlCgpjbGFzcy4gT3RoZXJ3aXNlLCBzZWxlY3QgPGI+TmV4dDwvYj4uPC9zcGFuPjwvbGk+CjxsaSBjbGFzcz0ic2tpcHNwYWNlIj48c3Bhbj5TdXBwbHkgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjogPC9zcGFuPiAgIDx1bD48bGk+VGhlIGZvbGRlciB3aGVyZSB0aGUgbGlzdGVuZXIgY2xhc3Mgd2lsbCBiZSBwbGFjZWQ8L2xpPgo8bGk+VGhlIEphdmEgcGFja2FnZSB0aGF0IHRoZSBjbGFzcyB3aWxsIGJlbG9uZyB0byAoaXQgaXMgYWRkZWQgaW50byBhIGRlZmF1bHQKCnBhY2thZ2UgaWYgeW91IGRvIG5vdCBzcGVjaWZ5IG9uZSk8L2xpPgo8bGk+VGhlIGNsYXNzIG5hbWUgb2YgdGhlIGxpc3RlbmVyLiA8ZGl2IGNsYXNzPSJub3RlIj48c3BhbiBjbGFzcz0ibm90ZXRpdGxlIj5Ob3RlOiA8L3NwYW4+WW91IHNob3VsZCBwbGFjZSB0aGUgbGlzdGVuZXIgaW4KCnRoZSBKYXZhIHNvdXJjZQoKZm9sZGVyLjwvZGl2Pgo8L2xpPgo8bGk+VGhlICBzdXBlcmNsYXNzIGZvciB0aGUgbGlzdGVuZXIgY2xhc3MuIEEgbGlzdGVuZXIgY3JlYXRlZCBieSB0aGlzIHdpemFyZAoKY2FuIGhhdmUgT2JqZWN0LCBvciBhbnkgY2xhc3MgdGhhdCBoYXMgT2JqZWN0IGluIGl0cyBoaWVyYXJjaHksIGFzIGl0cyBzdXBlcmNsYXNzLgoKQ2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QnJvd3NlPC9zcGFuPiB0byBjaG9vc2UgZnJvbSB0aGUgYXZhaWxhYmxlIHN1cGVyY2xhc3Nlcy48L2xpPgo8L3VsPgogPC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPkNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5leHQ8L3NwYW4+Ljwvc3Bhbj48L2xpPgo8bGkgY2xhc3M9InNraXBzcGFjZSI+PHNwYW4+U2VsZWN0IGEgbW9kaWZpZXIgdG8gc3BlY2lmeSB3aGV0aGVyIHlvdXIgbGlzdGVuZXIgY2xhc3NlcyBhcmUKCnB1YmxpYywgYWJzdHJhY3QsIG9yIGZpbmFsLiAoQ2xhc3NlcyBjYW5ub3QgYmUgYm90aCBhYnN0cmFjdCBhbmQgZmluYWwuKTwvc3Bhbj48L2xpPgo8bGkgY2xhc3M9InNraXBzcGFjZSI+PHNwYW4+WW91IGNhbiBhbHNvIGFkZCBhZGRpdGlvbmFsIGludGVyZmFjZXMgdG8gaW1wbGVtZW50IGluIGFkZGl0aW9uCgp0byB0aGUgZGVmYXVsdCBpbnRlcmZhY2VzLiBDbGljayA8c3Bhbj48c3BhbiBjbGFzcz0idWljb250cm9sIj5BZGQ8L3NwYW4+PC9zcGFuPiB0byBvcGVuCgp0aGUgPHNwYW4+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+SW50ZXJmYWNlIFNlbGVjdGlvbjwvc3Bhbj48L3NwYW4+IGRpYWxvZy4gSW4gdGhpcyBkaWFsb2csCgphcyB5b3UgdHlwZSB0aGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlIHRoYXQgeW91IGFyZSBpbnRlcmVzdGVkIGluIGFkZGluZyBpbgoKdGhlIDxzcGFuPjxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkNob29zZSBpbnRlcmZhY2VzPC9zcGFuPjwvc3Bhbj4gZmllbGQsIHRoZSBsaXN0IG9mIGF2YWlsYWJsZQoKaW50ZXJmYWNlcyBsaXN0ZWQgaW4gdGhlIDxzcGFuPjxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk1hdGNoaW5nIHR5cGVzPC9zcGFuPjwvc3Bhbj4gbGlzdAoKYm94IHVwZGF0ZXMgZHluYW1pY2FsbHkgdG8gZGlzcGxheSBvbmx5IHRoZSBpbnRlcmZhY2VzIHRoYXQgbWF0Y2ggdGhlIHBhdHRlcm4uCgpDaG9vc2UgYW4gaW50ZXJmYWNlIHRvIHNlZSB0aGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+UXVhbGlmaWVyPC9zcGFuPiBhbmQgY2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QWRkPC9zcGFuPi4KCkNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk9LPC9zcGFuPiB3aGVuIHlvdSBhcmUgZmluaXNoZWQuPC9zcGFuPjwvbGk+CjxsaSBjbGFzcz0ic2tpcHNwYWNlIj48c3Bhbj5DaG9vc2Ugd2hpY2ggbWV0aG9kIHN0dWIgeW91IHdhbnQgdG8gY3JlYXRlLiA8L3NwYW4+IFRoZSA8c3Bhbj48c3BhbiBjbGFzcz0idWljb250cm9sIj5Jbmhlcml0ZWQKCmFic3RyYWN0IG1ldGhvZHM8L3NwYW4+PC9zcGFuPiBhbmQgPHNwYW4+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+Q29uc3RydWN0b3JzIGZyb20gc3VwZXJjbGFzczwvc3Bhbj48L3NwYW4+IG9wdGlvbnMKCmFkZCBzdHVicyBmb3IgaW5oZXJpdGVkIGFic3RyYWN0IG1ldGhvZHMgYW5kIHN1cGVyY2xhc3MgY29uc3RydWN0b3JzIHRoYXQKCm11c3QgYmUgaW1wbGVtZW50ZWQgKHVubGVzcyB5b3UgaW50ZW5kIHRvIGNyZWF0ZSBhbiBhYnN0cmFjdCBsaXN0ZW5lcikuIE9uZQoKbWV0aG9kIHdpdGggdGhlIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkluaGVyaXRlZCBhYnN0cmFjdCBtZXRob2RzPC9zcGFuPiBvcHRpb24gbXVzdAoKYmUgY3JlYXRlZCBmb3IgdGhlIGNsYXNzIG5vdCB0byBiZSBhYnN0cmFjdC4gPC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPkNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkZpbmlzaDwvc3Bhbj4uPC9zcGFuPjwvbGk+Cjwvb2w+CjxkaXYgY2xhc3M9InNraXBzcGFjZSI+PHA+VGhlIGxpc3RlbmVyIGNsYXNzIHRoYXQgeW91IGNyZWF0ZWQgYXBwZWFycyB1bmRlciB0aGUgTGlzdGVuZXIKCmljb24uPC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXY+PHA+PGIgY2xhc3M9InJlbGNvbmNlcHRzaGQiPlJlbGF0ZWQgY29uY2VwdHM8L2I+PGJyIC8+CjxhIGhyZWY9ImNjd2VieG1sLmh0bWwiIHRpdGxlPSIiPlRoZSBXZWIgZGVwbG95bWVudCBkZXNjcmlwdG9yIGVkaXRvcjwvYT48YnIgLz4KPC9wPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+