PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5tb2RfcHJveHlfZXhwcmVzcyAtIEFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNDwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGUvY3NzL3ByZXR0aWZ5LmNzcyIgLz4KPHNjcmlwdCBzcmM9Ii4uL3N0eWxlL3NjcmlwdHMvcHJldHRpZnkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8L3NjcmlwdD4KCjxsaW5rIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+CjxwIGNsYXNzPSJhcGFjaGUiPkFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNDwvcD4KPGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZmVhdGhlci5wbmciIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi4vaW1hZ2VzL2xlZnQuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBpZD0icGF0aCI+CjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFwYWNoZTwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iPkhUVFAgU2VydmVyPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLyI+VmVyc2lvbiAyLjQ8L2E+ICZndDsgPGEgaHJlZj0iLi8iPk1vZHVsZXM8L2E+PC9kaXY+CjxkaXYgaWQ9InBhZ2UtY29udGVudCI+CjxkaXYgaWQ9InByZWFtYmxlIj48aDE+QXBhY2hlIE1vZHVsZSBtb2RfcHJveHlfZXhwcmVzczwvaDE+CjxkaXYgY2xhc3M9InRvcGxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF9wcm94eV9leHByZXNzLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX3Byb3h5X2V4cHJlc3MuaHRtbCIgaHJlZmxhbmc9ImZyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT48L3A+CjwvZGl2Pgo8dGFibGUgY2xhc3M9Im1vZHVsZSI+PHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RHluYW1pYyBtYXNzIHJldmVyc2UgcHJveHkgZXh0ZW5zaW9uIGZvcgo8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3Byb3h5Lmh0bWwiPm1vZF9wcm94eTwvYT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI01vZHVsZUlkZW50aWZpZXIiPk1vZHVsZaBJZGVudGlmaWVyOjwvYT48L3RoPjx0ZD5wcm94eV9leHByZXNzX21vZHVsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1NvdXJjZUZpbGUiPlNvdXJjZaBGaWxlOjwvYT48L3RoPjx0ZD5tb2RfcHJveHlfZXhwcmVzcy5jPC90ZD48L3RyPjwvdGFibGU+CjxoMz5TdW1tYXJ5PC9oMz4KCiAgICA8cD5UaGlzIG1vZHVsZSBjcmVhdGVzIGR5bmFtaWNhbGx5IGNvbmZpZ3VyZWQgbWFzcyByZXZlcnNlCiAgICBwcm94aWVzLCBieSBtYXBwaW5nIHRoZSBIb3N0OiBoZWFkZXIgb2YgdGhlIEhUVFAgcmVxdWVzdCB0bwogICAgYSBzZXJ2ZXIgbmFtZSBhbmQgYmFja2VuZCBVUkwgc3RvcmVkIGluIGEgREJNIGZpbGUuCiAgICBUaGlzIGFsbG93cyBmb3IgZWFzeSB1c2Ugb2YgYSBodWdlIG51bWJlciBvZiByZXZlcnNlIHByb3hpZXMKICAgIHdpdGggbm8gY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBJdCBpcyBtdWNoIGxlc3MgZmVhdHVyZS1mdWxsCiAgICB0aGFuIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfcHJveHlfYmFsYW5jZXIuaHRtbCI+bW9kX3Byb3h5X2JhbGFuY2VyPC9hPjwvY29kZT4sIHdoaWNoIGFsc28gcHJvdmlkZXMKICAgIGR5bmFtaWMgZ3Jvd3RoLCBidXQgaXMgaW50ZW5kZWQgdG8gaGFuZGxlIG11Y2gsIG11Y2gKICAgIGxhcmdlciBudW1iZXJzIG9mIGJhY2tlbmRzLiBJdCBpcyBpZGVhbGx5IHN1aXRlZCBhcyBhCiAgICBmcm9udC1lbmQgSFRUUCBzd2l0Y2guPC9wPgoKICAgIDxwPlRoaXMgbW9kdWxlIDxlbT5yZXF1aXJlczwvZW0+IHRoZSBzZXJ2aWNlIG9mIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfcHJveHkuaHRtbCI+bW9kX3Byb3h5PC9hPjwvY29kZT4uPC9wPgoKICAgIDxkaXYgY2xhc3M9Indhcm5pbmciPjxoMz5XYXJuaW5nPC9oMz4KICAgICAgPHA+RG8gbm90IGVuYWJsZSBwcm94eWluZyB1bnRpbCB5b3UgaGF2ZSA8YSBocmVmPSJtb2RfcHJveHkuaHRtbCNhY2Nlc3MiPnNlY3VyZWQgeW91ciBzZXJ2ZXI8L2E+LiBPcGVuIHByb3h5CiAgICAgIHNlcnZlcnMgYXJlIGRhbmdlcm91cyBib3RoIHRvIHlvdXIgbmV0d29yayBhbmQgdG8gdGhlIEludGVybmV0IGF0CiAgICAgIGxhcmdlLjwvcD4KICAgIDwvZGl2PgoKPGRpdiBjbGFzcz0ibm90ZSI+PGgzPkxpbWl0YXRpb25zPC9oMz4KICA8dWw+CiAgICA8bGk+VGhpcyBtb2R1bGUgaXMgbm90IGludGVuZGVkIHRvIHJlcGxhY2UgdGhlIGR5bmFtaWMgY2FwYWJpbGl0eSBvZgogICAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3Byb3h5X2JhbGFuY2VyLmh0bWwiPm1vZF9wcm94eV9iYWxhbmNlcjwvYT48L2NvZGU+LiBJbnN0ZWFkLCBpdCBpcyBpbnRlbmRlZCB0byBiZSBtb3N0bHkKICAgICAgYSBsaWdodHdlaWdodCBhbmQgZmFzdCBhbHRlcm5hdGl2ZSB0byB1c2luZyA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3Jld3JpdGUuaHRtbCI+bW9kX3Jld3JpdGU8L2E+PC9jb2RlPgogICAgICB3aXRoIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlJld3JpdGVNYXA8L2NvZGU+IGFuZCB0aGUgPGNvZGU+W1BdPC9jb2RlPiBmbGFnCiAgICAgIGZvciBtYXBwZWQgcmV2ZXJzZSBwcm94eWluZy4KICAgIDwvbGk+CiAgICA8bGk+SXQgZG9lcyBub3Qgc3VwcG9ydCByZWdleCBvciBwYXR0ZXJuIG1hdGNoaW5nIGF0IGFsbC4KICAgIDwvbGk+CiAgICA8bGk+SXQgZW11bGF0ZXM6CiAgICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4mbHQ7VmlydHVhbEhvc3QgKjo4MCZndDsKICAgU2VydmVyTmFtZSBmcm9udC5lbmQuc2VydmVyCiAgIFByb3h5UGFzcyAiLyIgImJhY2suZW5kLnNlcnZlcjpwb3J0IgogICBQcm94eVBhc3NSZXZlcnNlICIvIiAiYmFjay5lbmQuc2VydmVyOnBvcnQiCiZsdDsvVmlydHVhbEhvc3QmZ3Q7PC9wcmU+CgogICAgICBUaGF0IGlzLCB0aGUgZW50aXJlIFVSTCBpcyBhcHBlbmRlZCB0byB0aGUgbWFwcGVkIGJhY2tlbmQKICAgICAgVVJMLiBUaGlzIGlzIGluIGtlZXBpbmcgd2l0aCB0aGUgaW50ZW50IG9mIGJlaW5nIGEgc2ltcGxlCiAgICAgIGJ1dCBmYXN0IHJldmVyc2UgcHJveHkgc3dpdGNoLgogICAgPC9saT4KICA8L3VsPgo8L2Rpdj4KCjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxoMyBjbGFzcz0iZGlyZWN0aXZlcyI+RGlyZWN0aXZlczwvaDM+Cjx1bCBpZD0idG9jIj4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjcHJveHlleHByZXNzZGJtZmlsZSI+UHJveHlFeHByZXNzREJNRmlsZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNwcm94eWV4cHJlc3NkYm10eXBlIj5Qcm94eUV4cHJlc3NEQk1UeXBlPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3Byb3h5ZXhwcmVzc2VuYWJsZSI+UHJveHlFeHByZXNzRW5hYmxlPC9hPjwvbGk+CjwvdWw+CjxoMz5CdWdmaXggY2hlY2tsaXN0PC9oMz48dWwgY2xhc3M9InNlZWFsc28iPjxsaT48YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2Rpc3QvaHR0cGQvQ0hBTkdFU18yLjQiPmh0dHBkIGNoYW5nZWxvZzwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL2J6LmFwYWNoZS5vcmcvYnVnemlsbGEvYnVnbGlzdC5jZ2k/YnVnX3N0YXR1cz1fX29wZW5fXyZhbXA7bGlzdF9pZD0xNDQ1MzImYW1wO3Byb2R1Y3Q9QXBhY2hlJTIwaHR0cGQtMiZhbXA7cXVlcnlfZm9ybWF0PXNwZWNpZmljJmFtcDtvcmRlcj1jaGFuZ2VkZGF0ZSUyMERFU0MlMkNwcmlvcml0eSUyQ2J1Z19zZXZlcml0eSZhbXA7Y29tcG9uZW50PW1vZF9wcm94eV9leHByZXNzIj5Lbm93biBpc3N1ZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9iei5hcGFjaGUub3JnL2J1Z3ppbGxhL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1BcGFjaGUlMjBodHRwZC0yJmFtcDtjb21wb25lbnQ9bW9kX3Byb3h5X2V4cHJlc3MiPlJlcG9ydCBhIGJ1ZzwvYT48L2xpPjwvdWw+PGgzPlNlZSBhbHNvPC9oMz4KPHVsIGNsYXNzPSJzZWVhbHNvIj4KPGxpPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfcHJveHkuaHRtbCI+bW9kX3Byb3h5PC9hPjwvY29kZT48L2xpPgo8bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvbGk+PC91bD48L2Rpdj4KCjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlByb3h5RXhwcmVzc0RCTUZpbGUiIGlkPSJQcm94eUV4cHJlc3NEQk1GaWxlIj5Qcm94eUV4cHJlc3NEQk1GaWxlPC9hPiA8YSBuYW1lPSJwcm94eWV4cHJlc3NkYm1maWxlIiBpZD0icHJveHlleHByZXNzZGJtZmlsZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+UGF0aG5hbWUgdG8gREJNIGZpbGUuPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPlByb3h5RXhwcmVzc0RCTUZpbGUgJmx0O3BhdGhuYW1lJmd0OzwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5Ob25lPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX3Byb3h5X2V4cHJlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BdmFpbGFibGUgaW4gQXBhY2hlIDIuMy4xMyBhbmQgbGF0ZXI8L3RkPjwvdHI+CjwvdGFibGU+CiAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlByb3h5RXhwcmVzc0RCTUZpbGU8L2NvZGU+IGRpcmVjdGl2ZQogICAgcG9pbnRzIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUgRXhwcmVzcyBtYXAgREJNIGZpbGUuIFRoaXMKICAgIGZpbGUgc2VydmVzIHRvIG1hcCB0aGUgaW5jb21pbmcgc2VydmVyIG5hbWUsIG9idGFpbmVkIGZyb20KICAgIHRoZSBIb3N0OiBoZWFkZXIsIHRvIGEgYmFja2VuZCBVUkwuPC9wPgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPjxoMz5Ob3RlPC9oMz4KICAgICAgPHA+VGhlIGZpbGUgaXMgY29uc3RydWN0ZWQgZnJvbSBhIHBsYWluIHRleHQgZmlsZSBmb3JtYXQgdXNpbmcKICAgICAgICB0aGUgPGNvZGU+PGEgaHJlZj0iLi4vcHJvZ3JhbXMvaHR0eHQyZGJtLmh0bWwiPmh0dHh0MmRibTwvYT48L2NvZGU+CiAgICAgICAgdXRpbGl0eS48L3A+CgogICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+UHJveHlFeHByZXNzIG1hcCBmaWxlPC9oMz48cD48Y29kZT4KICAgICAgICAjIzxiciAvPgogICAgICAgICMjZXhwcmVzcy1tYXAudHh0OjxiciAvPgogICAgICAgICMjPGJyIC8+CiAgICAgICAgPGJyIC8+CiAgICAgICAgd3d3MS5leGFtcGxlLmNvbSAgICBodHRwOi8vMTkyLjE2OC4yMTEuMjo4MDgwPGJyIC8+CiAgICAgICAgd3d3Mi5leGFtcGxlLmNvbSAgIGh0dHA6Ly8xOTIuMTY4LjIxMS4xMjo4MDg4PGJyIC8+CiAgICAgICAgd3d3My5leGFtcGxlLmNvbSAgIGh0dHA6Ly8xOTIuMTY4LjIxMi4xMDxiciAvPgogICAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkNyZWF0ZSBEQk0gZmlsZTwvaDM+PHA+PGNvZGU+CiAgICAgICAgaHR0eHQyZGJtIC1pIGV4cHJlc3MtbWFwLnR4dCAtbyBlbWFwPGJyIC8+CiAgICAgICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5Db25maWd1cmF0aW9uPC9oMz48cD48Y29kZT4KICAgICAgICBQcm94eUV4cHJlc3NFbmFibGUgb248YnIgLz4KICAgICAgICBQcm94eUV4cHJlc3NEQk1GaWxlIGVtYXA8YnIgLz4KICAgICAgICA8L2NvZGU+PC9wPjwvZGl2PgogICAgPC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iUHJveHlFeHByZXNzREJNVHlwZSIgaWQ9IlByb3h5RXhwcmVzc0RCTVR5cGUiPlByb3h5RXhwcmVzc0RCTVR5cGU8L2E+IDxhIG5hbWU9InByb3h5ZXhwcmVzc2RibXR5cGUiIGlkPSJwcm94eWV4cHJlc3NkYm10eXBlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5EQk0gdHlwZSBvZiBmaWxlLjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5Qcm94eUV4cHJlc3NEQk1GaWxlICZsdDt0eXBlJmd0OzwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT4iZGVmYXVsdCI8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfcHJveHlfZXhwcmVzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdHk6PC9hPjwvdGg+PHRkPkF2YWlsYWJsZSBpbiBBcGFjaGUgMi4zLjEzIGFuZCBsYXRlcjwvdGQ+PC90cj4KPC90YWJsZT4KICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+UHJveHlFeHByZXNzREJNVHlwZTwvY29kZT4gZGlyZWN0aXZlCiAgICBjb250cm9scyB0aGUgREJNIHR5cGUgZXhwZWN0ZWQgYnkgdGhlIG1vZHVsZS4gVGhlIGRlZmF1bHQKICAgIGlzIHRoZSBkZWZhdWx0IERCTSB0eXBlIGNyZWF0ZWQgd2l0aCA8Y29kZT4KICAgIDxhIGhyZWY9Ii4uL3Byb2dyYW1zL2h0dHh0MmRibS5odG1sIj5odHR4dDJkYm08L2E+PC9jb2RlPi48L3A+CiAgICA8cD5Qb3NzaWJsZSB2YWx1ZXMgYXJlIChub3QgYWxsIG1heSBiZSBhdmFpbGFibGUgYXQgcnVuIHRpbWUpOjwvcD4KPHRhYmxlIGNsYXNzPSJib3JkZXJlZCI+PHRyIGNsYXNzPSJoZWFkZXIiPjx0aD5WYWx1ZTwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgo8dHI+PHRkPjxjb2RlPmRiPC9jb2RlPjwvdGQ+PHRkPiBCZXJrZWxleSBEQiBmaWxlczwvdGQ+PC90cj4KPHRyIGNsYXNzPSJvZGQiPjx0ZD48Y29kZT5nZGJtPC9jb2RlPjwvdGQ+PHRkPiBHREJNIGZpbGVzPC90ZD48L3RyPgo8dHI+PHRkPjxjb2RlPm5kYm08L2NvZGU+PC90ZD48dGQ+IE5EQk0gZmlsZXM8L3RkPjwvdHI+Cjx0ciBjbGFzcz0ib2RkIj48dGQ+PGNvZGU+c2RibTwvY29kZT48L3RkPjx0ZD4gU0RCTSBmaWxlcyAoYWx3YXlzIGF2YWlsYWJsZSk8L3RkPjwvdHI+Cjx0cj48dGQ+PGNvZGU+ZGVmYXVsdDwvY29kZT48L3RkPjx0ZD4gZGVmYXVsdCBEQk0gdHlwZTwvdGQ+PC90cj4KPC90YWJsZT4KCgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iUHJveHlFeHByZXNzRW5hYmxlIiBpZD0iUHJveHlFeHByZXNzRW5hYmxlIj5Qcm94eUV4cHJlc3NFbmFibGU8L2E+IDxhIG5hbWU9InByb3h5ZXhwcmVzc2VuYWJsZSIgaWQ9InByb3h5ZXhwcmVzc2VuYWJsZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RW5hYmxlIHRoZSBtb2R1bGUgZnVuY3Rpb25hbGl0eS48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+UHJveHlFeHByZXNzRW5hYmxlIFtvbnxvZmZdPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPm9mZjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9wcm94eV9leHByZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIEFwYWNoZSAyLjMuMTMgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5Qcm94eUV4cHJlc3NFbmFibGU8L2NvZGU+IGRpcmVjdGl2ZQogICAgY29udHJvbHMgd2hldGhlciB0aGUgbW9kdWxlIHdpbGwgYmUgYWN0aXZlLjwvcD4KCjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX3Byb3h5X2V4cHJlc3MuaHRtbCIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL21vZC9tb2RfcHJveHlfZXhwcmVzcy5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiBhbHQ9InRvcCIgLz48L2E+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgyPjxhIGlkPSJjb21tZW50c19zZWN0aW9uIiBuYW1lPSJjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9tb2QvbW9kX3Byb3h5X2V4cHJlc3MuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgeyAKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDE2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=