PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPm1vZF9sb2dfY29uZmlnIC0gQXBhY2hlIEhUVFAgU2VydmVyPC90aXRsZT4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJNYWluIHN0eWxlc2hlZXQiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtbG9vc2UtMTAwcGMuY3NzIiByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik5vIFNpZGViYXIgLSBEZWZhdWx0IGZvbnQgc2l6ZSIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1wcmludC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9InByaW50IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPGxpbmsgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIiByZWw9InNob3J0Y3V0IGljb24iIC8+PC9oZWFkPgo8Ym9keT4KPGRpdiBpZD0icGFnZS1oZWFkZXIiPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4uL2ZhcS8iPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjM8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIuZ2lmIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLXByb2plY3QvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLyI+VmVyc2lvbiAyLjM8L2E+ICZndDsgPGEgaHJlZj0iLi8iPk1vZHVsZXM8L2E+PC9kaXY+CjxkaXYgaWQ9InBhZ2UtY29udGVudCI+CjxkaXYgaWQ9InByZWFtYmxlIj48aDE+QXBhY2hlIE1vZHVsZSBtb2RfbG9nX2NvbmZpZzwvaDE+CjxkaXYgY2xhc3M9InRvcGxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF9sb2dfY29uZmlnLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2QvbW9kX2xvZ19jb25maWcuaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9tb2QvbW9kX2xvZ19jb25maWcuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj4KPHRhYmxlIGNsYXNzPSJtb2R1bGUiPjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkxvZ2dpbmcgb2YgdGhlIHJlcXVlc3RzIG1hZGUgdG8gdGhlIHNlcnZlcjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjTW9kdWxlSWRlbnRpZmllciI+TW9kdWxloElkZW50aWZpZXI6PC9hPjwvdGg+PHRkPmxvZ19jb25maWdfbW9kdWxlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU291cmNlRmlsZSI+U291cmNloEZpbGU6PC9hPjwvdGg+PHRkPm1vZF9sb2dfY29uZmlnLmM8L3RkPjwvdHI+PC90YWJsZT4KPGgzPlN1bW1hcnk8L2gzPgoKICAgIDxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIGZvciBmbGV4aWJsZSBsb2dnaW5nIG9mIGNsaWVudAogICAgcmVxdWVzdHMuIExvZ3MgYXJlIHdyaXR0ZW4gaW4gYSBjdXN0b21pemFibGUgZm9ybWF0LCBhbmQgbWF5IGJlCiAgICB3cml0dGVuIGRpcmVjdGx5IHRvIGEgZmlsZSwgb3IgdG8gYW4gZXh0ZXJuYWwgcHJvZ3JhbS4KICAgIENvbmRpdGlvbmFsIGxvZ2dpbmcgaXMgcHJvdmlkZWQgc28gdGhhdCBpbmRpdmlkdWFsIHJlcXVlc3RzIG1heQogICAgYmUgaW5jbHVkZWQgb3IgZXhjbHVkZWQgZnJvbSB0aGUgbG9ncyBiYXNlZCBvbiBjaGFyYWN0ZXJpc3RpY3MKICAgIG9mIHRoZSByZXF1ZXN0LjwvcD4KCiAgICA8cD5UaHJlZSBkaXJlY3RpdmVzIGFyZSBwcm92aWRlZCBieSB0aGlzIG1vZHVsZToKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiN0cmFuc2ZlcmxvZyI+VHJhbnNmZXJMb2c8L2E+PC9jb2RlPiB0byBjcmVhdGUKICAgIGEgbG9nIGZpbGUsIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNsb2dmb3JtYXQiPkxvZ0Zvcm1hdDwvYT48L2NvZGU+CiAgICB0byBzZXQgYSBjdXN0b20gZm9ybWF0LCBhbmQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2N1c3RvbWxvZyI+Q3VzdG9tTG9nPC9hPjwvY29kZT4gdG8gZGVmaW5lIGEgbG9nIGZpbGUgYW5kIGZvcm1hdCBpbiBvbmUKICAgIHN0ZXAuIFRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5UcmFuc2ZlckxvZzwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkN1c3RvbUxvZzwvY29kZT4gZGlyZWN0aXZlcyBjYW4gYmUgdXNlZCBtdWx0aXBsZSB0aW1lcyBpbiBlYWNoCiAgICBzZXJ2ZXIgdG8gY2F1c2UgZWFjaCByZXF1ZXN0IHRvIGJlIGxvZ2dlZCB0byBtdWx0aXBsZSBmaWxlcy48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxoMyBjbGFzcz0iZGlyZWN0aXZlcyI+RGlyZWN0aXZlczwvaDM+Cjx1bCBpZD0idG9jIj4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYnVmZmVyZWRsb2dzIj5CdWZmZXJlZExvZ3M8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjY29va2llbG9nIj5Db29raWVMb2c8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjY3VzdG9tbG9nIj5DdXN0b21Mb2c8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbG9nZm9ybWF0Ij5Mb2dGb3JtYXQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjdHJhbnNmZXJsb2ciPlRyYW5zZmVyTG9nPC9hPjwvbGk+CjwvdWw+CjxoMz5Ub3BpY3M8L2gzPgo8dWwgaWQ9InRvcGljcyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2Zvcm1hdHMiPkN1c3RvbSBMb2cgRm9ybWF0czwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNzZWN1cml0eSI+U2VjdXJpdHkgQ29uc2lkZXJhdGlvbnM8L2E+PC9saT4KPC91bD48aDM+U2VlIGFsc288L2gzPgo8dWwgY2xhc3M9InNlZWFsc28iPgo8bGk+PGEgaHJlZj0iLi4vbG9ncy5odG1sIj5BcGFjaGUgTG9nIEZpbGVzPC9hPjwvbGk+CjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImZvcm1hdHMiIGlkPSJmb3JtYXRzIj5DdXN0b20gTG9nIEZvcm1hdHM8L2E+PC9oMj4KCiAgICA8cD5UaGUgZm9ybWF0IGFyZ3VtZW50IHRvIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbG9nZm9ybWF0Ij5Mb2dGb3JtYXQ8L2E+PC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2N1c3RvbWxvZyI+Q3VzdG9tTG9nPC9hPjwvY29kZT4gZGlyZWN0aXZlcyBpcyBhIHN0cmluZy4gVGhpcyBzdHJpbmcgaXMKICAgIHVzZWQgdG8gbG9nIGVhY2ggcmVxdWVzdCB0byB0aGUgbG9nIGZpbGUuIEl0IGNhbiBjb250YWluIGxpdGVyYWwKICAgIGNoYXJhY3RlcnMgY29waWVkIGludG8gdGhlIGxvZyBmaWxlcyBhbmQgdGhlIEMtc3R5bGUgY29udHJvbAogICAgY2hhcmFjdGVycyAiXG4iIGFuZCAiXHQiIHRvIHJlcHJlc2VudCBuZXctbGluZXMgYW5kIHRhYnMuCiAgICBMaXRlcmFsIHF1b3RlcyBhbmQgYmFjay1zbGFzaGVzIHNob3VsZCBiZSBlc2NhcGVkIHdpdGgKICAgIGJhY2stc2xhc2hlcy48L3A+CgogICAgPHA+VGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgcmVxdWVzdCBpdHNlbGYgYXJlIGxvZ2dlZCBieQogICAgcGxhY2luZyAiPGNvZGU+JTwvY29kZT4iIGRpcmVjdGl2ZXMgaW4gdGhlIGZvcm1hdCBzdHJpbmcsIHdoaWNoIGFyZQogICAgcmVwbGFjZWQgaW4gdGhlIGxvZyBmaWxlIGJ5IHRoZSB2YWx1ZXMgYXMgZm9sbG93czo8L3A+CgogICAgPHRhYmxlIGNsYXNzPSJib3JkZXJlZCI+PHRyIGNsYXNzPSJoZWFkZXIiPjx0aD5Gb3JtYXQmbmJzcDtTdHJpbmc8L3RoPgogICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+PC90cj4KPHRyPjx0ZD48Y29kZT4lJTwvY29kZT48L3RkPgogICAgICAgIDx0ZD5UaGUgcGVyY2VudCBzaWduPC90ZD48L3RyPgo8dHIgY2xhc3M9Im9kZCI+PHRkPjxjb2RlPiVhPC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPlJlbW90ZSBJUC1hZGRyZXNzPC90ZD48L3RyPgo8dHI+PHRkPjxjb2RlPiVBPC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPkxvY2FsIElQLWFkZHJlc3M8L3RkPjwvdHI+Cjx0ciBjbGFzcz0ib2RkIj48dGQ+PGNvZGU+JUI8L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+U2l6ZSBvZiByZXNwb25zZSBpbiBieXRlcywgZXhjbHVkaW5nIEhUVFAgaGVhZGVycy48L3RkPjwvdHI+Cjx0cj48dGQ+PGNvZGU+JWI8L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+U2l6ZSBvZiByZXNwb25zZSBpbiBieXRlcywgZXhjbHVkaW5nIEhUVFAgaGVhZGVycy4gSW4gQ0xGIGZvcm1hdCwgPGVtPmkuZS48L2VtPgogICAgICAgIGEgJzxjb2RlPi08L2NvZGU+JyByYXRoZXIgdGhhbiBhIDAgd2hlbiBubyBieXRlcyBhcmUgc2VudC48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ib2RkIj48dGQ+PGNvZGU+JXs8dmFyPkZvb2JhcjwvdmFyPn1DPC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPlRoZSBjb250ZW50cyBvZiBjb29raWUgPHZhcj5Gb29iYXI8L3Zhcj4gaW4gdGhlIHJlcXVlc3Qgc2VudAogICAgICAgIHRvIHRoZSBzZXJ2ZXIuPC90ZD48L3RyPgo8dHI+PHRkPjxjb2RlPiVEPC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPlRoZSB0aW1lIHRha2VuIHRvIHNlcnZlIHRoZSByZXF1ZXN0LCBpbiBtaWNyb3NlY29uZHMuPC90ZD48L3RyPgo8dHIgY2xhc3M9Im9kZCI+PHRkPjxjb2RlPiV7PHZhcj5GT09CQVI8L3Zhcj59ZTwvY29kZT48L3RkPgogICAgICAgIDx0ZD5UaGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCiAgICAgICAgPHZhcj5GT09CQVI8L3Zhcj48L3RkPjwvdHI+Cjx0cj48dGQ+PGNvZGU+JWY8L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+RmlsZW5hbWU8L3RkPjwvdHI+Cjx0ciBjbGFzcz0ib2RkIj48dGQ+PGNvZGU+JWg8L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+UmVtb3RlIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGQ+PGNvZGU+JUg8L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+VGhlIHJlcXVlc3QgcHJvdG9jb2w8L3RkPjwvdHI+Cjx0ciBjbGFzcz0ib2RkIj48dGQ+PGNvZGU+JXs8dmFyPkZvb2JhcjwvdmFyPn1pPC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPlRoZSBjb250ZW50cyBvZiA8Y29kZT48dmFyPkZvb2JhcjwvdmFyPjo8L2NvZGU+IGhlYWRlciBsaW5lKHMpCiAgICAgICAgaW4gdGhlIHJlcXVlc3Qgc2VudCB0byB0aGUgc2VydmVyLjwvdGQ+PC90cj4KPHRyPjx0ZD48Y29kZT4lbDwvY29kZT48L3RkPgogICAgICAgIDx0ZD5SZW1vdGUgbG9nbmFtZSAoZnJvbSBpZGVudGQsIGlmIHN1cHBsaWVkKS4gVGhpcyB3aWxsIHJldHVybiBhCiAgICAgICAgZGFzaCB1bmxlc3MgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9pZGVudC5odG1sIj5tb2RfaWRlbnQ8L2E+PC9jb2RlPiBpcyBwcmVzZW50IGFuZCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2lkZW50Lmh0bWwjaWRlbnRpdHljaGVjayI+SWRlbnRpdHlDaGVjazwvYT48L2NvZGU+IGlzIHNldAogICAgICAgIDxjb2RlPk9uPC9jb2RlPi48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ib2RkIj48dGQ+PGNvZGU+JW08L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+VGhlIHJlcXVlc3QgbWV0aG9kPC90ZD48L3RyPgo8dHI+PHRkPjxjb2RlPiV7PHZhcj5Gb29iYXI8L3Zhcj59bjwvY29kZT48L3RkPgogICAgICAgIDx0ZD5UaGUgY29udGVudHMgb2Ygbm90ZSA8dmFyPkZvb2JhcjwvdmFyPiBmcm9tIGFub3RoZXIKICAgICAgICBtb2R1bGUuPC90ZD48L3RyPgo8dHIgY2xhc3M9Im9kZCI+PHRkPjxjb2RlPiV7PHZhcj5Gb29iYXI8L3Zhcj59bzwvY29kZT48L3RkPgogICAgICAgIDx0ZD5UaGUgY29udGVudHMgb2YgPGNvZGU+PHZhcj5Gb29iYXI8L3Zhcj46PC9jb2RlPiBoZWFkZXIgbGluZShzKQogICAgICAgIGluIHRoZSByZXBseS48L3RkPjwvdHI+Cjx0cj48dGQ+PGNvZGU+JXA8L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+VGhlIGNhbm9uaWNhbCBwb3J0IG9mIHRoZSBzZXJ2ZXIgc2VydmluZyB0aGUgcmVxdWVzdDwvdGQ+PC90cj4KPHRyIGNsYXNzPSJvZGQiPjx0ZD48Y29kZT4lUDwvY29kZT48L3RkPgogICAgICAgIDx0ZD5UaGUgcHJvY2VzcyBJRCBvZiB0aGUgY2hpbGQgdGhhdCBzZXJ2aWNlZCB0aGUgcmVxdWVzdC48L3RkPjwvdHI+Cjx0cj48dGQ+PGNvZGU+JXs8dmFyPmZvcm1hdDwvdmFyPn1QPC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPlRoZSBwcm9jZXNzIElEIG9yIHRocmVhZCBpZCBvZiB0aGUgY2hpbGQgdGhhdCBzZXJ2aWNlZCB0aGUgCiAgICAgICAgcmVxdWVzdC4gIFZhbGlkIGZvcm1hdHMgYXJlIDxjb2RlPnBpZDwvY29kZT4sIDxjb2RlPnRpZDwvY29kZT4sCiAgICAgICAgYW5kIDxjb2RlPmhleHRpZDwvY29kZT4uICA8Y29kZT5oZXh0aWQ8L2NvZGU+IHJlcXVpcmVzIEFQUiAxLjIuMCBvciAKICAgICAgICBoaWdoZXIuCiAgICAgICAgPC90ZD48L3RyPgo8dHIgY2xhc3M9Im9kZCI+PHRkPjxjb2RlPiVxPC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPlRoZSBxdWVyeSBzdHJpbmcgKHByZXBlbmRlZCB3aXRoIGEgPGNvZGU+PzwvY29kZT4gaWYgYSBxdWVyeQogICAgICAgIHN0cmluZyBleGlzdHMsIG90aGVyd2lzZSBhbiBlbXB0eSBzdHJpbmcpPC90ZD48L3RyPgo8dHI+PHRkPjxjb2RlPiVyPC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPkZpcnN0IGxpbmUgb2YgcmVxdWVzdDwvdGQ+PC90cj4KPHRyIGNsYXNzPSJvZGQiPjx0ZD48Y29kZT4lczwvY29kZT48L3RkPgogICAgICAgIDx0ZD5TdGF0dXMuIEZvciByZXF1ZXN0cyB0aGF0IGdvdCBpbnRlcm5hbGx5IHJlZGlyZWN0ZWQsIHRoaXMgaXMKICAgICAgICB0aGUgc3RhdHVzIG9mIHRoZSAqb3JpZ2luYWwqIHJlcXVlc3QgLS0tIDxjb2RlPiUmZ3Q7czwvY29kZT4KICAgICAgICBmb3IgdGhlIGxhc3QuPC90ZD48L3RyPgo8dHI+PHRkPjxjb2RlPiV0PC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPlRpbWUgdGhlIHJlcXVlc3Qgd2FzIHJlY2VpdmVkIChzdGFuZGFyZCBlbmdsaXNoCiAgICAgICAgZm9ybWF0KTwvdGQ+PC90cj4KPHRyIGNsYXNzPSJvZGQiPjx0ZD48Y29kZT4lezx2YXI+Zm9ybWF0PC92YXI+fXQ8L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+VGhlIHRpbWUsIGluIHRoZSBmb3JtIGdpdmVuIGJ5IGZvcm1hdCwgd2hpY2ggc2hvdWxkIGJlIGluCiAgICAgICAgPGNvZGU+c3RyZnRpbWUoMyk8L2NvZGU+IGZvcm1hdC4gKHBvdGVudGlhbGx5IGxvY2FsaXplZCk8L3RkPjwvdHI+Cjx0cj48dGQ+PGNvZGU+JVQ8L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+VGhlIHRpbWUgdGFrZW4gdG8gc2VydmUgdGhlIHJlcXVlc3QsIGluIHNlY29uZHMuPC90ZD48L3RyPgo8dHIgY2xhc3M9Im9kZCI+PHRkPjxjb2RlPiV1PC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPlJlbW90ZSB1c2VyIChmcm9tIGF1dGg7IG1heSBiZSBib2d1cyBpZiByZXR1cm4gc3RhdHVzCiAgICAgICAgKDxjb2RlPiVzPC9jb2RlPikgaXMgNDAxKTwvdGQ+PC90cj4KPHRyPjx0ZD48Y29kZT4lVTwvY29kZT48L3RkPgogICAgICAgIDx0ZD5UaGUgVVJMIHBhdGggcmVxdWVzdGVkLCBub3QgaW5jbHVkaW5nIGFueSBxdWVyeSBzdHJpbmcuPC90ZD48L3RyPgo8dHIgY2xhc3M9Im9kZCI+PHRkPjxjb2RlPiV2PC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPlRoZSBjYW5vbmljYWwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNzZXJ2ZXJuYW1lIj5TZXJ2ZXJOYW1lPC9hPjwvY29kZT4KICAgICAgICBvZiB0aGUgc2VydmVyIHNlcnZpbmcgdGhlIHJlcXVlc3QuPC90ZD48L3RyPgo8dHI+PHRkPjxjb2RlPiVWPC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPlRoZSBzZXJ2ZXIgbmFtZSBhY2NvcmRpbmcgdG8gdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjdXNlY2Fub25pY2FsbmFtZSI+VXNlQ2Fub25pY2FsTmFtZTwvYT48L2NvZGU+IHNldHRpbmcuPC90ZD48L3RyPgo8dHIgY2xhc3M9Im9kZCI+PHRkPjxjb2RlPiVYPC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPkNvbm5lY3Rpb24gc3RhdHVzIHdoZW4gcmVzcG9uc2UgaXMgY29tcGxldGVkOgoKICAgICAgICA8dGFibGU+CiAgICAgICAgCiAgICAgICAgPHRyPjx0ZD48Y29kZT5YPC9jb2RlPiA9PC90ZD4KICAgICAgICAgICAgPHRkPmNvbm5lY3Rpb24gYWJvcnRlZCBiZWZvcmUgdGhlIHJlc3BvbnNlIGNvbXBsZXRlZC48L3RkPjwvdHI+CiAgICAgICAgPHRyPjx0ZD48Y29kZT4rPC9jb2RlPiA9PC90ZD4KICAgICAgICAgICAgPHRkPmNvbm5lY3Rpb24gbWF5IGJlIGtlcHQgYWxpdmUgYWZ0ZXIgdGhlIHJlc3BvbnNlIGlzCiAgICAgICAgICAgIHNlbnQuPC90ZD48L3RyPgogICAgICAgIDx0cj48dGQ+PGNvZGU+LTwvY29kZT4gPSA8L3RkPgogICAgICAgICAgICA8dGQ+Y29ubmVjdGlvbiB3aWxsIGJlIGNsb3NlZCBhZnRlciB0aGUgcmVzcG9uc2UgaXMKICAgICAgICAgICAgc2VudC48L3RkPjwvdHI+CiAgICAgICAgPC90YWJsZT4KCiAgICAgICAgPHA+KFRoaXMgZGlyZWN0aXZlIHdhcyA8Y29kZT4lYzwvY29kZT4gaW4gbGF0ZSB2ZXJzaW9ucyBvZiBBcGFjaGUKICAgICAgICAxLjMsIGJ1dCB0aGlzIGNvbmZsaWN0ZWQgd2l0aCB0aGUgaGlzdG9yaWNhbCBzc2wKICAgICAgICA8Y29kZT4lezx2YXI+dmFyPC92YXI+fWM8L2NvZGU+IHN5bnRheC4pPC9wPjwvdGQ+PC90cj4KPHRyPjx0ZD48Y29kZT4lSTwvY29kZT48L3RkPgogICAgICAgIDx0ZD5CeXRlcyByZWNlaXZlZCwgaW5jbHVkaW5nIHJlcXVlc3QgYW5kIGhlYWRlcnMsIGNhbm5vdCBiZSB6ZXJvLgogICAgICAgIFlvdSBuZWVkIHRvIGVuYWJsZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2xvZ2lvLmh0bWwiPm1vZF9sb2dpbzwvYT48L2NvZGU+IHRvIHVzZSB0aGlzLjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJvZGQiPjx0ZD48Y29kZT4lTzwvY29kZT48L3RkPgogICAgICAgIDx0ZD5CeXRlcyBzZW50LCBpbmNsdWRpbmcgaGVhZGVycywgY2Fubm90IGJlIHplcm8uIFlvdSBuZWVkIHRvCiAgICAgICAgZW5hYmxlIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbG9naW8uaHRtbCI+bW9kX2xvZ2lvPC9hPjwvY29kZT4gdG8gdXNlIHRoaXMuPC90ZD48L3RyPgo8L3RhYmxlPgoKICAgIDxoMz48YSBuYW1lPSJtb2RpZmllcnMiIGlkPSJtb2RpZmllcnMiPk1vZGlmaWVyczwvYT48L2gzPgoKICAgICAgPHA+UGFydGljdWxhciBpdGVtcyBjYW4gYmUgcmVzdHJpY3RlZCB0byBwcmludCBvbmx5IGZvcgogICAgICByZXNwb25zZXMgd2l0aCBzcGVjaWZpYyBIVFRQIHN0YXR1cyBjb2RlcyBieSBwbGFjaW5nIGEKICAgICAgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc3RhdHVzIGNvZGVzIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUKICAgICAgIiUiLiAgRm9yIGV4YW1wbGUsIDxjb2RlPiIlNDAwLDUwMXtVc2VyLWFnZW50fWkiPC9jb2RlPiBsb2dzCiAgICAgIDxjb2RlPlVzZXItYWdlbnQ8L2NvZGU+IG9uIDQwMCBlcnJvcnMgYW5kIDUwMSBlcnJvcnMgb25seS4gIEZvcgogICAgICBvdGhlciBzdGF0dXMgY29kZXMsIHRoZSBsaXRlcmFsIHN0cmluZyA8Y29kZT4iLSI8L2NvZGU+IHdpbGwgYmUKICAgICAgbG9nZ2VkLiAgVGhlIHN0YXR1cyBjb2RlIGxpc3QgbWF5IGJlIHByZWNlZGVkIGJ5IGEKICAgICAgIjxjb2RlPiE8L2NvZGU+IiB0byBpbmRpY2F0ZSBuZWdhdGlvbjoKICAgICAgPGNvZGU+IiUhMjAwLDMwNCwzMDJ7UmVmZXJlcn1pIjwvY29kZT4gbG9ncyA8Y29kZT5SZWZlcmVyPC9jb2RlPgogICAgICBvbiBhbGwgcmVxdWVzdHMgdGhhdCBkbyA8ZW0+bm90PC9lbT4gcmV0dXJuIG9uZSBvZiB0aGUgdGhyZWUKICAgICAgc3BlY2lmaWVkIGNvZGVzLjwvcD4KCiAgICAgIDxwPlRoZSBtb2RpZmllcnMgIiZsdDsiIGFuZCAiJmd0OyIgY2FuIGJlIHVzZWQgZm9yIHJlcXVlc3RzIHRoYXQKICAgICAgaGF2ZSBiZWVuIGludGVybmFsbHkgcmVkaXJlY3RlZCB0byBjaG9vc2Ugd2hldGhlciB0aGUgb3JpZ2luYWwKICAgICAgb3IgZmluYWwgKHJlc3BlY3RpdmVseSkgcmVxdWVzdCBzaG91bGQgYmUgY29uc3VsdGVkLiAgQnkKICAgICAgZGVmYXVsdCwgdGhlIDxjb2RlPiU8L2NvZGU+IGRpcmVjdGl2ZXMgPGNvZGU+JXMsICVVLCAlVCwKICAgICAgJUQsPC9jb2RlPiBhbmQgPGNvZGU+JXI8L2NvZGU+IGxvb2sgYXQgdGhlIG9yaWdpbmFsIHJlcXVlc3QKICAgICAgd2hpbGUgYWxsIG90aGVycyBsb29rIGF0IHRoZSBmaW5hbCByZXF1ZXN0LiAgU28gZm9yIGV4YW1wbGUsCiAgICAgIDxjb2RlPiUmZ3Q7czwvY29kZT4gY2FuIGJlIHVzZWQgdG8gcmVjb3JkIHRoZSBmaW5hbCBzdGF0dXMgb2YKICAgICAgdGhlIHJlcXVlc3QgYW5kIDxjb2RlPiUmbHQ7dTwvY29kZT4gY2FuIGJlIHVzZWQgdG8gcmVjb3JkIHRoZQogICAgICBvcmlnaW5hbCBhdXRoZW50aWNhdGVkIHVzZXIgb24gYSByZXF1ZXN0IHRoYXQgaXMgaW50ZXJuYWxseQogICAgICByZWRpcmVjdGVkIHRvIGFuIHVuYXV0aGVudGljYXRlZCByZXNvdXJjZS48L3A+CgogICAgCgogICAgPGgzPjxhIG5hbWU9ImZvcm1hdC1ub3RlcyIgaWQ9ImZvcm1hdC1ub3RlcyI+U29tZSBOb3RlczwvYT48L2gzPgoKICAgICAgPHA+Rm9yIHNlY3VyaXR5IHJlYXNvbnMsIHN0YXJ0aW5nIHdpdGggdmVyc2lvbiAyLjAuNDYsCiAgICAgIG5vbi1wcmludGFibGUgYW5kIG90aGVyIHNwZWNpYWwgY2hhcmFjdGVycyBpbiA8Y29kZT4lcjwvY29kZT4sCiAgICAgIDxjb2RlPiVpPC9jb2RlPiBhbmQgPGNvZGU+JW88L2NvZGU+IGFyZSBlc2NhcGVkIHVzaW5nCiAgICAgIDxjb2RlPlx4PHZhcj5oaDwvdmFyPjwvY29kZT4gc2VxdWVuY2VzLCB3aGVyZSA8dmFyPmhoPC92YXI+CiAgICAgIHN0YW5kcyBmb3IgdGhlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByYXcKICAgICAgYnl0ZS4gRXhjZXB0aW9ucyBmcm9tIHRoaXMgcnVsZSBhcmUgPGNvZGU+IjwvY29kZT4gYW5kCiAgICAgIDxjb2RlPlw8L2NvZGU+LCB3aGljaCBhcmUgZXNjYXBlZCBieSBwcmVwZW5kaW5nIGEgYmFja3NsYXNoLCBhbmQKICAgICAgYWxsIHdoaXRlc3BhY2UgY2hhcmFjdGVycywgd2hpY2ggYXJlIHdyaXR0ZW4gaW4gdGhlaXIgQy1zdHlsZQogICAgICBub3RhdGlvbiAoPGNvZGU+XG48L2NvZGU+LCA8Y29kZT5cdDwvY29kZT4sIGV0YykuICBJbiB2ZXJzaW9ucwogICAgICBwcmlvciB0byAyLjAuNDYsIG5vIGVzY2FwaW5nIHdhcyBwZXJmb3JtZWQgb24gdGhlc2Ugc3RyaW5ncyBzbwogICAgICB5b3UgaGFkIHRvIGJlIHF1aXRlIGNhcmVmdWwgd2hlbiBkZWFsaW5nIHdpdGggcmF3IGxvZyBmaWxlcy48L3A+CgogICAgICA8cD5JbiBodHRwZCAyLjAsIHVubGlrZSAxLjMsIHRoZSA8Y29kZT4lYjwvY29kZT4gYW5kCiAgICAgIDxjb2RlPiVCPC9jb2RlPiBmb3JtYXQgc3RyaW5ncyBkbyBub3QgcmVwcmVzZW50IHRoZSBudW1iZXIgb2YKICAgICAgYnl0ZXMgc2VudCB0byB0aGUgY2xpZW50LCBidXQgc2ltcGx5IHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZQogICAgICBIVFRQIHJlc3BvbnNlICh3aGljaCB3aWxsIGRpZmZlciwgZm9yIGluc3RhbmNlLCBpZiB0aGUKICAgICAgY29ubmVjdGlvbiBpcyBhYm9ydGVkLCBvciBpZiBTU0wgaXMgdXNlZCkuICBUaGUgPGNvZGU+JU88L2NvZGU+CiAgICAgIGZvcm1hdCBwcm92aWRlZCBieSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2xvZ2lvLmh0bWwiPm1vZF9sb2dpbzwvYT48L2NvZGU+IHdpbGwgbG9nIHRoZQogICAgICBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgb3ZlciB0aGUgbmV0d29yay48L3A+CgogICAgCgogICAgPGgzPjxhIG5hbWU9ImV4YW1wbGVzIiBpZD0iZXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvaDM+CgogICAgICA8cD5Tb21lIGNvbW1vbmx5IHVzZWQgbG9nIGZvcm1hdCBzdHJpbmdzIGFyZTo8L3A+CgogICAgICA8ZGw+CiAgICAgICAgPGR0PkNvbW1vbiBMb2cgRm9ybWF0IChDTEYpPC9kdD4KICAgICAgICA8ZGQ+PGNvZGU+IiVoICVsICV1ICV0IFwiJXJcIiAlJmd0O3MgJWIiPC9jb2RlPjwvZGQ+CgogICAgICAgIDxkdD5Db21tb24gTG9nIEZvcm1hdCB3aXRoIFZpcnR1YWwgSG9zdDwvZHQ+CiAgICAgICAgPGRkPjxjb2RlPiIldiAlaCAlbCAldSAldCBcIiVyXCIgJSZndDtzICViIjwvY29kZT48L2RkPgoKICAgICAgICA8ZHQ+TkNTQSBleHRlbmRlZC9jb21iaW5lZCBsb2cgZm9ybWF0PC9kdD4KICAgICAgICA8ZGQ+PGNvZGU+IiVoICVsICV1ICV0IFwiJXJcIiAlJmd0O3MgJWIgXCIle1JlZmVyZXJ9aVwiCiAgICAgICAgXCIle1VzZXItYWdlbnR9aVwiIjwvY29kZT48L2RkPgoKICAgICAgICA8ZHQ+UmVmZXJlciBsb2cgZm9ybWF0PC9kdD4KICAgICAgICA8ZGQ+PGNvZGU+IiV7UmVmZXJlcn1pIC0mZ3Q7ICVVIjwvY29kZT48L2RkPgoKICAgICAgICA8ZHQ+QWdlbnQgKEJyb3dzZXIpIGxvZyBmb3JtYXQ8L2R0PgogICAgICAgIDxkZD48Y29kZT4iJXtVc2VyLWFnZW50fWkiPC9jb2RlPjwvZGQ+CiAgICAgIDwvZGw+CiAgICAKPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ic2VjdXJpdHkiIGlkPSJzZWN1cml0eSI+U2VjdXJpdHkgQ29uc2lkZXJhdGlvbnM8L2E+PC9oMj4KICAgIDxwPlNlZSB0aGUgPGEgaHJlZj0iLi4vbWlzYy9zZWN1cml0eV90aXBzLmh0bWwjc2VydmVycm9vdCI+c2VjdXJpdHkgdGlwczwvYT4KICAgIGRvY3VtZW50IGZvciBkZXRhaWxzIG9uIHdoeSB5b3VyIHNlY3VyaXR5IGNvdWxkIGJlIGNvbXByb21pc2VkCiAgICBpZiB0aGUgZGlyZWN0b3J5IHdoZXJlIGxvZ2ZpbGVzIGFyZSBzdG9yZWQgaXMgd3JpdGFibGUgYnkKICAgIGFueW9uZSBvdGhlciB0aGFuIHRoZSB1c2VyIHRoYXQgc3RhcnRzIHRoZSBzZXJ2ZXIuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQnVmZmVyZWRMb2dzIiBpZD0iQnVmZmVyZWRMb2dzIj5CdWZmZXJlZExvZ3M8L2E+IDxhIG5hbWU9ImJ1ZmZlcmVkbG9ncyIgaWQ9ImJ1ZmZlcmVkbG9ncyI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+QnVmZmVyIGxvZyBlbnRyaWVzIGluIG1lbW9yeSBiZWZvcmUgd3JpdGluZyB0byBkaXNrPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkJ1ZmZlcmVkTG9ncyBPbnxPZmY8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+QnVmZmVyZWRMb2dzIE9mZjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2xvZ19jb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BdmFpbGFibGUgaW4gdmVyc2lvbnMgMi4wLjQxIGFuZCBsYXRlci48L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QnVmZmVyZWRMb2dzPC9jb2RlPiBkaXJlY3RpdmUgY2F1c2VzCiAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2xvZ19jb25maWcuaHRtbCI+bW9kX2xvZ19jb25maWc8L2E+PC9jb2RlPiB0byBzdG9yZSBzZXZlcmFsIGxvZyBlbnRyaWVzIGluCiAgICBtZW1vcnkgYW5kIHdyaXRlIHRoZW0gdG9nZXRoZXIgdG8gZGlzaywgcmF0aGVyIHRoYW4gd3JpdGluZyB0aGVtCiAgICBhZnRlciBlYWNoIHJlcXVlc3QuICBPbiBzb21lIHN5c3RlbXMsIHRoaXMgbWF5IHJlc3VsdCBpbiBtb3JlCiAgICBlZmZpY2llbnQgZGlzayBhY2Nlc3MgYW5kIGhlbmNlIGhpZ2hlciBwZXJmb3JtYW5jZS4gIEl0IG1heSBiZQogICAgc2V0IG9ubHkgb25jZSBmb3IgdGhlIGVudGlyZSBzZXJ2ZXI7IGl0IGNhbm5vdCBiZSBjb25maWd1cmVkCiAgICBwZXIgdmlydHVhbC1ob3N0LjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJub3RlIj5UaGlzIGRpcmVjdGl2ZSBpcyBleHBlcmltZW50YWwgYW5kIHNob3VsZCBiZSB1c2VkIHdpdGgKICAgIGNhdXRpb24uPC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQ29va2llTG9nIiBpZD0iQ29va2llTG9nIj5Db29raWVMb2c8L2E+IDxhIG5hbWU9ImNvb2tpZWxvZyIgaWQ9ImNvb2tpZWxvZyI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2V0cyBmaWxlbmFtZSBmb3IgdGhlIGxvZ2dpbmcgb2YgY29va2llczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5Db29raWVMb2cgPHZhcj5maWxlbmFtZTwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfbG9nX2NvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdHk6PC9hPjwvdGg+PHRkPlRoaXMgZGlyZWN0aXZlIGlzIGRlcHJlY2F0ZWQuPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNvb2tpZUxvZzwvY29kZT4gZGlyZWN0aXZlIHNldHMgdGhlIAogICAgZmlsZW5hbWUgZm9yIGxvZ2dpbmcgb2YgY29va2llcy4gVGhlIGZpbGVuYW1lIGlzIHJlbGF0aXZlIHRvIHRoZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNzZXJ2ZXJyb290Ij5TZXJ2ZXJSb290PC9hPjwvY29kZT4uIFRoaXMgZGlyZWN0aXZlIGlzCiAgICBpbmNsdWRlZCBvbmx5IGZvciBjb21wYXRpYmlsaXR5IHdpdGggPGNvZGU+bW9kX2Nvb2tpZXM8L2NvZGU+LAogICAgYW5kIGlzIGRlcHJlY2F0ZWQuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkN1c3RvbUxvZyIgaWQ9IkN1c3RvbUxvZyI+Q3VzdG9tTG9nPC9hPiA8YSBuYW1lPSJjdXN0b21sb2ciIGlkPSJjdXN0b21sb2ciPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNldHMgZmlsZW5hbWUgYW5kIGZvcm1hdCBvZiBsb2cgZmlsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5DdXN0b21Mb2cgIDx2YXI+ZmlsZTwvdmFyPnw8dmFyPnBpcGU8L3Zhcj4KPHZhcj5mb3JtYXQ8L3Zhcj58PHZhcj5uaWNrbmFtZTwvdmFyPgpbZW52PVshXTx2YXI+ZW52aXJvbm1lbnQtdmFyaWFibGU8L3Zhcj5dPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9sb2dfY29uZmlnPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkN1c3RvbUxvZzwvY29kZT4gZGlyZWN0aXZlIGlzIHVzZWQgdG8KICAgIGxvZyByZXF1ZXN0cyB0byB0aGUgc2VydmVyLiBBIGxvZyBmb3JtYXQgaXMgc3BlY2lmaWVkLCBhbmQgdGhlCiAgICBsb2dnaW5nIGNhbiBvcHRpb25hbGx5IGJlIG1hZGUgY29uZGl0aW9uYWwgb24gcmVxdWVzdAogICAgY2hhcmFjdGVyaXN0aWNzIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy48L3A+CgogICAgPHA+VGhlIGZpcnN0IGFyZ3VtZW50LCB3aGljaCBzcGVjaWZpZXMgdGhlIGxvY2F0aW9uIHRvIHdoaWNoCiAgICB0aGUgbG9ncyB3aWxsIGJlIHdyaXR0ZW4sIGNhbiB0YWtlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHR3bwogICAgdHlwZXMgb2YgdmFsdWVzOjwvcD4KCiAgICA8ZGw+CiAgICAgIDxkdD48dmFyPmZpbGU8L3Zhcj48L2R0PgogICAgICA8ZGQ+QSBmaWxlbmFtZSwgcmVsYXRpdmUgdG8gdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjc2VydmVycm9vdCI+U2VydmVyUm9vdDwvYT48L2NvZGU+LjwvZGQ+CgogICAgICA8ZHQ+PHZhcj5waXBlPC92YXI+PC9kdD4KICAgICAgPGRkPlRoZSBwaXBlIGNoYXJhY3RlciAiPGNvZGU+fDwvY29kZT4iLCBmb2xsb3dlZCBieSB0aGUgcGF0aAogICAgICB0byBhIHByb2dyYW0gdG8gcmVjZWl2ZSB0aGUgbG9nIGluZm9ybWF0aW9uIG9uIGl0cyBzdGFuZGFyZAogICAgICBpbnB1dC4KCiAgICAgIDxkaXYgY2xhc3M9Indhcm5pbmciPjxoMz5TZWN1cml0eTo8L2gzPgogICAgICA8cD5JZiBhIHByb2dyYW0gaXMgdXNlZCwgdGhlbiBpdCB3aWxsIGJlIHJ1biBhcyB0aGUgdXNlciB3aG8KICAgICAgc3RhcnRlZCA8Y29kZSBjbGFzcz0icHJvZ3JhbSI+PGEgaHJlZj0iLi4vcHJvZ3JhbXMvaHR0cGQuaHRtbCI+aHR0cGQ8L2E+PC9jb2RlPi4gVGhpcyB3aWxsIGJlIHJvb3QgaWYgdGhlIHNlcnZlciB3YXMKICAgICAgc3RhcnRlZCBieSByb290OyBiZSBzdXJlIHRoYXQgdGhlIHByb2dyYW0gaXMgc2VjdXJlLjwvcD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Indhcm5pbmciPjxoMz5Ob3RlPC9oMz4KICAgICAgICA8cD5XaGVuIGVudGVyaW5nIGEgZmlsZSBwYXRoIG9uIG5vbi1Vbml4IHBsYXRmb3JtcywgY2FyZSBzaG91bGQgYmUgdGFrZW4KICAgICAgICB0byBtYWtlIHN1cmUgdGhhdCBvbmx5IGZvcndhcmQgc2xhc2hlZCBhcmUgdXNlZCBldmVuIHRob3VnaCB0aGUgcGxhdGZvcm0KICAgICAgICBtYXkgYWxsb3cgdGhlIHVzZSBvZiBiYWNrIHNsYXNoZXMuIEluIGdlbmVyYWwgaXQgaXMgYSBnb29kIGlkZWEgdG8gYWx3YXlzIAogICAgICAgIHVzZSBmb3J3YXJkIHNsYXNoZXMgdGhyb3VnaG91dCB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy48L3A+CiAgICAgIDwvZGl2PjwvZGQ+CiAgICA8L2RsPgoKICAgIDxwPlRoZSBzZWNvbmQgYXJndW1lbnQgc3BlY2lmaWVzIHdoYXQgd2lsbCBiZSB3cml0dGVuIHRvIHRoZQogICAgbG9nIGZpbGUuIEl0IGNhbiBzcGVjaWZ5IGVpdGhlciBhIDx2YXI+bmlja25hbWU8L3Zhcj4gZGVmaW5lZCBieQogICAgYSBwcmV2aW91cyA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbG9nZm9ybWF0Ij5Mb2dGb3JtYXQ8L2E+PC9jb2RlPgogICAgZGlyZWN0aXZlLCBvciBpdCBjYW4gYmUgYW4gZXhwbGljaXQgPHZhcj5mb3JtYXQ8L3Zhcj4gc3RyaW5nIGFzCiAgICBkZXNjcmliZWQgaW4gdGhlIDxhIGhyZWY9IiNmb3JtYXRzIj5sb2cgZm9ybWF0czwvYT4gc2VjdGlvbi48L3A+CgogICAgPHA+Rm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdHdvIHNldHMgb2YgZGlyZWN0aXZlcyBoYXZlCiAgICBleGFjdGx5IHRoZSBzYW1lIGVmZmVjdDo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICMgQ3VzdG9tTG9nIHdpdGggZm9ybWF0IG5pY2tuYW1lPGJyIC8+CiAgICAgIExvZ0Zvcm1hdCAiJWggJWwgJXUgJXQgXCIlclwiICUmZ3Q7cyAlYiIgY29tbW9uPGJyIC8+CiAgICAgIEN1c3RvbUxvZyBsb2dzL2FjY2Vzc19sb2cgY29tbW9uPGJyIC8+CiAgICAgIDxiciAvPgogICAgICAjIEN1c3RvbUxvZyB3aXRoIGV4cGxpY2l0IGZvcm1hdCBzdHJpbmc8YnIgLz4KICAgICAgQ3VzdG9tTG9nIGxvZ3MvYWNjZXNzX2xvZyAiJWggJWwgJXUgJXQgXCIlclwiICUmZ3Q7cyAlYiIKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+VGhlIHRoaXJkIGFyZ3VtZW50IGlzIG9wdGlvbmFsIGFuZCBjb250cm9scyB3aGV0aGVyIG9yCiAgICBub3QgdG8gbG9nIGEgcGFydGljdWxhciByZXF1ZXN0IGJhc2VkIG9uIHRoZQogICAgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiBhIHBhcnRpY3VsYXIgdmFyaWFibGUgaW4gdGhlIHNlcnZlcgogICAgZW52aXJvbm1lbnQuIElmIHRoZSBzcGVjaWZpZWQgPGEgaHJlZj0iLi4vZW52Lmh0bWwiPmVudmlyb25tZW50CiAgICB2YXJpYWJsZTwvYT4gaXMgc2V0IGZvciB0aGUgcmVxdWVzdCAob3IgaXMgbm90IHNldCwgaW4gdGhlIGNhc2UKICAgIG9mIGEgJzxjb2RlPmVudj0hPHZhcj5uYW1lPC92YXI+PC9jb2RlPicgY2xhdXNlKSwgdGhlbiB0aGUKICAgIHJlcXVlc3Qgd2lsbCBiZSBsb2dnZWQuPC9wPgoKICAgIDxwPkVudmlyb25tZW50IHZhcmlhYmxlcyBjYW4gYmUgc2V0IG9uIGEgcGVyLXJlcXVlc3QKICAgIGJhc2lzIHVzaW5nIHRoZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NldGVudmlmLmh0bWwiPm1vZF9zZXRlbnZpZjwvYT48L2NvZGU+CiAgICBhbmQvb3IgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9yZXdyaXRlLmh0bWwiPm1vZF9yZXdyaXRlPC9hPjwvY29kZT4gbW9kdWxlcy4gRm9yCiAgICBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byByZWNvcmQgcmVxdWVzdHMgZm9yIGFsbCBHSUYKICAgIGltYWdlcyBvbiB5b3VyIHNlcnZlciBpbiBhIHNlcGFyYXRlIGxvZ2ZpbGUgYnV0IG5vdCBpbiB5b3VyIG1haW4KICAgIGxvZywgeW91IGNhbiB1c2U6PC9wPgogICAgCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgU2V0RW52SWYgUmVxdWVzdF9VUkkgXC5naWYkIGdpZi1pbWFnZTxiciAvPgogICAgICBDdXN0b21Mb2cgZ2lmLXJlcXVlc3RzLmxvZyBjb21tb24gZW52PWdpZi1pbWFnZTxiciAvPgogICAgICBDdXN0b21Mb2cgbm9uZ2lmLXJlcXVlc3RzLmxvZyBjb21tb24gZW52PSFnaWYtaW1hZ2UKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+T3IsIHRvIHJlcHJvZHVjZSB0aGUgYmVoYXZpb3Igb2YgdGhlIG9sZCBSZWZlcmVySWdub3JlCiAgICBkaXJlY3RpdmUsIHlvdSBtaWdodCB1c2UgdGhlIGZvbGxvd2luZzo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICBTZXRFbnZJZiBSZWZlcmVyIGV4YW1wbGVcLmNvbSBsb2NhbHJlZmVyZXI8YnIgLz4KICAgIEN1c3RvbUxvZyByZWZlcmVyLmxvZyByZWZlcmVyIGVudj0hbG9jYWxyZWZlcmVyCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkxvZ0Zvcm1hdCIgaWQ9IkxvZ0Zvcm1hdCI+TG9nRm9ybWF0PC9hPiA8YSBuYW1lPSJsb2dmb3JtYXQiIGlkPSJsb2dmb3JtYXQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkRlc2NyaWJlcyBhIGZvcm1hdCBmb3IgdXNlIGluIGEgbG9nIGZpbGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+TG9nRm9ybWF0IDx2YXI+Zm9ybWF0PC92YXI+fDx2YXI+bmlja25hbWU8L3Zhcj4KWzx2YXI+bmlja25hbWU8L3Zhcj5dPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkxvZ0Zvcm1hdCAiJWggJWwgJXUgJXQgXCIlclwiICUmZ3Q7cyAlYiI8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2xvZ19jb25maWc8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBzcGVjaWZpZXMgdGhlIGZvcm1hdCBvZiB0aGUgYWNjZXNzIGxvZwogICAgZmlsZS48L3A+CgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkxvZ0Zvcm1hdDwvY29kZT4gZGlyZWN0aXZlIGNhbiB0YWtlIG9uZSBvZiB0d28KICAgIGZvcm1zLiBJbiB0aGUgZmlyc3QgZm9ybSwgd2hlcmUgb25seSBvbmUgYXJndW1lbnQgaXMgc3BlY2lmaWVkLAogICAgdGhpcyBkaXJlY3RpdmUgc2V0cyB0aGUgbG9nIGZvcm1hdCB3aGljaCB3aWxsIGJlIHVzZWQgYnkgbG9ncwogICAgc3BlY2lmaWVkIGluIHN1YnNlcXVlbnQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+VHJhbnNmZXJMb2c8L2NvZGU+CiAgICBkaXJlY3RpdmVzLiBUaGUgc2luZ2xlIGFyZ3VtZW50IGNhbiBzcGVjaWZ5IGFuIGV4cGxpY2l0CiAgICA8dmFyPmZvcm1hdDwvdmFyPiBhcyBkaXNjdXNzZWQgaW4gdGhlIDxhIGhyZWY9IiNmb3JtYXRzIj5jdXN0b20gbG9nCiAgICBmb3JtYXRzPC9hPiBzZWN0aW9uIGFib3ZlLiBBbHRlcm5hdGl2ZWx5LCBpdCBjYW4gdXNlIGEKICAgIDx2YXI+bmlja25hbWU8L3Zhcj4gdG8gcmVmZXIgdG8gYSBsb2cgZm9ybWF0IGRlZmluZWQgaW4gYQogICAgcHJldmlvdXMgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TG9nRm9ybWF0PC9jb2RlPiBkaXJlY3RpdmUgYXMgZGVzY3JpYmVkCiAgICBiZWxvdy48L3A+CgogICAgPHA+VGhlIHNlY29uZCBmb3JtIG9mIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5Mb2dGb3JtYXQ8L2NvZGU+IAogICAgZGlyZWN0aXZlIGFzc29jaWF0ZXMgYW4gZXhwbGljaXQgPHZhcj5mb3JtYXQ8L3Zhcj4gd2l0aCBhCiAgICA8dmFyPm5pY2tuYW1lPC92YXI+LiBUaGlzIDx2YXI+bmlja25hbWU8L3Zhcj4gY2FuIHRoZW4gYmUgdXNlZCBpbgogICAgc3Vic2VxdWVudCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5Mb2dGb3JtYXQ8L2NvZGU+IG9yCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjY3VzdG9tbG9nIj5DdXN0b21Mb2c8L2E+PC9jb2RlPiBkaXJlY3RpdmVzCiAgICByYXRoZXIgdGhhbiByZXBlYXRpbmcgdGhlIGVudGlyZSBmb3JtYXQgc3RyaW5nLiBBCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5Mb2dGb3JtYXQ8L2NvZGU+IGRpcmVjdGl2ZSB0aGF0IGRlZmluZXMgYSBuaWNrbmFtZQogICAgPHN0cm9uZz5kb2VzIG5vdGhpbmcgZWxzZTwvc3Ryb25nPiAtLSB0aGF0IGlzLCBpdCA8ZW0+b25seTwvZW0+CiAgICBkZWZpbmVzIHRoZSBuaWNrbmFtZSwgaXQgZG9lc24ndCBhY3R1YWxseSBhcHBseSB0aGUgZm9ybWF0IGFuZCBtYWtlCiAgICBpdCB0aGUgZGVmYXVsdC4gVGhlcmVmb3JlLCBpdCB3aWxsIG5vdCBhZmZlY3Qgc3Vic2VxdWVudAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3RyYW5zZmVybG9nIj5UcmFuc2ZlckxvZzwvYT48L2NvZGU+IGRpcmVjdGl2ZXMuCiAgICBJbiBhZGRpdGlvbiwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TG9nRm9ybWF0PC9jb2RlPiBjYW5ub3QgdXNlIG9uZSBuaWNrbmFtZQogICAgdG8gZGVmaW5lIGFub3RoZXIgbmlja25hbWUuIE5vdGUgdGhhdCB0aGUgbmlja25hbWUgc2hvdWxkIG5vdCBjb250YWluCiAgICBwZXJjZW50IHNpZ25zICg8Y29kZT4lPC9jb2RlPikuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlPC9oMz48cD48Y29kZT4KICAgICAgTG9nRm9ybWF0ICIldiAlaCAlbCAldSAldCBcIiVyXCIgJSZndDtzICViIiB2aG9zdF9jb21tb24KICAgIDwvY29kZT48L3A+PC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iVHJhbnNmZXJMb2ciIGlkPSJUcmFuc2ZlckxvZyI+VHJhbnNmZXJMb2c8L2E+IDxhIG5hbWU9InRyYW5zZmVybG9nIiBpZD0idHJhbnNmZXJsb2ciPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNwZWNpZnkgbG9jYXRpb24gb2YgYSBsb2cgZmlsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5UcmFuc2ZlckxvZyA8dmFyPmZpbGU8L3Zhcj58PHZhcj5waXBlPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9sb2dfY29uZmlnPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhpcyBkaXJlY3RpdmUgaGFzIGV4YWN0bHkgdGhlIHNhbWUgYXJndW1lbnRzIGFuZCBlZmZlY3QgYXMKICAgIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjY3VzdG9tbG9nIj5DdXN0b21Mb2c8L2E+PC9jb2RlPgogICAgZGlyZWN0aXZlLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgbG9nIGZvcm1hdAogICAgdG8gYmUgc3BlY2lmaWVkIGV4cGxpY2l0bHkgb3IgZm9yIGNvbmRpdGlvbmFsIGxvZ2dpbmcgb2YgcmVxdWVzdHMuCiAgICBJbnN0ZWFkLCB0aGUgbG9nIGZvcm1hdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBtb3N0IHJlY2VudGx5IHNwZWNpZmllZAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2xvZ2Zvcm1hdCI+TG9nRm9ybWF0PC9hPjwvY29kZT4gZGlyZWN0aXZlCiAgICB3aGljaCBkb2VzIG5vdCBkZWZpbmUgYSBuaWNrbmFtZS4gQ29tbW9uIExvZyBGb3JtYXQgaXMgdXNlZCBpZiBubwogICAgb3RoZXIgZm9ybWF0IGhhcyBiZWVuIHNwZWNpZmllZC48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICBMb2dGb3JtYXQgIiVoICVsICV1ICV0IFwiJXJcIiAlJmd0O3MgJWIgXCIle1JlZmVyZXJ9aVwiIFwiJXtVc2VyLWFnZW50fWlcIiI8YnIgLz4KICAgICAgVHJhbnNmZXJMb2cgbG9ncy9hY2Nlc3NfbG9nCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJib3R0b21sYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2VuL21vZC9tb2RfbG9nX2NvbmZpZy5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vamEvbW9kL21vZF9sb2dfY29uZmlnLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vbW9kL21vZF9sb2dfY29uZmlnLmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDE5OTUtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gb3IgaXRzIGxpY2Vuc29ycywgYXMgYXBwbGljYWJsZS48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSIuLi9mYXEvIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCI+R2xvc3Nhcnk8L2E+IHwgPGEgaHJlZj0iLi4vc2l0ZW1hcC5odG1sIj5TaXRlbWFwPC9hPjwvcD48L2Rpdj4KPC9ib2R5PjwvaHRtbD4=