PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJmciIgeG1sOmxhbmc9ImZyIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5GaWNoaWVycyBkZSBjb25maWd1cmF0aW9uIC0gU2VydmV1ciBBcGFjaGUgSFRUUCBWZXJzaW9uIDIuNTwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4vc3R5bGUvY3NzL21hbnVhbC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJNYWluIHN0eWxlc2hlZXQiIC8+CjxsaW5rIGhyZWY9Ii4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi9zdHlsZS9jc3MvcHJldHRpZnkuY3NzIiAvPgo8c2NyaXB0IHNyYz0iLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHkgaWQ9Im1hbnVhbC1wYWdlIj48ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi9tb2QvcXVpY2tyZWZlcmVuY2UuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4vZ2xvc3NhcnkuaHRtbCI+R2xvc3NhaXJlPC9hPiB8IDxhIGhyZWY9Ii4vc2l0ZW1hcC5odG1sIj5QbGFuIGR1IHNpdGU8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5TZXJ2ZXVyIEFwYWNoZSBIVFRQIFZlcnNpb24gMi41PC9wPgo8aW1nIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL2ZlYXRoZXIucG5nIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4vaW1hZ2VzL2xlZnQuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBpZD0icGF0aCI+CjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFwYWNoZTwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iPlNlcnZldXIgSFRUUDwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLyI+VmVyc2lvbiAyLjU8L2E+PC9kaXY+PGRpdiBpZD0icGFnZS1jb250ZW50Ij48ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb248L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+TGFuZ3VlcyBEaXNwb25pYmxlczogPC9zcGFuPjxhIGhyZWY9Ii4vZGUvY29uZmlndXJpbmcuaHRtbCIgaHJlZmxhbmc9ImRlIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkRldXRzY2giPiZuYnNwO2RlJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZW4vY29uZmlndXJpbmcuaHRtbCIgaHJlZmxhbmc9ImVuIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZnIvY29uZmlndXJpbmcuaHRtbCIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2phL2NvbmZpZ3VyaW5nLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9rby9jb25maWd1cmluZy5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL3RyL2NvbmZpZ3VyaW5nLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+Cgo8cD5DZSBkb2N1bWVudCBk6WNyaXQgbGVzIGZpY2hpZXJzIHV0aWxpc+lzIHBvdXIgY29uZmlndXJlcgpsZSBTZXJ2ZXVyIEhUVFAgQXBhY2hlLjwvcD4KPC9kaXY+CjxkaXYgaWQ9InF1aWNrdmlldyI+PHVsIGlkPSJ0b2MiPjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbWFpbiI+RmljaGllcnMgZGUgY29uZmlndXJhdGlvbiBwcmluY2lwYXV4PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjc3ludGF4Ij5TeW50YXhlIGRlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbW9kdWxlcyI+TW9kdWxlczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3Njb3BlIj5Qb3J06WUgZGVzIGRpcmVjdGl2ZXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNodGFjY2VzcyI+RmljaGllcnMgLmh0YWNjZXNzPC9hPjwvbGk+CjwvdWw+PGgzPlZvaXIgYXVzc2k8L2gzPjx1bCBjbGFzcz0ic2VlYWxzbyI+PGxpPjxhIGhyZWY9IiNjb21tZW50c19zZWN0aW9uIj5Db21tZW50YWlyZXM8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9Im1haW4iIGlkPSJtYWluIj5GaWNoaWVycyBkZSBjb25maWd1cmF0aW9uIHByaW5jaXBhdXg8L2E+PC9oMj4KICAgIAogICAgPHRhYmxlIGNsYXNzPSJyZWxhdGVkIj48dHI+PHRoPk1vZHVsZXMgQXBwYXJlbnTpczwvdGg+PHRoPkRpcmVjdGl2ZXMgQXBwYXJlbnTpZXM8L3RoPjwvdHI+PHRyPjx0ZD48dWw+PGxpPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9taW1lLmh0bWwiPm1vZF9taW1lPC9hPjwvY29kZT48L2xpPjwvdWw+PC90ZD48dGQ+PHVsPjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjaWZkZWZpbmUiPiZsdDtJZkRlZmluZSZndDs8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNpbmNsdWRlIj5JbmNsdWRlPC9hPjwvY29kZT48L2xpPjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9tb2RfbWltZS5odG1sI3R5cGVzY29uZmlnIj5UeXBlc0NvbmZpZzwvYT48L2NvZGU+PC9saT48L3VsPjwvdGQ+PC90cj48L3RhYmxlPgoKICAgIDxwPkxhIGNvbmZpZ3VyYXRpb24gZHUgc2VydmV1ciBIVFRQIEFwYWNoZSBlc3QgZWZmZWN0dellIGVuIHBsYedhbnQgZGVzIDxhIGhyZWY9Im1vZC9kaXJlY3RpdmVzLmh0bWwiPmRpcmVjdGl2ZXM8L2E+IGRhbnMgZGVzIGZpY2hpZXJzIGRlCiAgICBjb25maWd1cmF0aW9uIGF1IGZvcm1hdCB0ZXh0ZS4gTGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIHByaW5jaXBhbCBzZSBub21tZQogICAgZW4gZ+lu6XJhbAogICAgPGNvZGU+aHR0cGQuY29uZjwvY29kZT4uIExhIGxvY2FsaXNhdGlvbiBkZSBjZSBmaWNoaWVyIGVzdCBk6WZpbmllCiAgICDgIGxhIGNvbXBpbGF0aW9uLCBtYWlzIHBldXQg6nRyZSByZWTpZmluaWUg4CBsJ2FpZGUgZGUgbCdvcHRpb24KICAgIGRlIGxpZ25lIGRlIGNvbW1hbmRlIDxjb2RlPi1mPC9jb2RlPi4gRW4gb3V0cmUsIGQnYXV0cmVzIGZpY2hpZXJzIGRlCiAgICBjb25maWd1cmF0aW9uIHBldXZlbnQg6nRyZSBham91dOlzIOAgbCdhaWRlIGRlIGxhIGRpcmVjdGl2ZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvY29yZS5odG1sI2luY2x1ZGUiPkluY2x1ZGU8L2E+PC9jb2RlPiwgZXQgZGVzIGNhcmFjdOhyZXMgZGUKICAgIHJlbXBsYWNlbWVudAogICAgcGV1dmVudCDqdHJlIHV0aWxpc+lzIHBvdXIgaW5jbHVyZSBkZSBub21icmV1eCBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uLgogICAgRGVzIGRpcmVjdGl2ZXMgZGUgdG91cyB0eXBlcyBwZXV2ZW50IOp0cmUgcGxhY+llcyBkYW5zIGNoYWN1biBkZSBjZXMgZmljaGllcnMKICAgIGRlIGNvbmZpZ3VyYXRpb24uICBMZXMgbW9kaWZpY2F0aW9ucyBkYW5zIGxlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uCiAgICBwcmluY2lwYXV4IG5lIHNvbnQgcHJpc2VzIGVuIGNvbXB0ZSBwYXIgaHR0cGQgcXVlIGxvcnNxdWUgbGUgc2VydmV1cgogICAgZXN0IGTpbWFycukgb3UgcmVk6W1hcnLpLjwvcD4KCiAgICA8cD5MZSBzZXJ2ZXVyIGxpdCBhdXNzaSB1biBmaWNoaWVyIGNvbnRlbmFudCBsZXMgdHlwZXMgZGUgZG9jdW1lbnQgbWltZTsKICAgIGNlIGZpY2hpZXIgZXN0IGTpZmluaSBwYXIgbGEgZGlyZWN0aXZlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL21vZF9taW1lLmh0bWwjdHlwZXNjb25maWciPlR5cGVzQ29uZmlnPC9hPjwvY29kZT4sCiAgICBldCBzZSBub21tZSA8Y29kZT5taW1lLnR5cGVzPC9jb2RlPiBwYXIgZOlmYXV0LjwvcD4KICA8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InN5bnRheCIgaWQ9InN5bnRheCI+U3ludGF4ZSBkZXMgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbjwvYT48L2gyPgogICAgCgogICAgPHA+TGVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24gZGUgaHR0cGQgY29udGllbm5lbnQgdW5lIGRpcmVjdGl2ZQogICAgcGFyIGxpZ25lLgogICAgT24gcGV1dCB1dGlsaXNlciBsJ2FudGktc2xhc2ggIlwiIGNvbW1lIGRlcm5pZXIgY2FyYWN06HJlIGQndW5lIGxpZ25lCiAgICBwb3VyIGluZGlxdWVyIHF1ZSBsYSBkaXJlY3RpdmUgY29udGludWUg4CBsYSBsaWduZSBzdWl2YW50ZS4KICAgIElsIG5lIGRvaXQgeSBhdm9pciBhdWN1biBjYXJhY3TocmUgbmkgZXNwYWNlIGVudHJlIGwnYW50aS1zbGFzaCBldAogICAgbGEgZmluIGRlIGxhIGxpZ25lLjwvcD4KCiAgICA8cD5MZXMgYXJndW1lbnRzIGRlcyBkaXJlY3RpdmVzIHNvbnQgc+lwYXLpcyBsZXMgdW5zIGRlcyBhdXRyZXMgcGFyCiAgICBkZXMgZXNwYWNlcy4gU2kgdW4gYXJndW1lbnQgY29udGllbnQgZGVzIGVzcGFjZXMsIGlsIGRvaXQg6nRyZQogICAgZW50b3Vy6SBkZSBndWlsbGVtZXRzLjwvcD4KCiAgICA8cD5MZXMgZGlyZWN0aXZlcyBkYW5zIGxlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uIG5lIHNvbnQgcGFzCiAgICBzZW5zaWJsZXMg4CBsYSBjYXNzZSwgbWFpcyBsZXVycyBhcmd1bWVudHMgbGUgc29udCBzb3V2ZW50LiBMZXMgbGlnbmVzCiAgICBxdWkgZOlidXRlbnQgcGFyIGxlIGNhcmFjdOhyZSAiIyIgc29udCBpbnRlcnBy6XTpZXMgY29tbWUgZGVzCiAgICBjb21tZW50YWlyZXMsIGV0IHNvbnQgaWdub3LpZXMuIExlcyBjb21tZW50YWlyZXMgbmUgZG9pdmVudAogICAgPHN0cm9uZz5wYXM8L3N0cm9uZz4gYXBwYXJh7nRyZSBzdXIgbGEgbeptZSBsaWduZSBxdSd1bmUgZGlyZWN0aXZlCiAgICBkZSBjb25maWd1cmF0aW9uLiBMZXMgZXNwYWNlcyBwculj6WRhbnQgdW5lIGRpcmVjdGl2ZQogICAgc29udCBpZ25vculzOyB2b3VzIHBvdXZleiBwYXIgY29uc+lxdWVudCBpbmRlbnRlciBsZXMgZGlyZWN0aXZlcwogICAgYWZpbiBkJ2Ft6Wxpb3JlciBsYSBsaXNpYmlsaXTpLiBMZXMgbGlnbmVzIHZpZGVzIHNvbnQKICAgIGF1c3NpIGlnbm9y6WVzLjwvcD4KCiAgICA8cD5MZXMgdmFsZXVycyBkZXMgdmFyaWFibGVzIGQnZW52aXJvbm5lbWVudCBvdSBkZXMgdmFyaWFibGVzCiAgICBk6WZpbmllcyB2aWEgbGEgZGlyZWN0aXZlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNkZWZpbmUiPkRlZmluZTwvYT48L2NvZGU+IHBldXZlbnQg6nRyZSB1dGlsaXPpZXMgZGFucyBsZQogICAgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGVuIHV0aWxpc2FudCBsYSBzeW50YXhlCiAgICA8Y29kZT4ke1ZBUn08L2NvZGU+LiBTaSAiVkFSIiBlc3QgbGUgbm9tIGQndW5lIHZhcmlhYmxlIHZhbGlkZSwgbGEKICAgIHZhbGV1ciBkZSBsYSB2YXJpYWJsZSBlc3QgYWxvcnMgc3Vic3RpdHXpZSDgIGxhIGNoYe5uZQogICAgPGNvZGU+JHtWQVJ9PC9jb2RlPiwgZXQgbGUgcHJvY2Vzc3VzIGRlIGxlY3R1cmUgZHUgZmljaGllciBkZQogICAgY29uZmlndXJhdGlvbiBjb250aW51ZSBjb21tZSBzaSBsYSBjaGHubmUgY29ycmVzcG9uZGFudCDgIGxhIHZhbGV1cgogICAgZGUgbGEgdmFyaWFibGUgcyd5IOl0YWl0IHRyb3V26WUgbGl0dOlyYWxlbWVudC4gTGVzIHZhcmlhYmxlcyBk6WZpbmllcwogICAgdmlhIGxhIGRpcmVjdGl2ZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjZGVmaW5lIj5EZWZpbmU8L2E+PC9jb2RlPgogICAgbCdlbXBvcnRlbnQgc3VyIGxlcyBhdXRyZXMgdmFyaWFibGVzIGQnZW52aXJvbm5lbWVudCBkdSBzaGVsbC4gU2kgbGEKICAgIHZhcmlhYmxlICJWQVIiIG4nZXN0IHBhcyB0cm91dullLCBsYSBjaGHubmUgPGNvZGU+JHtWQVJ9PC9jb2RlPgogICAgbidlc3QgcGFzIG1vZGlmaellLCBldCB1biBhdmVydGlzc2VtZW50IGVzdCBlbnJlZ2lzdHLpIGRhbnMgbGUKICAgIGpvdXJuYWwuIExlIGNhcmFjdOhyZSAiOiIgZXN0IGludGVyZGl0IGRhbnMgbGVzIG5vbXMgZGUgdmFyaWFibGVzCiAgICBhZmluIGQn6XZpdGVyIHRvdXQgY29uZmxpdCBhdmVjIGxhIHN5bnRheGUgZGUgbGEgZGlyZWN0aXZlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL21vZF9yZXdyaXRlLmh0bWwjcmV3cml0ZW1hcCI+UmV3cml0ZU1hcDwvYT48L2NvZGU+LjwvcD4KCiAgICA8cD5TZXVsZXMgbGVzIHZhcmlhYmxlcyBkJ2Vudmlyb25uZW1lbnQgZHUgc2hlbGwgZOlmaW5pZXMgYXZhbnQgbGUgZOltYXJyYWdlCiAgICBkdSBzZXJ2ZXVyIHBldXZlbnQg6nRyZSB1dGlsaXPpZXMgZGFucyBsZXMgZXh0ZW5zaW9ucy4KICAgIExlcyB2YXJpYWJsZXMgZCdlbnZpcm9ubmVtZW50CiAgICBk6WZpbmllcyBkYW5zIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBsdWktbeptZSwgcGFyIGV4ZW1wbGUgYXZlYyA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9tb2RfZW52Lmh0bWwjc2V0ZW52Ij5TZXRFbnY8L2E+PC9jb2RlPiwgcHJlbm5lbnQgZWZmZXQgdHJvcCB0YXJkIHBvdXIKICAgIHBvdXZvaXIg6nRyZSB1dGlsaXPpZXMgZGFucyBsZXMgZXh0ZW5zaW9ucyBhdSBzZWluIGR1IGZpY2hpZXIgZGUKICAgIGNvbmZpZ3VyYXRpb24uPC9wPgoKICAgIDxwPkxhIGxvbmd1ZXVyIG1heGltYWxlIGQndW5lIGxpZ25lIGRhbnMgdW4gZmljaGllciBkZSBjb25maWd1cmF0aW9uCiAgICBub3JtYWwsIGFwcuhzIHN1YnN0aXR1dGlvbiBkZXMgdmFyaWFibGVzIGV0IGZ1c2lvbiBkZXMgbGlnbmVzCiAgICBpbnRlcnJvbXB1ZXMsIGVzdCBhcHByb3hpbWF0aXZlbWVudCBkZSAxNiBNby4gRGFucyBsZXMgPGEgaHJlZj0iY29uZmlndXJpbmcuaHRtbCNodGFjY2VzcyI+ZmljaGllcnMgLmh0YWNjZXNzPC9hPiwgbGEgbG9uZ3VldXIKICAgIG1heGltYWxlIGVzdCBkZSA4MTkwIGNhcmFjdOhyZXMuPC9wPgoKICAgIDxwPlZvdXMgcG91dmV6IHbpcmlmaWVyIGwnYWJzZW5jZSBkJ2VycmV1cnMgZGUgc3ludGF4ZSBkYW5zIHZvcyBmaWNoaWVycwogICAgZGUgY29uZmlndXJhdGlvbiBzYW5zIGTpbWFycmVyIGxlIHNlcnZldXIg4CBsJ2FpZGUgZGUgbGEgY29tbWFuZGUKICAgIDxjb2RlPmFwYWNoZWN0bCBjb25maWd0ZXN0PC9jb2RlPiBvdSBkZSBsJ29wdGlvbiBkZSBsaWduZSBkZSBjb21tYW5kZQogICAgPGNvZGU+LXQ8L2NvZGU+LjwvcD4KCiAgICA8cD5Wb3VzIHBvdXZleiB1dGlsaXNlciBsYSBk6WZpbml0aW9uIDxjb2RlPi1ERFVNUF9DT05GSUc8L2NvZGU+IGRlCiAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9tb2RfaW5mby5odG1sIj5tb2RfaW5mbzwvYT48L2NvZGU+IHBvdXIgYWZmaWNoZXIgbGEgY29uZmlndXJhdGlvbiBhdmVjIHRvdXMKICAgIGxlcyBmaWNoaWVycyBpbmNsdXMgZXQgbGVzIHZhcmlhYmxlcyBkJ2Vudmlyb25uZW1lbnQg6XZhbHXpZXMsIHRvdXMKICAgIGxlcyBjb21tZW50YWlyZXMgZXQgbGVzIHNlY3Rpb25zIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNpZmRlZmluZSI+Jmx0O0lmRGVmaW5lJmd0OzwvYT48L2NvZGU+IGV0IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNpZm1vZHVsZSI+Jmx0O0lmTW9kdWxlJmd0OzwvYT48L2NvZGU+IG5vbiBhY3RpdmVzIGF5YW50CiAgICDpdOkgc3VwcHJpbelzLiBDZXBlbmRhbnQsIGxhIHNvcnRpZSBuZSByZWZs6HRlCiAgICBwYXMgbGVzIGZ1c2lvbnMgb3Ug6WNyYXNlbWVudHMgcG91dmFudCBpbnRlcnZlbmlyIGVuIGNhcyBkZQogICAgZOlmaW5pdGlvbnMgbXVsdGlwbGVzIGRlIGRpcmVjdGl2ZXMuPC9wPgogIDwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ibW9kdWxlcyIgaWQ9Im1vZHVsZXMiPk1vZHVsZXM8L2E+PC9oMj4KICAgIAoKICAgIDx0YWJsZSBjbGFzcz0icmVsYXRlZCI+PHRyPjx0aD5Nb2R1bGVzIEFwcGFyZW506XM8L3RoPjx0aD5EaXJlY3RpdmVzIEFwcGFyZW506WVzPC90aD48L3RyPjx0cj48dGQ+PHVsPjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9tb2Rfc28uaHRtbCI+bW9kX3NvPC9hPjwvY29kZT48L2xpPjwvdWw+PC90ZD48dGQ+PHVsPjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjaWZtb2R1bGUiPiZsdDtJZk1vZHVsZSZndDs8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL21vZF9zby5odG1sI2xvYWRtb2R1bGUiPkxvYWRNb2R1bGU8L2E+PC9jb2RlPjwvbGk+PC91bD48L3RkPjwvdHI+PC90YWJsZT4KCiAgICA8cD5odHRwZCBlc3QgdW4gc2VydmV1ciBtb2R1bGFpcmUuIENlY2kgaW1wbGlxdWUgcXVlIHNldWxlcyBsZXMKICAgIGZvbmN0aW9ubmFsaXTpcyBsZXMgcGx1cyBjb3VyYW50ZXMgc29udCBpbmNsdXNlcyBkYW5zIGxlIHNlcnZldXIgZGUgYmFzZS4KICAgIExlcyBmb25jdGlvbm5hbGl06XMg6XRlbmR1ZXMgc29udCBmb3VybmllcyDgIGwnYWlkZSBkZSA8YSBocmVmPSJtb2QvIj5tb2R1bGVzPC9hPiBxdWkgcGV1dmVudCDqdHJlIGNoYXJn6XMgZGFucyBodHRwZC4KICAgIFBhciBk6WZhdXQsIHVuIGpldSBkZSA8YSBocmVmPSJtb2QvbW9kdWxlLWRpY3QuaHRtbCNTdGF0dXMiPm1vZHVsZXMgZGUgYmFzZTwvYT4gZXN0IGluY2x1cyBkYW5zIGxlCiAgICBzZXJ2ZXVyIOAgbGEgY29tcGlsYXRpb24uIFNpIGxlIHNlcnZldXIgZXN0IGNvbXBpbOkgZGUgZmHnb24g4CB1dGlsaXNlcgogICAgbGVzIDxhIGhyZWY9ImRzby5odG1sIj5tb2R1bGVzIGNoYXJn6XMgZHluYW1pcXVlbWVudDwvYT4sCiAgICBhbG9ycyBsZXMgbW9kdWxlcyBwZXV2ZW50IOp0cmUgY29tcGls6XMgc+lwYXLpbWVudCBldCBjaGFyZ+lzIOAKICAgIG4naW1wb3J0ZSBxdWVsIG1vbWVudCDgIGwnYWlkZSBkZSBsYSBkaXJlY3RpdmUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL21vZF9zby5odG1sI2xvYWRtb2R1bGUiPkxvYWRNb2R1bGU8L2E+PC9jb2RlPi4KICAgIERhbnMgbGUgY2FzIGNvbnRyYWlyZSwgaHR0cGQgZG9pdCDqdHJlIHJlY29tcGls6SBwb3VyIGFqb3V0ZXIgb3UKICAgIHN1cHByaW1lciBkZXMgbW9kdWxlcy4KICAgIExlcyBkaXJlY3RpdmVzIGRlIGNvbmZpZ3VyYXRpb24gcGV1dmVudCDqdHJlIGluY2x1c2VzIGRlIG1hbmnocmUKICAgIGNvbmRpdGlvbm5lbGxlIHNlbG9uIGxhIHBy6XNlbmNlIG91IGwnYWJzZW5jZSBkJ3VuIG1vZHVsZSBwYXJ0aWN1bGllcgogICAgZW4gbGVzIHBsYedhbnQgZGFucyB1biBibG9jIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNpZm1vZHVsZSI+Jmx0O0lmTW9kdWxlJmd0OzwvYT48L2NvZGU+LjwvcD4KCiAgICA8cD5Qb3VyIHZvaXIgcXVlbHMgbW9kdWxlcyBvbnQg6XTpIGNvbXBpbOlzIGF2ZWMgbGUgc2VydmV1ciwKICAgIHZvdXMgcG91dmV6IHV0aWxpc2VyIGwnb3B0aW9uIGRlIGxpZ25lIGRlIGNvbW1hbmRlIDxjb2RlPi1sPC9jb2RlPi48L3A+CiAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJzY29wZSIgaWQ9InNjb3BlIj5Qb3J06WUgZGVzIGRpcmVjdGl2ZXM8L2E+PC9oMj4KICAgIAoKICAgIDx0YWJsZSBjbGFzcz0icmVsYXRlZCI+PHRyPjx0aD5Nb2R1bGVzIEFwcGFyZW506XM8L3RoPjx0aD5EaXJlY3RpdmVzIEFwcGFyZW506WVzPC90aD48L3RyPjx0cj48dGQgLz48dGQ+PHVsPjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjZGlyZWN0b3J5Ij4mbHQ7RGlyZWN0b3J5Jmd0OzwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvY29yZS5odG1sI2RpcmVjdG9yeW1hdGNoIj4mbHQ7RGlyZWN0b3J5TWF0Y2gmZ3Q7PC9hPjwvY29kZT48L2xpPjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjZmlsZXMiPiZsdDtGaWxlcyZndDs8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNmaWxlc21hdGNoIj4mbHQ7RmlsZXNNYXRjaCZndDs8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNsb2NhdGlvbiI+Jmx0O0xvY2F0aW9uJmd0OzwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvY29yZS5odG1sI2xvY2F0aW9ubWF0Y2giPiZsdDtMb2NhdGlvbk1hdGNoJmd0OzwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvY29yZS5odG1sI3ZpcnR1YWxob3N0Ij4mbHQ7VmlydHVhbEhvc3QmZ3Q7PC9hPjwvY29kZT48L2xpPjwvdWw+PC90ZD48L3RyPjwvdGFibGU+CgogICAgPHA+TGVzIGRpcmVjdGl2ZXMgcGxhY+llcyBkYW5zIGxlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uIHByaW5jaXBhdXgKICAgIHMnYXBwbGlxdWVudCBhdSBzZXJ2ZXVyIGRhbnMgc29uIGVuc2VtYmxlLiBTaSB2b3VzIHNvdWhhaXRleiBtb2RpZmllciBsYQogICAgY29uZmlndXJhdGlvbiBkJ3VuZSBwYXJ0aWUgZHUgc2VydmV1ciBzZXVsZW1lbnQsIHZvdXMgcG91dmV6IGxpbWl0ZXIgbGEKICAgIHBvcnTpZSBkZSB2b3MgZGlyZWN0aXZlcyBlbiBsZXMgcGxh52FudCBkYW5zIHVuZSBzZWN0aW9uCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjZGlyZWN0b3J5Ij4mbHQ7RGlyZWN0b3J5Jmd0OzwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjZGlyZWN0b3J5bWF0Y2giPiZsdDtEaXJlY3RvcnlNYXRjaCZndDs8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvY29yZS5odG1sI2ZpbGVzIj4mbHQ7RmlsZXMmZ3Q7PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNmaWxlc21hdGNoIj4mbHQ7RmlsZXNNYXRjaCZndDs8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvY29yZS5odG1sI2xvY2F0aW9uIj4mbHQ7TG9jYXRpb24mZ3Q7PC9hPjwvY29kZT4sIG91IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNsb2NhdGlvbm1hdGNoIj4mbHQ7TG9jYXRpb25NYXRjaCZndDs8L2E+PC9jb2RlPi4KICAgIENlcyBzZWN0aW9ucyBsaW1pdGVudCBsZSBjaGFtcCBkJ2FwcGxpY2F0aW9uIGRlcyBkaXJlY3RpdmVzIHF1J2VsbGVzCiAgICBjb250aWVubmVudCDgIGRlcyBVUmxzIG91IGRlcyBwb3J0aW9ucyBkdSBzeXN06G1lIGRlIGZpY2hpZXJzIHBhcnRpY3VsaehyZXMuCiAgICBFbGxlcyBwZXV2ZW50IGF1c3NpIOp0cmUgaW1icmlxdellcywgY2UgcXVpIHBlcm1ldAogICAgdW5lIGNvbmZpZ3VyYXRpb24gdHLocyBmaW5lLjwvcD4KCiAgICA8cD5odHRwZCBwZXV0IHNlcnZpciBzaW11bHRhbultZW50IGRlIG5vbWJyZXV4IHNpdGVzIHdlYiBhdSB0cmF2ZXJzIGRlcwogICAgPGEgaHJlZj0idmhvc3RzLyI+SPR0ZXMgVmlydHVlbHM8L2E+LiBMYSBwb3J06WUgZGVzIGRpcmVjdGl2ZXMgcGV1dCBhaW5zaQogICAg6nRyZSBsaW1pdOllIGVuIGxlcyBwbGHnYW50IGRhbnMgZGVzIHNlY3Rpb25zCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjdmlydHVhbGhvc3QiPiZsdDtWaXJ0dWFsSG9zdCZndDs8L2E+PC9jb2RlPiwKICAgIGFmaW4gcXUnZWxsZXMgbmUgcydhcHBsaXF1ZW50IHF1J2F1eCByZXF16nRlcwogICAgcG91ciB1biBzaXRlIHdlYiBwYXJ0aWN1bGllci48L3A+CgogICAgPHA+QmllbiBxdWUgbGEgcGx1cGFydCBkZXMgZGlyZWN0aXZlcyBwdWlzc2VudCDqdHJlIHBsYWPpZXMgZGFucwogICAgY2hhY3VuZSBkZSBjZXMgc2VjdGlvbnMsIGNlcnRhaW5lcyBkJ2VudHJlIGVsbGVzIG4nb250IGF1Y3VuIHNlbnMKICAgIGRhbnMgY2VydGFpbnMgY29udGV4dGVzLgogICAgUGFyIGV4ZW1wbGUsIGxlcyBkaXJlY3RpdmVzIHF1aSBjb250cvRsZW50IGxhIGNy6WF0aW9uIGRlcyBwcm9jZXNzdXMKICAgIG4nb250IGRlIHNlbnMgcXVlIGRhbnMgbGUgY29udGV4dGUgZHUgc2VydmV1ciBwcmluY2lwYWwuIFBvdXIgZOl0ZXJtaW5lcgogICAgcXVlbGxlcyBkaXJlY3RpdmVzIHBldXZlbnQg6nRyZSBwbGFj6WVzIGRhbnMgcXVlbGxlcyBzZWN0aW9ucywgY29uc3VsdGV6CiAgICBsZSA8YSBocmVmPSJtb2QvZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0ZTwvYT4gZGUgbGEKICAgIGRpcmVjdGl2ZS4gUG91ciBwbHVzIGQnaW5mb3JtYXRpb25zLCBub3VzIGZvdXJuaXNzb25zIGRlcyBk6XRhaWxzIGRhbnMKICAgIDxhIGhyZWY9InNlY3Rpb25zLmh0bWwiPkNvbW1lbnQgZm9uY3Rpb25uZW50IGxlcyBzZWN0aW9ucyBEaXJlY3RvcnksCiAgICBMb2NhdGlvbiBldCBGaWxlczwvYT4uPC9wPgogIDwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iaHRhY2Nlc3MiIGlkPSJodGFjY2VzcyI+RmljaGllcnMgLmh0YWNjZXNzPC9hPjwvaDI+CiAgICAKCiAgICA8dGFibGUgY2xhc3M9InJlbGF0ZWQiPjx0cj48dGg+TW9kdWxlcyBBcHBhcmVudOlzPC90aD48dGg+RGlyZWN0aXZlcyBBcHBhcmVudOllczwvdGg+PC90cj48dHI+PHRkIC8+PHRkPjx1bD48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvY29yZS5odG1sI2FjY2Vzc2ZpbGVuYW1lIj5BY2Nlc3NGaWxlTmFtZTwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvY29yZS5odG1sI2FsbG93b3ZlcnJpZGUiPkFsbG93T3ZlcnJpZGU8L2E+PC9jb2RlPjwvbGk+PC91bD48L3RkPjwvdHI+PC90YWJsZT4KCiAgICA8cD5odHRwZCBwZXJtZXQgbGEgZ2VzdGlvbiBk6WNlbnRyYWxpc+llIGRlIGxhIGNvbmZpZ3VyYXRpb24KICAgIHZpYSBkZXMgZmljaGllcnMgc3DpY2lhdXggcGxhY+lzIGRhbnMgbCdhcmJvcmVzY2VuY2UgZHUgc2l0ZSB3ZWIuCiAgICBDZXMgZmljaGllcnMgc3DpY2lhdXggc2Ugbm9tbWVudCBlbiBn6W7pcmFsIDxjb2RlPi5odGFjY2VzczwvY29kZT4sCiAgICBtYWlzIHRvdXQgYXV0cmUgbm9tIHBldXQg6nRyZSBzcOljaWZp6SDgIGwnYWlkZSBkZSBsYSBkaXJlY3RpdmUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNhY2Nlc3NmaWxlbmFtZSI+QWNjZXNzRmlsZU5hbWU8L2E+PC9jb2RlPi4KICAgIExlcyBkaXJlY3RpdmVzIHBsYWPpZXMgZGFucyBsZXMgZmljaGllcnMgPGNvZGU+Lmh0YWNjZXNzPC9jb2RlPgogICAgcydhcHBsaXF1ZW50IGF1IHLpcGVydG9pcmUgZGFucyBsZXF1ZWwgdm91cyBhdmV6IHBsYWPpIGxlIGZpY2hpZXIsCiAgICBhaW5zaSBxdSfgIHRvdXMgc2VzIHNvdXMtculwZXJ0b2lyZXMuCiAgICBMYSBzeW50YXhlIGRlcyBmaWNoaWVycyA8Y29kZT4uaHRhY2Nlc3M8L2NvZGU+IGVzdCBsYSBt6m1lIHF1ZSBjZWxsZQogICAgZGVzIGZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb24gcHJpbmNpcGF1eC4gQ29tbWUgbGVzIGZpY2hpZXJzCiAgICA8Y29kZT4uaHRhY2Nlc3M8L2NvZGU+IHNvbnQgbHVzIOAgY2hhcXVlIHJlcXXqdGUsIGxlcyBtb2RpZmljYXRpb25zIGRlCiAgICBjZXMgZmljaGllcnMgcHJlbm5lbnQgZWZmZXQgaW1t6WRpYXRlbWVudC48L3A+CgogICAgPHA+UG91ciBk6XRlcm1pbmVyIHF1ZWxsZXMgZGlyZWN0aXZlcyBwZXV2ZW50IOp0cmUgcGxhY+llcwogICAgZGFucyBsZXMgZmljaGllcnMgPGNvZGU+Lmh0YWNjZXNzPC9jb2RlPiwgY29uc3VsdGV6IGxlCiAgICA8YSBocmVmPSJtb2QvZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0ZTwvYT4gZGUgbGEKICAgIGRpcmVjdGl2ZS4gTCdhZG1pbmlzdHJhdGV1ciBkdSBzZXJ2ZXVyIHBldXQgY29udHL0bGVyIHF1ZWxsZXMKICAgIGRpcmVjdGl2ZXMgcGV1dmVudCDqdHJlIHBsYWPpZXMgZGFucyBsZXMgZmljaGllcnMKICAgIDxjb2RlPi5odGFjY2VzczwvY29kZT4gZW4gZOlmaW5pc3NhbnQgbGEgZGlyZWN0aXZlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjYWxsb3dvdmVycmlkZSI+QWxsb3dPdmVycmlkZTwvYT48L2NvZGU+CiAgICBkYW5zIGxlcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uIHByaW5jaXBhdXguPC9wPgoKICAgIDxwPlBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucyBzdXIgbGVzIGZpY2hpZXJzIDxjb2RlPi5odGFjY2VzczwvY29kZT4sCiAgICBzZSBy6WbpcmVyIGF1IDxhIGhyZWY9Imhvd3RvL2h0YWNjZXNzLmh0bWwiPnR1dG9yaWVsIC5odGFjY2VzczwvYT4uPC9wPgogIDwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJib3R0b21sYW5nIj4KPHA+PHNwYW4+TGFuZ3VlcyBEaXNwb25pYmxlczogPC9zcGFuPjxhIGhyZWY9Ii4vZGUvY29uZmlndXJpbmcuaHRtbCIgaHJlZmxhbmc9ImRlIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkRldXRzY2giPiZuYnNwO2RlJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZW4vY29uZmlndXJpbmcuaHRtbCIgaHJlZmxhbmc9ImVuIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZnIvY29uZmlndXJpbmcuaHRtbCIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2phL2NvbmZpZ3VyaW5nLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9rby9jb25maWd1cmluZy5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL3RyL2NvbmZpZ3VyaW5nLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuL2ltYWdlcy91cC5naWYiIGFsdD0idG9wIiAvPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDI+PGEgaWQ9ImNvbW1lbnRzX3NlY3Rpb24iIG5hbWU9ImNvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRhaXJlczwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzL3RydW5rL2NvbmZpZ3VyaW5nLmh0bWwnOwooZnVuY3Rpb24odywgZCkgewogICAgaWYgKHcubG9jYXRpb24uaG9zdG5hbWUudG9Mb3dlckNhc2UoKSA9PSAiaHR0cGQuYXBhY2hlLm9yZyIpIHsKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPjxcL2Rpdj4nKTsKICAgICAgICB2YXIgcyA9IGQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgcy5hc3luYyA9IHRydWU7CiAgICAgICAgcy5zcmMgPSAnaHR0cHM6Ly9jb21tZW50cy5hcGFjaGUub3JnL3Nob3dfY29tbWVudHMubHVhP3NpdGU9JyArIGNvbW1lbnRzX3Nob3J0bmFtZSArICcmcGFnZT0nICsgY29tbWVudHNfaWRlbnRpZmllcjsKICAgICAgICAoZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdIHx8IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXSkuYXBwZW5kQ2hpbGQocyk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDE2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5BdXRvcmlz6SBzb3VzIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9hPi48L3A+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi9tb2QvcXVpY2tyZWZlcmVuY2UuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4vZ2xvc3NhcnkuaHRtbCI+R2xvc3NhaXJlPC9hPiB8IDxhIGhyZWY9Ii4vc2l0ZW1hcC5odG1sIj5QbGFuIGR1IHNpdGU8L2E+PC9wPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCmlmICh0eXBlb2YocHJldHR5UHJpbnQpICE9PSAndW5kZWZpbmVkJykgewogICAgcHJldHR5UHJpbnQoKTsKfQovLy0tPjwhXV0+PC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+