PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5tb2RfYXV0aF9kaWdlc3QgLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIuZ2lmIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi40PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX2F1dGhfZGlnZXN0PC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2F1dGhfZGlnZXN0Lmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX2F1dGhfZGlnZXN0Lmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vbW9kL21vZF9hdXRoX2RpZ2VzdC5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2Pgo8dGFibGUgY2xhc3M9Im1vZHVsZSI+PHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+VXNlciBhdXRoZW50aWNhdGlvbiB1c2luZyBNRDUKICAgIERpZ2VzdCBBdXRoZW50aWNhdGlvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNNb2R1bGVJZGVudGlmaWVyIj5Nb2R1bGWgSWRlbnRpZmllcjo8L2E+PC90aD48dGQ+YXV0aF9kaWdlc3RfbW9kdWxlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU291cmNlRmlsZSI+U291cmNloEZpbGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRoX2RpZ2VzdC5jPC90ZD48L3RyPjwvdGFibGU+CjxoMz5TdW1tYXJ5PC9oMz4KCiAgICA8cD5UaGlzIG1vZHVsZSBpbXBsZW1lbnRzIEhUVFAgRGlnZXN0IEF1dGhlbnRpY2F0aW9uCiAgICAoPGEgaHJlZj0iaHR0cDovL3d3dy5mYXFzLm9yZy9yZmNzL3JmYzI2MTcuaHRtbCI+UkZDMjYxNzwvYT4pLCBhbmQKICAgIHByb3ZpZGVzIGFuIGFsdGVybmF0aXZlIHRvIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aF9iYXNpYy5odG1sIj5tb2RfYXV0aF9iYXNpYzwvYT48L2NvZGU+IHdoZXJlIHRoZQogICAgcGFzc3dvcmQgaXMgbm90IHRyYW5zbWl0dGVkIGFzIGNsZWFydGV4dC4gSG93ZXZlciwgdGhpcyBkb2VzCiAgICA8c3Ryb25nPm5vdDwvc3Ryb25nPiBsZWFkIHRvIGEgc2lnbmlmaWNhbnQgc2VjdXJpdHkgYWR2YW50YWdlIG92ZXIKICAgIGJhc2ljIGF1dGhlbnRpY2F0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIHBhc3N3b3JkIHN0b3JhZ2Ugb24gdGhlCiAgICBzZXJ2ZXIgaXMgbXVjaCBsZXNzIHNlY3VyZSB3aXRoIGRpZ2VzdCBhdXRoZW50aWNhdGlvbiB0aGFuIHdpdGgKICAgIGJhc2ljIGF1dGhlbnRpY2F0aW9uLiBUaGVyZWZvcmUsIHVzaW5nIGJhc2ljIGF1dGggYW5kIGVuY3J5cHRpbmcgdGhlCiAgICB3aG9sZSBjb25uZWN0aW9uIHVzaW5nIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc3NsLmh0bWwiPm1vZF9zc2w8L2E+PC9jb2RlPiBpcyBhIG11Y2ggYmV0dGVyCiAgICBhbHRlcm5hdGl2ZS48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxoMz5Ub3BpY3M8L2gzPgo8dWwgaWQ9InRvcGljcyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3VzaW5nIj5Vc2luZyBEaWdlc3QgQXV0aGVudGljYXRpb248L2E+PC9saT4KPC91bD48aDMgY2xhc3M9ImRpcmVjdGl2ZXMiPkRpcmVjdGl2ZXM8L2gzPgo8dWwgaWQ9InRvYyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2F1dGhkaWdlc3RhbGdvcml0aG0iPkF1dGhEaWdlc3RBbGdvcml0aG08L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGRpZ2VzdGRvbWFpbiI+QXV0aERpZ2VzdERvbWFpbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhdXRoZGlnZXN0bm9uY2VsaWZldGltZSI+QXV0aERpZ2VzdE5vbmNlTGlmZXRpbWU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGRpZ2VzdHByb3ZpZGVyIj5BdXRoRGlnZXN0UHJvdmlkZXI8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGRpZ2VzdHFvcCI+QXV0aERpZ2VzdFFvcDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhdXRoZGlnZXN0c2htZW1zaXplIj5BdXRoRGlnZXN0U2htZW1TaXplPC9hPjwvbGk+CjwvdWw+CjxoMz5TZWUgYWxzbzwvaDM+Cjx1bCBjbGFzcz0ic2VlYWxzbyI+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuX2NvcmUuaHRtbCNhdXRobmFtZSI+QXV0aE5hbWU8L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuX2NvcmUuaHRtbCNhdXRodHlwZSI+QXV0aFR5cGU8L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGh6X2NvcmUuaHRtbCNyZXF1aXJlIj5SZXF1aXJlPC9hPjwvY29kZT48L2xpPgo8bGk+PGEgaHJlZj0iLi4vaG93dG8vYXV0aC5odG1sIj5BdXRoZW50aWNhdGlvbiBob3d0bzwvYT48L2xpPgo8L3VsPjx1bCBjbGFzcz0ic2VlYWxzbyI+PGxpPjxhIGhyZWY9IiNjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InVzaW5nIiBpZD0idXNpbmciPlVzaW5nIERpZ2VzdCBBdXRoZW50aWNhdGlvbjwvYT48L2gyPgoKICAgIDxwPlRvIHVzZSBNRDUgRGlnZXN0IGF1dGhlbnRpY2F0aW9uLCBzaW1wbHkKICAgIGNoYW5nZSB0aGUgbm9ybWFsIDxjb2RlPkF1dGhUeXBlIEJhc2ljPC9jb2RlPiBhbmQKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aF9iYXNpYy5odG1sI2F1dGhiYXNpY3Byb3ZpZGVyIj5BdXRoQmFzaWNQcm92aWRlcjwvYT48L2NvZGU+CiAgICB0byA8Y29kZT5BdXRoVHlwZSBEaWdlc3Q8L2NvZGU+IGFuZAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhkaWdlc3Rwcm92aWRlciI+QXV0aERpZ2VzdFByb3ZpZGVyPC9hPjwvY29kZT4sCiAgICB3aGVuIHNldHRpbmcgdXAgYXV0aGVudGljYXRpb24sIHRoZW4gYWRkIGEKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRoZGlnZXN0ZG9tYWluIj5BdXRoRGlnZXN0RG9tYWluPC9hPjwvY29kZT4gZGlyZWN0aXZlIGNvbnRhaW5pbmcgYXQgbGVhc3QgdGhlIHJvb3QKICAgIFVSSShzKSBmb3IgdGhpcyBwcm90ZWN0aW9uIHNwYWNlLjwvcD4KCiAgICA8cD5BcHByb3ByaWF0ZSB1c2VyICh0ZXh0KSBmaWxlcyBjYW4gYmUgY3JlYXRlZCB1c2luZyB0aGUKICAgIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuLi9wcm9ncmFtcy9odGRpZ2VzdC5odG1sIj5odGRpZ2VzdDwvYT48L2NvZGU+IHRvb2wuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlOjwvaDM+PHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPiZsdDtMb2NhdGlvbiAiL3ByaXZhdGUvIiZndDsKICAgIEF1dGhUeXBlIERpZ2VzdAogICAgQXV0aE5hbWUgInByaXZhdGUgYXJlYSIKICAgIEF1dGhEaWdlc3REb21haW4gIi9wcml2YXRlLyIgImh0dHA6Ly9taXJyb3IubXkuZG9tL3ByaXZhdGUyLyIKICAgIAogICAgQXV0aERpZ2VzdFByb3ZpZGVyIGZpbGUKICAgIEF1dGhVc2VyRmlsZSAiL3dlYi9hdXRoLy5kaWdlc3RfcHciCiAgICBSZXF1aXJlIHZhbGlkLXVzZXIKJmx0Oy9Mb2NhdGlvbiZndDs8L3ByZT4KPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+PGgzPk5vdGU8L2gzPgogICAgPHA+RGlnZXN0IGF1dGhlbnRpY2F0aW9uIHdhcyBpbnRlbmRlZCB0byBiZSBtb3JlIHNlY3VyZSB0aGFuIGJhc2ljCiAgICBhdXRoZW50aWNhdGlvbiwgYnV0IG5vIGxvbmdlciBmdWxmaWxscyB0aGF0IGRlc2lnbiBnb2FsLiBBCiAgICBtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2tlciBjYW4gdHJpdmlhbGx5IGZvcmNlIHRoZSBicm93c2VyIHRvIGRvd25ncmFkZQogICAgdG8gYmFzaWMgYXV0aGVudGljYXRpb24uIEFuZCBldmVuIGEgcGFzc2l2ZSBlYXZlc2Ryb3BwZXIgY2FuIGJydXRlLWZvcmNlCiAgICB0aGUgcGFzc3dvcmQgdXNpbmcgdG9kYXkncyBncmFwaGljcyBoYXJkd2FyZSwgYmVjYXVzZSB0aGUgaGFzaGluZwogICAgYWxnb3JpdGhtIHVzZWQgYnkgZGlnZXN0IGF1dGhlbnRpY2F0aW9uIGlzIHRvbyBmYXN0LiBBbm90aGVyIHByb2JsZW0gaXMKICAgIHRoYXQgdGhlIHN0b3JhZ2Ugb2YgdGhlIHBhc3N3b3JkcyBvbiB0aGUgc2VydmVyIGlzIGluc2VjdXJlLiBUaGUgY29udGVudHMKICAgIG9mIGEgc3RvbGVuIGh0ZGlnZXN0IGZpbGUgY2FuIGJlIHVzZWQgZGlyZWN0bHkgZm9yIGRpZ2VzdCBhdXRoZW50aWNhdGlvbi4KICAgIFRoZXJlZm9yZSB1c2luZyA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NzbC5odG1sIj5tb2Rfc3NsPC9hPjwvY29kZT4gdG8gZW5jcnlwdCB0aGUgd2hvbGUgY29ubmVjdGlvbiBpcwogICAgc3Ryb25nbHkgcmVjb21tZW5kZWQuPC9wPgogICAgPHA+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoX2RpZ2VzdC5odG1sIj5tb2RfYXV0aF9kaWdlc3Q8L2E+PC9jb2RlPiBvbmx5IHdvcmtzIHByb3Blcmx5IG9uIHBsYXRmb3JtcwogICAgICB3aGVyZSBBUFIgc3VwcG9ydHMgc2hhcmVkIG1lbW9yeS48L3A+CiAgICA8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhEaWdlc3RBbGdvcml0aG0iIGlkPSJBdXRoRGlnZXN0QWxnb3JpdGhtIj5BdXRoRGlnZXN0QWxnb3JpdGhtPC9hPiA8YSBuYW1lPSJhdXRoZGlnZXN0YWxnb3JpdGhtIiBpZD0iYXV0aGRpZ2VzdGFsZ29yaXRobSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2VsZWN0cyB0aGUgYWxnb3JpdGhtIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBjaGFsbGVuZ2UgYW5kCnJlc3BvbnNlIGhhc2hlcyBpbiBkaWdlc3QgYXV0aGVudGljYXRpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdEFsZ29yaXRobSBNRDV8TUQ1LXNlc3M8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdEFsZ29yaXRobSBNRDU8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkF1dGhDb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRoX2RpZ2VzdDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BdXRoRGlnZXN0QWxnb3JpdGhtPC9jb2RlPiBkaXJlY3RpdmUKICAgIHNlbGVjdHMgdGhlIGFsZ29yaXRobSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgY2hhbGxlbmdlIGFuZCByZXNwb25zZQogICAgaGFzaGVzLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJub3RlIj4KICAgICAgPGNvZGU+TUQ1LXNlc3M8L2NvZGU+IGlzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgeWV0LgogICAgPC9kaXY+CiAgICAKCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBdXRoRGlnZXN0RG9tYWluIiBpZD0iQXV0aERpZ2VzdERvbWFpbiI+QXV0aERpZ2VzdERvbWFpbjwvYT4gPGEgbmFtZT0iYXV0aGRpZ2VzdGRvbWFpbiIgaWQ9ImF1dGhkaWdlc3Rkb21haW4iPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlVSSXMgdGhhdCBhcmUgaW4gdGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZSBmb3IgZGlnZXN0CmF1dGhlbnRpY2F0aW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhEaWdlc3REb21haW4gPHZhcj5VUkk8L3Zhcj4gWzx2YXI+VVJJPC92YXI+XSAuLi48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkF1dGhDb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRoX2RpZ2VzdDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BdXRoRGlnZXN0RG9tYWluPC9jb2RlPiBkaXJlY3RpdmUgYWxsb3dzCiAgICB5b3UgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBVUklzIHdoaWNoIGFyZSBpbiB0aGUgc2FtZSBwcm90ZWN0aW9uCiAgICBzcGFjZSAoPGVtPmkuZS48L2VtPiB1c2UgdGhlIHNhbWUgcmVhbG0gYW5kIHVzZXJuYW1lL3Bhc3N3b3JkIGluZm8pLgogICAgVGhlIHNwZWNpZmllZCBVUklzIGFyZSBwcmVmaXhlczsgdGhlIGNsaWVudCB3aWxsIGFzc3VtZQogICAgdGhhdCBhbGwgVVJJcyAiYmVsb3ciIHRoZXNlIGFyZSBhbHNvIHByb3RlY3RlZCBieSB0aGUgc2FtZQogICAgdXNlcm5hbWUvcGFzc3dvcmQuIFRoZSBVUklzIG1heSBiZSBlaXRoZXIgYWJzb2x1dGUgVVJJcyAoPGVtPmkuZS48L2VtPgogICAgaW5jbHVkaW5nIGEgc2NoZW1lLCBob3N0LCBwb3J0LCBldGMuKSBvciByZWxhdGl2ZSBVUklzLjwvcD4KCiAgICA8cD5UaGlzIGRpcmVjdGl2ZSA8ZW0+c2hvdWxkPC9lbT4gYWx3YXlzIGJlIHNwZWNpZmllZCBhbmQKICAgIGNvbnRhaW4gYXQgbGVhc3QgdGhlIChzZXQgb2YpIHJvb3QgVVJJKHMpIGZvciB0aGlzIHNwYWNlLgogICAgT21pdHRpbmcgdG8gZG8gc28gd2lsbCBjYXVzZSB0aGUgY2xpZW50IHRvIHNlbmQgdGhlCiAgICBBdXRob3JpemF0aW9uIGhlYWRlciBmb3IgPGVtPmV2ZXJ5IHJlcXVlc3Q8L2VtPiBzZW50IHRvIHRoaXMKICAgIHNlcnZlci48L3A+CgogICAgPHA+VGhlIFVSSXMgc3BlY2lmaWVkIGNhbiBhbHNvIHBvaW50IHRvIGRpZmZlcmVudCBzZXJ2ZXJzLCBpbgogICAgd2hpY2ggY2FzZSBjbGllbnRzICh3aGljaCB1bmRlcnN0YW5kIHRoaXMpIHdpbGwgdGhlbiBzaGFyZQogICAgdXNlcm5hbWUvcGFzc3dvcmQgaW5mbyBhY3Jvc3MgbXVsdGlwbGUgc2VydmVycyB3aXRob3V0CiAgICBwcm9tcHRpbmcgdGhlIHVzZXIgZWFjaCB0aW1lLiA8L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQXV0aERpZ2VzdE5vbmNlTGlmZXRpbWUiIGlkPSJBdXRoRGlnZXN0Tm9uY2VMaWZldGltZSI+QXV0aERpZ2VzdE5vbmNlTGlmZXRpbWU8L2E+IDxhIG5hbWU9ImF1dGhkaWdlc3Rub25jZWxpZmV0aW1lIiBpZD0iYXV0aGRpZ2VzdG5vbmNlbGlmZXRpbWUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkhvdyBsb25nIHRoZSBzZXJ2ZXIgbm9uY2UgaXMgdmFsaWQ8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdE5vbmNlTGlmZXRpbWUgPHZhcj5zZWNvbmRzPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhEaWdlc3ROb25jZUxpZmV0aW1lIDMwMDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QXV0aENvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGhfZGlnZXN0PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkF1dGhEaWdlc3ROb25jZUxpZmV0aW1lPC9jb2RlPiBkaXJlY3RpdmUKICAgIGNvbnRyb2xzIGhvdyBsb25nIHRoZSBzZXJ2ZXIgbm9uY2UgaXMgdmFsaWQuIFdoZW4gdGhlIGNsaWVudAogICAgY29udGFjdHMgdGhlIHNlcnZlciB1c2luZyBhbiBleHBpcmVkIG5vbmNlIHRoZSBzZXJ2ZXIgd2lsbCBzZW5kCiAgICBiYWNrIGEgNDAxIHdpdGggPGNvZGU+c3RhbGU9dHJ1ZTwvY29kZT4uIElmIDx2YXI+c2Vjb25kczwvdmFyPiBpcwogICAgZ3JlYXRlciB0aGFuIDAgdGhlbiBpdCBzcGVjaWZpZXMgdGhlIGFtb3VudCBvZiB0aW1lIGZvciB3aGljaCB0aGUKICAgIG5vbmNlIGlzIHZhbGlkOyB0aGlzIHNob3VsZCBwcm9iYWJseSBuZXZlciBiZSBzZXQgdG8gbGVzcyB0aGFuIDEwCiAgICBzZWNvbmRzLiBJZiA8dmFyPnNlY29uZHM8L3Zhcj4gaXMgbGVzcyB0aGFuIDAgdGhlbiB0aGUgbm9uY2UgbmV2ZXIKICAgIGV4cGlyZXMuIAogICAgPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhEaWdlc3RQcm92aWRlciIgaWQ9IkF1dGhEaWdlc3RQcm92aWRlciI+QXV0aERpZ2VzdFByb3ZpZGVyPC9hPiA8YSBuYW1lPSJhdXRoZGlnZXN0cHJvdmlkZXIiIGlkPSJhdXRoZGlnZXN0cHJvdmlkZXIiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNldHMgdGhlIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVyKHMpIGZvciB0aGlzIGxvY2F0aW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhEaWdlc3RQcm92aWRlciA8dmFyPnByb3ZpZGVyLW5hbWU8L3Zhcj4KWzx2YXI+cHJvdmlkZXItbmFtZTwvdmFyPl0gLi4uPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhEaWdlc3RQcm92aWRlciBmaWxlPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5BdXRoQ29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0aF9kaWdlc3Q8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QXV0aERpZ2VzdFByb3ZpZGVyPC9jb2RlPiBkaXJlY3RpdmUgc2V0cwogICAgd2hpY2ggcHJvdmlkZXIgaXMgdXNlZCB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXJzIGZvciB0aGlzIGxvY2F0aW9uLgogICAgVGhlIGRlZmF1bHQgPGNvZGU+ZmlsZTwvY29kZT4gcHJvdmlkZXIgaXMgaW1wbGVtZW50ZWQKICAgIGJ5IHRoZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuX2ZpbGUuaHRtbCI+bW9kX2F1dGhuX2ZpbGU8L2E+PC9jb2RlPiBtb2R1bGUuICBNYWtlIHN1cmUKICAgIHRoYXQgdGhlIGNob3NlbiBwcm92aWRlciBtb2R1bGUgaXMgcHJlc2VudCBpbiB0aGUgc2VydmVyLjwvcD4KCiAgICA8cD5TZWUgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobl9kYm0uaHRtbCI+bW9kX2F1dGhuX2RibTwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuX2ZpbGUuaHRtbCI+bW9kX2F1dGhuX2ZpbGU8L2E+PC9jb2RlPiwKICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aG5fZGJkLmh0bWwiPm1vZF9hdXRobl9kYmQ8L2E+PC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobl9zb2NhY2hlLmh0bWwiPm1vZF9hdXRobl9zb2NhY2hlPC9hPjwvY29kZT4KICAgIGZvciBwcm92aWRlcnMuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhEaWdlc3RRb3AiIGlkPSJBdXRoRGlnZXN0UW9wIj5BdXRoRGlnZXN0UW9wPC9hPiA8YSBuYW1lPSJhdXRoZGlnZXN0cW9wIiBpZD0iYXV0aGRpZ2VzdHFvcCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RGV0ZXJtaW5lcyB0aGUgcXVhbGl0eS1vZi1wcm90ZWN0aW9uIHRvIHVzZSBpbiBkaWdlc3QKYXV0aGVudGljYXRpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdFFvcCBub25lfGF1dGh8YXV0aC1pbnQgW2F1dGh8YXV0aC1pbnRdPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhEaWdlc3RRb3AgYXV0aDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QXV0aENvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGhfZGlnZXN0PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkF1dGhEaWdlc3RRb3A8L2NvZGU+IGRpcmVjdGl2ZSBkZXRlcm1pbmVzCiAgICB0aGUgPGRmbj5xdWFsaXR5LW9mLXByb3RlY3Rpb248L2Rmbj4gdG8gdXNlLiA8Y29kZT5hdXRoPC9jb2RlPiB3aWxsCiAgICBvbmx5IGRvIGF1dGhlbnRpY2F0aW9uICh1c2VybmFtZS9wYXNzd29yZCk7IDxjb2RlPmF1dGgtaW50PC9jb2RlPiBpcwogICAgYXV0aGVudGljYXRpb24gcGx1cyBpbnRlZ3JpdHkgY2hlY2tpbmcgKGFuIE1ENSBoYXNoIG9mIHRoZSBlbnRpdHkKICAgIGlzIGFsc28gY29tcHV0ZWQgYW5kIGNoZWNrZWQpOyA8Y29kZT5ub25lPC9jb2RlPiB3aWxsIGNhdXNlIHRoZSBtb2R1bGUKICAgIHRvIHVzZSB0aGUgb2xkIFJGQy0yMDY5IGRpZ2VzdCBhbGdvcml0aG0gKHdoaWNoIGRvZXMgbm90IGluY2x1ZGUKICAgIGludGVncml0eSBjaGVja2luZykuIEJvdGggPGNvZGU+YXV0aDwvY29kZT4gYW5kIDxjb2RlPmF1dGgtaW50PC9jb2RlPiBtYXkKICAgIGJlIHNwZWNpZmllZCwgaW4gd2hpY2ggdGhlIGNhc2UgdGhlIGJyb3dzZXIgd2lsbCBjaG9vc2Ugd2hpY2ggb2YKICAgIHRoZXNlIHRvIHVzZS4gPGNvZGU+bm9uZTwvY29kZT4gc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiB0aGUgYnJvd3NlciBmb3IKICAgIHNvbWUgcmVhc29uIGRvZXMgbm90IGxpa2UgdGhlIGNoYWxsZW5nZSBpdCByZWNlaXZlcyBvdGhlcndpc2UuPC9wPgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPgogICAgICA8Y29kZT5hdXRoLWludDwvY29kZT4gaXMgbm90IGltcGxlbWVudGVkIHlldC4KICAgIDwvZGl2PgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhEaWdlc3RTaG1lbVNpemUiIGlkPSJBdXRoRGlnZXN0U2htZW1TaXplIj5BdXRoRGlnZXN0U2htZW1TaXplPC9hPiA8YSBuYW1lPSJhdXRoZGlnZXN0c2htZW1zaXplIiBpZD0iYXV0aGRpZ2VzdHNobWVtc2l6ZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+VGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHRvIGFsbG9jYXRlIGZvciBrZWVwaW5nIHRyYWNrCm9mIGNsaWVudHM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdFNobWVtU2l6ZSA8dmFyPnNpemU8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdFNobWVtU2l6ZSAxMDAwPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRoX2RpZ2VzdDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BdXRoRGlnZXN0U2htZW1TaXplPC9jb2RlPiBkaXJlY3RpdmUgZGVmaW5lcwogICAgdGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5LCB0aGF0IHdpbGwgYmUgYWxsb2NhdGVkIGF0IHRoZSBzZXJ2ZXIKICAgIHN0YXJ0dXAgZm9yIGtlZXBpbmcgdHJhY2sgb2YgY2xpZW50cy4gTm90ZSB0aGF0IHRoZSBzaGFyZWQgbWVtb3J5CiAgICBzZWdtZW50IGNhbm5vdCBiZSBzZXQgbGVzcyB0aGFuIHRoZSBzcGFjZSB0aGF0IGlzIG5lY2Vzc2FyeSBmb3IKICAgIHRyYWNraW5nIGF0IGxlYXN0IDxlbT5vbmU8L2VtPiBjbGllbnQuIFRoaXMgdmFsdWUgaXMgZGVwZW5kZW50IG9uIHlvdXIKICAgIHN5c3RlbS4gSWYgeW91IHdhbnQgdG8gZmluZCBvdXQgdGhlIGV4YWN0IHZhbHVlLCB5b3UgbWF5IHNpbXBseQogICAgc2V0IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkF1dGhEaWdlc3RTaG1lbVNpemU8L2NvZGU+IHRvIHRoZSB2YWx1ZSBvZgogICAgPGNvZGU+MDwvY29kZT4gYW5kIHJlYWQgdGhlIGVycm9yIG1lc3NhZ2UgYWZ0ZXIgdHJ5aW5nIHRvIHN0YXJ0IHRoZQogICAgc2VydmVyLjwvcD4KCiAgICA8cD5UaGUgPHZhcj5zaXplPC92YXI+IGlzIG5vcm1hbGx5IGV4cHJlc3NlZCBpbiBCeXRlcywgYnV0IHlvdQogICAgbWF5IGZvbGxvdyB0aGUgbnVtYmVyIHdpdGggYSA8Y29kZT5LPC9jb2RlPiBvciBhbiA8Y29kZT5NPC9jb2RlPiB0bwogICAgZXhwcmVzcyB5b3VyIHZhbHVlIGFzIEtCeXRlcyBvciBNQnl0ZXMuIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nCiAgICBkaXJlY3RpdmVzIGFyZSBhbGwgZXF1aXZhbGVudDo8L3A+Cgo8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+QXV0aERpZ2VzdFNobWVtU2l6ZSAxMDQ4NTc2CkF1dGhEaWdlc3RTaG1lbVNpemUgMTAyNEsKQXV0aERpZ2VzdFNobWVtU2l6ZSAxTTwvcHJlPgoKCjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2F1dGhfZGlnZXN0Lmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX2F1dGhfZGlnZXN0Lmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vbW9kL21vZF9hdXRoX2RpZ2VzdC5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgYWx0PSJ0b3AiIC8+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxoMj48YSBpZD0iY29tbWVudHNfc2VjdGlvbiIgbmFtZT0iY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9oMj48ZGl2IGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz48YnIgLz5UaGlzIGlzIG5vdCBhIFEmYW1wO0Egc2VjdGlvbi4gQ29tbWVudHMgcGxhY2VkIGhlcmUgc2hvdWxkIGJlIHBvaW50ZWQgdG93YXJkcyBzdWdnZXN0aW9ucyBvbiBpbXByb3ZpbmcgdGhlIGRvY3VtZW50YXRpb24gb3Igc2VydmVyLCBhbmQgbWF5IGJlIHJlbW92ZWQgYWdhaW4gYnkgb3VyIG1vZGVyYXRvcnMgaWYgdGhleSBhcmUgZWl0aGVyIGltcGxlbWVudGVkIG9yIGNvbnNpZGVyZWQgaW52YWxpZC9vZmYtdG9waWMuIFF1ZXN0aW9ucyBvbiBob3cgdG8gbWFuYWdlIHRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgc2hvdWxkIGJlIGRpcmVjdGVkIGF0IGVpdGhlciBvdXIgSVJDIGNoYW5uZWwsICNodHRwZCwgb24gRnJlZW5vZGUsIG9yIHNlbnQgdG8gb3VyIDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2xpc3RzLmh0bWwiPm1haWxpbmcgbGlzdHM8L2E+LjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLS8vLS0+PCFbQ0RBVEFbLy8+PCEtLQp2YXIgY29tbWVudHNfc2hvcnRuYW1lID0gJ2h0dHBkJzsKdmFyIGNvbW1lbnRzX2lkZW50aWZpZXIgPSAnaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjQvbW9kL21vZF9hdXRoX2RpZ2VzdC5odG1sJzsKKGZ1bmN0aW9uKHcsIGQpIHsKICAgIGlmICh3LmxvY2F0aW9uLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCkgPT0gImh0dHBkLmFwYWNoZS5vcmciKSB7CiAgICAgICAgZC53cml0ZSgnPGRpdiBpZD0iY29tbWVudHNfdGhyZWFkIj48XC9kaXY+Jyk7CiAgICAgICAgdmFyIHMgPSBkLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogICAgICAgIHMuYXN5bmMgPSB0cnVlOwogICAgICAgIHMuc3JjID0gJ2h0dHBzOi8vY29tbWVudHMuYXBhY2hlLm9yZy9zaG93X2NvbW1lbnRzLmx1YT9zaXRlPScgKyBjb21tZW50c19zaG9ydG5hbWUgKyAnJnBhZ2U9JyArIGNvbW1lbnRzX2lkZW50aWZpZXI7CiAgICAgICAgKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSB8fCBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0pLmFwcGVuZENoaWxkKHMpOwogICAgfQogICAgZWxzZSB7IAogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+Q29tbWVudHMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHBhZ2UgYXQgdGhlIG1vbWVudC48XC9kaXY+Jyk7CiAgICB9Cn0pKHdpbmRvdywgZG9jdW1lbnQpOwovLy0tPjwhXV0+PC9zY3JpcHQ+PC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMTUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkxpY2Vuc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT4uPC9wPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvaHR0cGQvRkFRIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCI+R2xvc3Nhcnk8L2E+IHwgPGEgaHJlZj0iLi4vc2l0ZW1hcC5odG1sIj5TaXRlbWFwPC9hPjwvcD48L2Rpdj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLS8vLS0+PCFbQ0RBVEFbLy8+PCEtLQppZiAodHlwZW9mKHByZXR0eVByaW50KSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgIHByZXR0eVByaW50KCk7Cn0KLy8tLT48IV1dPjwvc2NyaXB0Pgo8L2JvZHk+PC9odG1sPg==