PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAKICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KPGh0bWw+Cgo8aGVhZD4KPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ikx1YVNvY2tldDogTUlNRSBzdXBwb3J0Ij4KPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9Ikx1YSwgTHVhU29ja2V0LCBNSU1FLCBMaWJyYXJ5LCBTdXBwb3J0Ij4gCjx0aXRsZT5MdWFTb2NrZXQ6IE1JTUUgbW9kdWxlPC90aXRsZT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZWZlcmVuY2UuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjwvaGVhZD4KCjxib2R5PgoKPCEtLSBoZWFkZXIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAtLT4KCjxkaXYgY2xhc3M9aGVhZGVyPgo8aHI+CjxjZW50ZXI+Cjx0YWJsZSBzdW1tYXJ5PSJMdWFTb2NrZXQgbG9nbyI+Cjx0cj48dGQgYWxpZ249Y2VudGVyPjxhIGhyZWY9Imh0dHA6Ly93d3cubHVhLm9yZyI+CjxpbWcgd2lkdGg9MTI4IGhlaWdodD0xMjggYm9yZGVyPTAgYWx0PSJMdWFTb2NrZXQiIHNyYz0ibHVhc29ja2V0LnBuZyI+CjwvYT48L3RkPjwvdHI+Cjx0cj48dGQgYWxpZ249Y2VudGVyIHZhbGlnbj10b3A+TmV0d29yayBzdXBwb3J0IGZvciB0aGUgTHVhIGxhbmd1YWdlCjwvdGQ+PC90cj4KPC90YWJsZT4KPHAgY2xhc3M9YmFyPgo8YSBocmVmPSJob21lLmh0bWwiPmhvbWU8L2E+ICZtaWRkb3Q7CjxhIGhyZWY9ImhvbWUuaHRtbCNkb3dubG9hZCI+ZG93bmxvYWQ8L2E+ICZtaWRkb3Q7CjxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIj5pbnN0YWxsYXRpb248L2E+ICZtaWRkb3Q7CjxhIGhyZWY9ImludHJvZHVjdGlvbi5odG1sIj5pbnRyb2R1Y3Rpb248L2E+ICZtaWRkb3Q7CjxhIGhyZWY9InJlZmVyZW5jZS5odG1sIj5yZWZlcmVuY2U8L2E+IAo8L3A+CjwvY2VudGVyPgo8aHI+CjwvZGl2PgoKPCEtLSBtaW1lICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAtLT4KCjxoMiBpZD1taW1lPk1JTUU8L2gyPiAKCjxwPgpUaGUgPHR0Pm1pbWU8L3R0PiBuYW1lc3BhY2Ugb2ZmZXJzIGZpbHRlcnMgdGhhdCBhcHBseSBhbmQgcmVtb3ZlIGNvbW1vbgpjb250ZW50IHRyYW5zZmVyIGVuY29kaW5ncywgc3VjaCBhcyBCYXNlNjQgYW5kIFF1b3RlZC1QcmludGFibGUuCkl0IGFsc28gcHJvdmlkZXMgZnVuY3Rpb25zIHRvIGJyZWFrIHRleHQgaW50byBsaW5lcyBhbmQgY2hhbmdlCnRoZSBlbmQtb2YtbGluZSBjb252ZW50aW9uLgpNSU1FIGlzIGRlc2NyaWJlZCBtYWlubHkgaW4gCjxhIGhyZWY9Imh0dHA6Ly93d3cuY3MucHJpbmNldG9uLmVkdS9+ZGllZ28vcmZjL3JmYzIwNDUudHh0Ij5SRkMgMjA0NTwvYT4sCjxhIGhyZWY9Imh0dHA6Ly93d3cuY3MucHJpbmNldG9uLmVkdS9+ZGllZ28vcmZjL3JmYzIwNDYudHh0Ij4yMDQ2PC9hPiwKPGEgaHJlZj0iaHR0cDovL3d3dy5jcy5wcmluY2V0b24uZWR1L35kaWVnby9yZmMvcmZjMjA0Ny50eHQiPjIwNDc8L2E+LAo8YSBocmVmPSJodHRwOi8vd3d3LmNzLnByaW5jZXRvbi5lZHUvfmRpZWdvL3JmYy9yZmMyMDQ3LnR4dCI+MjA0ODwvYT4sIGFuZAo8YSBocmVmPSJodHRwOi8vd3d3LmNzLnByaW5jZXRvbi5lZHUvfmRpZWdvL3JmYy9yZmMyMDQ4LnR4dCI+MjA0OTwvYT4uCjwvcD4KCjxwPgpBbGwgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieSB0aGUgTUlNRSBtb2R1bGUgCmZvbGxvd3MgdGhlIGlkZWFzIHByZXNlbnRlZCBpbiAKPGEgaHJlZj0iaHR0cDovL2x1YS11c2Vycy5vcmcvd2lraS9GaWx0ZXJzU291cmNlc0FuZFNpbmtzIj4KTFROMDEyLCBGaWx0ZXJzIHNvdXJjZXMgYW5kIHNpbmtzPC9hPi4gCjwvcD4KCjxwPiAKVG8gb2J0YWluIHRoZSA8dHQ+bWltZTwvdHQ+IG5hbWVzcGFjZSwgcnVuOgo8L3A+Cgo8cHJlIGNsYXNzPWV4YW1wbGU+Ci0tIGxvYWRzIHRoZSBNSU1FIG1vZHVsZSBhbmQgZXZlcnl0aGluZyBpdCByZXF1aXJlcwpsb2NhbCBtaW1lID0gcmVxdWlyZSgibWltZSIpCjwvcHJlPgoKCjwhLS0gSGlnaC1sZXZlbCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgLS0+Cgo8aDMgaWQ9aGlnaD5IaWdoLWxldmVsIGZpbHRlcnM8L2gzPgoKPCEtLSBub3JtYWxpemUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrIC0tPgoKPHAgY2xhc3M9bmFtZSBpZD0ibm9ybWFsaXplIj4KbWltZS48Yj5ub3JtYWxpemUoPC9iPlttYXJrZXJdPGI+KTwvYj4KPC9wPgoKPHAgY2xhc3M9ZGVzY3JpcHRpb24+CkNvbnZlcnRzIG1vc3QgY29tbW9uIGVuZC1vZi1saW5lIG1hcmtlcnMgdG8gYSBzcGVjaWZpYyBnaXZlbiBtYXJrZXIuIAo8L3A+Cgo8cCBjbGFzcz1wYXJhbWV0ZXJzPgo8dHQ+TWFya2VyPC90dD4gaXMgdGhlIG5ldyBtYXJrZXIuIEl0IGRlZmF1bHRzIHRvIENSTEYsIHRoZSBjYW5vbmljIAplbmQtb2YtbGluZSBtYXJrZXIgZGVmaW5lZCBieSB0aGUgTUlNRSBzdGFuZGFyZC4KPC9wPgoKPHAgY2xhc3M9cmV0dXJuPgpUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGZpbHRlciB0aGF0IHBlcmZvcm1zIHRoZSBjb252ZXJzaW9uLiAKPC9wPgoKPHAgY2xhc3M9bm90ZT4KTm90ZTogVGhlcmUgaXMgbm8gcGVyZmVjdCBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0uIERpZmZlcmVudCBlbmQtb2YtbGluZQptYXJrZXJzIGFyZSBhbiBldmlsIHRoYXQgd2lsbCBwcm9iYWJseSBwbGFndWUgZGV2ZWxvcGVycyBmb3JldmVyLiAKVGhpcyBmdW5jdGlvbiwgaG93ZXZlciwgd2lsbCB3b3JrIHBlcmZlY3RseSBmb3IgdGV4dCBjcmVhdGVkIHdpdGggYW55IG9mCnRoZSBtb3N0IGNvbW1vbiBlbmQtb2YtbGluZSBtYXJrZXJzLCBpLmUuIHRoZSBNYWMgT1MgKENSKSwgdGhlIFVuaXggKExGKSwgCm9yIHRoZSBET1MgKENSTEYpIGNvbnZlbnRpb25zLiBFdmVuIGlmIHRoZSBkYXRhIGhhcyBtaXhlZCBlbmQtb2YtbGluZQptYXJrZXJzLCB0aGUgZnVuY3Rpb24gd2lsbCBzdGlsbCB3b3JrIHdlbGwsIGFsdGhvdWdoIGl0IGRvZXNuJ3QgCmd1YXJhbnRlZSB0aGF0IHRoZSBudW1iZXIgb2YgZW1wdHkgbGluZXMgd2lsbCBiZSBjb3JyZWN0Lgo8L3A+Cgo8IS0tIGRlY29kZSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrIC0tPgoKPHAgY2xhc3M9bmFtZSBpZD0iZGVjb2RlIj4KbWltZS48Yj5kZWNvZGUoPC9iPiJiYXNlNjQiPGI+KTwvYj48YnI+Cm1pbWUuPGI+ZGVjb2RlKDwvYj4icXVvdGVkLXByaW50YWJsZSI8Yj4pPC9iPgo8L3A+Cgo8cCBjbGFzcz1kZXNjcmlwdGlvbj4KUmV0dXJucyBhIGZpbHRlciB0aGF0IGRlY29kZXMgZGF0YSBmcm9tIGEgZ2l2ZW4gdHJhbnNmZXIgY29udGVudAplbmNvZGluZy4KPC9wPgoKPCEtLSBlbmNvZGUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAtLT4KCjxwIGNsYXNzPW5hbWUgaWQ9ImVuY29kZSI+Cm1pbWUuPGI+ZW5jb2RlKDwvYj4iYmFzZTY0IjxiPik8L2I+PGJyPgptaW1lLjxiPmVuY29kZSg8L2I+InF1b3RlZC1wcmludGFibGUiIFssIG1vZGVdPGI+KTwvYj4KPC9wPgoKPHAgY2xhc3M9ZGVzY3JpcHRpb24+ClJldHVybnMgYSBmaWx0ZXIgdGhhdCBlbmNvZGVzIGRhdGEgYWNjb3JkaW5nIHRvIGEgZ2l2ZW4gdHJhbnNmZXIgY29udGVudAplbmNvZGluZy4KPC9wPgoKPHAgY2xhc3M9cGFyYW1ldGVycz4KSW4gdGhlIFF1b3RlZC1QcmludGFibGUgY2FzZSwgdGhlIHVzZXIgY2FuIHNwZWNpZnkgd2hldGhlciB0aGUgZGF0YSBpcwp0ZXh0dWFsIG9yIGJpbmFyeSwgYnkgcGFzc2luZyB0aGUgPHR0Pm1vZGU8L3R0PiBzdHJpbmdzICI8dHQ+dGV4dDwvdHQ+IiBvcgoiPHR0PmJpbmFyeTwvdHQ+Ii4gPHR0Pk1vZGU8L3R0PiBkZWZhdWx0cyB0byAiPHR0PnRleHQ8L3R0PiIuCjwvcD4KCjxwIGNsYXNzPW5vdGU+CkFsdGhvdWdoIGJvdGggdHJhbnNmZXIgY29udGVudCBlbmNvZGluZ3Mgc3BlY2lmeSBhIGxpbWl0IGZvciB0aGUgbGluZQpsZW5ndGgsIHRoZSBlbmNvZGluZyBmaWx0ZXJzIGRvIDxlbT5ub3Q8L2VtPiBicmVhayB0ZXh0IGludG8gbGluZXMgKGZvcgphZGRlZCBmbGV4aWJpbGl0eSkuIApCZWxvdyBpcyBhIGZpbHRlciB0aGF0IGNvbnZlcnRzIGJpbmFyeSBkYXRhIHRvIHRoZSBCYXNlNjQgdHJhbnNmZXIgY29udGVudAplbmNvZGluZyBhbmQgYnJlYWtzIGl0IGludG8gbGluZXMgb2YgdGhlIGNvcnJlY3Qgc2l6ZS4KPC9wPgoKPHByZSBjbGFzcz1leGFtcGxlPgpiYXNlNjQgPSBsdG4xMi5maWx0ZXIuY2hhaW4oCiAgbWltZS5lbmNvZGUoImJhc2U2NCIpLAogIG1pbWUud3JhcCgiYmFzZTY0IikKKQo8L3ByZT4KCjxwIGNsYXNzPW5vdGU+Ck5vdGU6IFRleHQgZGF0YSA8ZW0+aGFzPC9lbT4gdG8gYmUgY29udmVydGVkIHRvIGNhbm9uaWMgZm9ybQo8ZW0+YmVmb3JlPC9lbT4gYmVpbmcgZW5jb2RlZC4KPC9wPgoKPHByZSBjbGFzcz1leGFtcGxlPgpiYXNlNjQgPSBsdG4xMi5maWx0ZXIuY2hhaW4oCiAgbWltZS5ub3JtYWxpemUoKSwKICBtaW1lLmVuY29kZSgiYmFzZTY0IiksCiAgbWltZS53cmFwKCJiYXNlNjQiKQopCjwvcHJlPgoKPCEtLSBzdHVmZiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgLS0+Cgo8cCBjbGFzcz1uYW1lIGlkPSJzdHVmZiI+Cm1pbWUuPGI+c3R1ZmYoKTwvYj48YnI+CjwvcD4KCjxwIGNsYXNzPWRlc2NyaXB0aW9uPgpDcmVhdGVzIGFuZCByZXR1cm5zIGEgZmlsdGVyIHRoYXQgcGVyZm9ybXMgc3R1ZmZpbmcgb2YgU01UUCBtZXNzYWdlcy4KPC9wPgoKPHAgY2xhc3M9bm90ZT4KTm90ZTogVGhlIDxhIGhyZWY9c210cC5odG1sI3NlbmQ+PHR0PnNtdHAuc2VuZDwvdHQ+PC9hPiBmdW5jdGlvbiAKdXNlcyB0aGlzIGZpbHRlciBhdXRvbWF0aWNhbGx5LiBZb3UgZG9uJ3QgbmVlZCB0byBjaGFpbiBpdCB3aXRoIHlvdXIKc291cmNlLCBvciBhcHBseSBpdCB0byB5b3VyIG1lc3NhZ2UgYm9keS4gIAo8L3A+Cgo8IS0tIHdyYXAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrIC0tPgoKPHAgY2xhc3M9bmFtZSBpZD0id3JhcCI+Cm1pbWUuPGI+d3JhcCg8L2I+InRleHQiIFssIGxlbmd0aF08Yj4pPC9iPjxicj4KbWltZS48Yj53cmFwKDwvYj4iYmFzZTY0IjxiPik8L2I+PGJyPgptaW1lLjxiPndyYXAoPC9iPiJxdW90ZWQtcHJpbnRhYmxlIjxiPik8L2I+CjwvcD4KCjxwIGNsYXNzPWRlc2NyaXB0aW9uPgpSZXR1cm5zIGEgZmlsdGVyIHRoYXQgYnJlYWtzIGRhdGEgaW50byBsaW5lcy4gCjwvcD4KCjxwIGNsYXNzPXBhcmFtZXRlcnM+ClRoZSAiPHR0PnRleHQ8L3R0PiIgbGluZS13cmFwIGZpbHRlciBzaW1wbHkgYnJlYWtzIHRleHQgaW50byBsaW5lcyBieSAKaW5zZXJ0aW5nIENSTEYgZW5kLW9mLWxpbmUgbWFya2VycyBhdCBhcHByb3ByaWF0ZSBwb3NpdGlvbnMuIAo8dHQ+TGVuZ3RoPC90dD4gZGVmYXVsdHMgNzYuIApUaGUgIjx0dD5iYXNlNjQ8L3R0PiIgbGluZS13cmFwIGZpbHRlciB3b3JrcyBqdXN0IGxpa2UgdGhlIGRlZmF1bHQKIjx0dD50ZXh0PC90dD4iIGxpbmUtd3JhcCBmaWx0ZXIgd2l0aCBkZWZhdWx0IGxlbmd0aC4gClRoZSBmdW5jdGlvbiBjYW4gYWxzbyB3cmFwICI8dHQ+cXVvdGVkLXByaW50YWJsZTwvdHQ+IiBsaW5lcywgdGFraW5nIGNhcmUKbm90IHRvIGJyZWFrIGxpbmVzIGluIHRoZSBtaWRkbGUgb2YgYW4gZXNjYXBlZCBjaGFyYWN0ZXIuIEluIHRoYXQgY2FzZSwgdGhlCmxpbmUgbGVuZ3RoIGlzIGZpeGVkIGF0IDc2Lgo8L3A+Cgo8cCBjbGFzcz1ub3RlPgpGb3IgZXhhbXBsZSwgdG8gY3JlYXRlIGFuIGVuY29kaW5nIGZpbHRlciBmb3IgdGhlIFF1b3RlZC1QcmludGFibGUgdHJhbnNmZXIgY29udGVudCBlbmNvZGluZyBvZiB0ZXh0IGRhdGEsIGRvIHRoZSBmb2xsb3dpbmc6CjwvcD4KCjxwcmUgY2xhc3M9ZXhhbXBsZT4KcXAgPSBsdG4xMi5maWx0ZXIuY2hhaW4oCiAgbWltZS5ub3JtYWxpemUoKSwKICBtaW1lLmVuY29kZSgicXVvdGVkLXByaW50YWJsZSIpLAogIG1pbWUud3JhcCgicXVvdGVkLXByaW50YWJsZSIpCikKPC9wcmU+Cgo8cCBjbGFzcz1ub3RlPgpOb3RlOiBUbyBicmVhayBpbnRvIGxpbmVzIHdpdGggYSBkaWZmZXJlbnQgZW5kLW9mLWxpbmUgY29udmVudGlvbiwgYXBwbHkKYSBub3JtYWxpemF0aW9uIGZpbHRlciBhZnRlciB0aGUgbGluZSBicmVhayBmaWx0ZXIuIAo8L3A+Cgo8IS0tIExvdy1sZXZlbCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrIC0tPgoKPGgzIGlkPWxvdz5Mb3ctbGV2ZWwgZmlsdGVyczwvaDM+Cgo8IS0tIGI2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrIC0tPgoKPHAgY2xhc3M9bmFtZSBpZD0iYjY0Ij4KQSwgQiA9IG1pbWUuPGI+YjY0KDwvYj5DIFssIERdPGI+KTwvYj4KPC9wPgoKPHAgY2xhc3M9ZGVzY3JpcHRpb24+Ckxvdy1sZXZlbCBmaWx0ZXIgdG8gcGVyZm9ybSBCYXNlNjQgZW5jb2RpbmcuIAo8L3A+Cgo8cCBjbGFzcz1kZXNjcmlwdGlvbj4KPHR0PkE8L3R0PiBpcyB0aGUgZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBsYXJnZXN0IHByZWZpeCBvZiAKPHR0PkMuLkQ8L3R0PiAKdGhhdCBjYW4gYmUgZW5jb2RlZCB1bmFtYmlndW91c2x5LiA8dHQ+QjwvdHQ+IGhhcyB0aGUgcmVtYWluaW5nIGJ5dGVzIG9mIAo8dHQ+Qy4uRDwvdHQ+LCA8ZW0+YmVmb3JlPC9lbT4gZW5jb2RpbmcuIApJZiA8dHQ+RDwvdHQ+IGlzIDx0dD48Yj5uaWw8L2I+PC90dD4sIDx0dD5BPC90dD4gaXMgcGFkZGVkIHdpdGggCnRoZSBlbmNvZGluZyBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzIG9mIDx0dD5DPC90dD4uIAo8L3A+Cgo8cCBjbGFzcz1ub3RlPgpOb3RlOiBUaGUgc2ltcGxlc3QgdXNlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gZW5jb2RlIGEgc3RyaW5nIGludG8gaXQncwpCYXNlNjQgdHJhbnNmZXIgY29udGVudCBlbmNvZGluZy4gTm90aWNlIHRoZSBleHRyYSBwYXJlbnRoZXNpcyBhcm91bmQgdGhlCmNhbGwgdG8gPHR0Pm1pbWUuYjY0PC90dD4sIHRvIGRpc2NhcmQgdGhlIHNlY29uZCByZXR1cm4gdmFsdWUuCjwvcD4KCjxwcmUgY2xhc3M9ZXhhbXBsZT4KcHJpbnQoKG1pbWUuYjY0KCJkaWVnbzpwYXNzd29yZCIpKSkKLS0mZ3Q7IFpHbGxaMjg2Y0dGemMzZHZjbVE9CjwvcHJlPgoKPCEtLSBkb3QgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgLS0+CjxwIGNsYXNzPW5hbWUgaWQ9ImRvdCI+CkEsIG4gPSBtaW1lLjxiPmRvdCg8L2I+bSBbLCBCXTxiPik8L2I+CjwvcD4KCjxwIGNsYXNzPWRlc2NyaXB0aW9uPgpMb3ctbGV2ZWwgZmlsdGVyIHRvIHBlcmZvcm0gU01UUCBzdHVmZmluZyBhbmQgZW5hYmxlIHRyYW5zbWlzc2lvbiBvZgptZXNzYWdlcyBjb250YWluaW5nIHRoZSBzZXF1ZW5jZSAiQ1JMRi5DUkxGIi4gCjwvcD4KCjxwIGNsYXNzPXBhcmFtZXRlcnM+Cjx0dD5BPC90dD4gaXMgdGhlIHN0dWZmZWQgdmVyc2lvbiBvZiA8dHQ+QjwvdHQ+LiAnPHR0Pm48L3R0PicgZ2l2ZXMgdGhlCm51bWJlciBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIHNlcXVlbmNlIENSTEYgc2VlbiBpbiB0aGUgZW5kIG9mIDx0dD5CPC90dD4uCic8dHQ+bTwvdHQ+JyBzaG91bGQgdGVsbCB0aGUgc2FtZSwgYnV0IGZvciB0aGUgcHJldmlvdXMgY2h1bmsuCjwvcD4KCjxwIGNsYXNzPW5vdGU+Tm90ZTogVGhlIG1lc3NhZ2UgYm9keSBpcyBkZWZpbmVkIHRvIGJlZ2luIHdpdGggCmFuIGltcGxpY2l0IENSTEYuIFRoZXJlZm9yZSwgdG8gc3R1ZmYgYSBtZXNzYWdlIGNvcnJlY3RseSwgdGhlCmZpcnN0IDx0dD5tPC90dD4gc2hvdWxkIGhhdmUgdGhlIHZhbHVlIDIuIAo8L3A+Cgo8cHJlIGNsYXNzPWV4YW1wbGU+CnByaW50KChzdHJpbmcuZ3N1YihtaW1lLmRvdCgyLCAiLlxyXG5TdHVmZmluZyB0aGUgbWVzc2FnZS5cclxuLlxyXG4uIiksICJcclxuIiwgIlxcbiIpKSkKLS0mZ3Q7IC4uXG5TdHVmZmluZyB0aGUgbWVzc2FnZS5cbi4uXG4uLgo8L3ByZT4KCjxwIGNsYXNzPW5vdGU+Ck5vdGU6IFRoZSA8YSBocmVmPXNtdHAuaHRtbCNzZW5kPjx0dD5zbXRwLnNlbmQ8L3R0PjwvYT4gZnVuY3Rpb24gCnVzZXMgdGhpcyBmaWx0ZXIgYXV0b21hdGljYWxseS4gWW91IGRvbid0IG5lZWQgdG8gCmFwcGx5IGl0IGFnYWluLiAKPC9wPgoKPCEtLSBlb2wgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAtLT4KCjxwIGNsYXNzPW5hbWUgaWQ9ImVvbCI+CkEsIEIgPSBtaW1lLjxiPmVvbCg8L2I+QyBbLCBELCBtYXJrZXJdPGI+KTwvYj4KPC9wPgoKPHAgY2xhc3M9ZGVzY3JpcHRpb24+Ckxvdy1sZXZlbCBmaWx0ZXIgdG8gcGVyZm9ybSBlbmQtb2YtbGluZSBtYXJrZXIgdHJhbnNsYXRpb24uIApGb3IgZWFjaCBjaHVuaywgdGhlIGZ1bmN0aW9uIG5lZWRzIHRvIGtub3cgaWYgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHRoZQpwcmV2aW91cyBjaHVuayBjb3VsZCBiZSBwYXJ0IG9mIGFuIGVuZC1vZi1saW5lIG1hcmtlciBvciBub3QuIFRoaXMgaXMgdGhlCmNvbnRleHQgdGhlIGZ1bmN0aW9uIHJlY2VpdmVzIGJlc2lkZXMgdGhlIGNodW5rLiAgQW4gdXBkYXRlZCB2ZXJzaW9uIG9mCnRoZSBjb250ZXh0IGlzIHJldHVybmVkIGFmdGVyIGVhY2ggbmV3IGNodW5rLiAKPC9wPgoKPHAgY2xhc3M9cGFyYW1ldGVycz4KPHR0PkE8L3R0PiBpcyB0aGUgdHJhbnNsYXRlZCB2ZXJzaW9uIG9mIDx0dD5EPC90dD4uIDx0dD5DPC90dD4gaXMgdGhlCkFTQ0lJIHZhbHVlIG9mIHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUgcHJldmlvdXMgY2h1bmssIGlmIGl0IHdhcyBhCmNhbmRpZGF0ZSBmb3IgbGluZSBicmVhaywgb3IgMCBvdGhlcndpc2UuIAo8dHQ+QjwvdHQ+IGlzIHRoZSBzYW1lIGFzIDx0dD5DPC90dD4sIGJ1dCBmb3IgdGhlIGN1cnJlbnQKY2h1bmsuIDx0dD5NYXJrZXI8L3R0PiBnaXZlcyB0aGUgbmV3IGVuZC1vZi1saW5lIG1hcmtlciBhbmQgZGVmYXVsdHMgdG8gQ1JMRi4KPC9wPgoKPHByZSBjbGFzcz1leGFtcGxlPgotLSB0cmFuc2xhdGVzIHRoZSBlbmQtb2YtbGluZSBtYXJrZXIgdG8gVU5JWAp1bml4ID0gbWltZS5lb2woMCwgZG9zLCAiXG4iKSAKPC9wcmU+Cgo8IS0tIHFwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgLS0+Cgo8cCBjbGFzcz1uYW1lIGlkPSJxcCI+CkEsIEIgPSBtaW1lLjxiPnFwKDwvYj5DIFssIEQsIG1hcmtlcl08Yj4pPC9iPgo8L3A+Cgo8cCBjbGFzcz1kZXNjcmlwdGlvbj4KTG93LWxldmVsIGZpbHRlciB0byBwZXJmb3JtIFF1b3RlZC1QcmludGFibGUgZW5jb2RpbmcuIAo8L3A+Cgo8cCBjbGFzcz1wYXJhbWV0ZXJzPgo8dHQ+QTwvdHQ+IGlzIHRoZSBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIGxhcmdlc3QgcHJlZml4IG9mIAo8dHQ+Qy4uRDwvdHQ+IAp0aGF0IGNhbiBiZSBlbmNvZGVkIHVuYW1iaWd1b3VzbHkuIDx0dD5CPC90dD4gaGFzIHRoZSByZW1haW5pbmcgYnl0ZXMgb2YgCjx0dD5DLi5EPC90dD4sIDxlbT5iZWZvcmU8L2VtPiBlbmNvZGluZy4gCklmIDx0dD5EPC90dD4gaXMgPHR0PjxiPm5pbDwvYj48L3R0PiwgPHR0PkE8L3R0PiBpcyBwYWRkZWQgd2l0aCAKdGhlIGVuY29kaW5nIG9mIHRoZSByZW1haW5pbmcgYnl0ZXMgb2YgPHR0PkM8L3R0Pi4gClRocm91Z2hvdXQgZW5jb2RpbmcsIG9jY3VycmVuY2VzIG9mIENSTEYgYXJlIHJlcGxhY2VkIGJ5IHRoZSAKPHR0Pm1hcmtlcjwvdHQ+LCB3aGljaCBpdHNlbGYgZGVmYXVsdHMgdG8gQ1JMRi4KPC9wPgoKPHAgY2xhc3M9bm90ZT4KTm90ZTogVGhlIHNpbXBsZXN0IHVzZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRvIGVuY29kZSBhIHN0cmluZyBpbnRvIGl0J3MKUXVvdGVkLVByaW50YWJsZSB0cmFuc2ZlciBjb250ZW50IGVuY29kaW5nLiAKTm90aWNlIHRoZSBleHRyYSBwYXJlbnRoZXNpcyBhcm91bmQgdGhlIGNhbGwgdG8gPHR0Pm1pbWUucXA8L3R0PiwgdG8gZGlzY2FyZCB0aGUgc2Vjb25kIHJldHVybiB2YWx1ZS4KPC9wPgoKPHByZSBjbGFzcz1leGFtcGxlPgpwcmludCgobWltZS5xcCgibWHn4yIpKSkKLS0mZ3Q7IG1hPUU3PUUzPQo8L3ByZT4KCjwhLS0gcXB3cnAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAtLT4KCjxwIGNsYXNzPW5hbWUgaWQ9InFwd3JwIj4KQSwgbSA9IG1pbWUuPGI+cXB3cnAoPC9iPm4gWywgQiwgbGVuZ3RoXTxiPik8L2I+CjwvcD4KCjxwIGNsYXNzPWRlc2NyaXB0aW9uPgpMb3ctbGV2ZWwgZmlsdGVyIHRvIGJyZWFrIFF1b3RlZC1QcmludGFibGUgdGV4dCBpbnRvIGxpbmVzLiAKPC9wPgoKPHAgY2xhc3M9cGFyYW1ldGVycz4KPHR0PkE8L3R0PiBpcyBhIGNvcHkgb2YgPHR0PkI8L3R0PiwgYnJva2VuIGludG8gbGluZXMgb2YgYXQgbW9zdCAKPHR0Pmxlbmd0aDwvdHQ+IGJ5dGVzIChkZWZhdWx0cyB0byA3NikuIAonPHR0Pm48L3R0Picgc2hvdWxkIHRlbGwgaG93IG1hbnkgYnl0ZXMgYXJlIGxlZnQgZm9yIHRoZSBmaXJzdCAKbGluZSBvZiA8dHQ+QjwvdHQ+IGFuZCAnPHR0Pm08L3R0PicgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIApsZWZ0IGluIHRoZSBsYXN0IGxpbmUgb2YgPHR0PkE8L3R0Pi4gCjwvcD4KCjxwIGNsYXNzPW5vdGU+Ck5vdGU6IEJlc2lkZXMgYnJlYWtpbmcgdGV4dCBpbnRvIGxpbmVzLCB0aGlzIGZ1bmN0aW9uIG1ha2VzIHN1cmUgdGhlIGxpbmUKYnJlYWtzIGRvbid0IGZhbGwgaW4gdGhlIG1pZGRsZSBvZiBhbiBlc2NhcGVkIGNoYXJhY3RlciBjb21iaW5hdGlvbi4gQWxzbywKdGhpcyBmdW5jdGlvbiBvbmx5IGJyZWFrcyBsaW5lcyB0aGF0IGFyZSBiaWdnZXIgdGhhbiA8dHQ+bGVuZ3RoPC90dD4gYnl0ZXMuCjwvcD4KCjwhLS0gdW5iNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrIC0tPgoKPHAgY2xhc3M9bmFtZSBpZD0idW5iNjQiPgpBLCBCID0gbWltZS48Yj51bmI2NCg8L2I+QyBbLCBEXTxiPik8L2I+CjwvcD4KCjxwIGNsYXNzPWRlc2NyaXB0aW9uPgpMb3ctbGV2ZWwgZmlsdGVyIHRvIHBlcmZvcm0gQmFzZTY0IGRlY29kaW5nLiAKPC9wPgoKPHAgY2xhc3M9cGFyYW1ldGVycz4KPHR0PkE8L3R0PiBpcyB0aGUgZGVjb2RlZCB2ZXJzaW9uIG9mIHRoZSBsYXJnZXN0IHByZWZpeCBvZiAKPHR0PkMuLkQ8L3R0PiAKdGhhdCBjYW4gYmUgZGVjb2RlZCB1bmFtYmlndW91c2x5LiA8dHQ+QjwvdHQ+IGhhcyB0aGUgcmVtYWluaW5nIGJ5dGVzIG9mIAo8dHQ+Qy4uRDwvdHQ+LCA8ZW0+YmVmb3JlPC9lbT4gZGVjb2RpbmcuIApJZiA8dHQ+RDwvdHQ+IGlzIDx0dD48Yj5uaWw8L2I+PC90dD4sIDx0dD5BPC90dD4gaXMgdGhlIGVtcHR5IHN0cmluZwphbmQgPHR0PkI8L3R0PiByZXR1cm5zIHdoYXRldmVyIGNvdWxkbid0IGJlIGRlY29kZWQuIAo8L3A+Cgo8cCBjbGFzcz1ub3RlPgpOb3RlOiBUaGUgc2ltcGxlc3QgdXNlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gZGVjb2RlIGEgc3RyaW5nIGZyb20gaXQncwpCYXNlNjQgdHJhbnNmZXIgY29udGVudCBlbmNvZGluZy4gCk5vdGljZSB0aGUgZXh0cmEgcGFyZW50aGVzaXMgYXJvdW5kIHRoZSBjYWxsIHRvIDx0dD5taW1lLnVucXA8L3R0PiwgdG8gZGlzY2FyZCB0aGUgc2Vjb25kIHJldHVybiB2YWx1ZS4KPC9wPgoKPHByZSBjbGFzcz1leGFtcGxlPgpwcmludCgobWltZS51bmI2NCgiWkdsbFoyODZjR0Z6YzNkdmNtUT0iKSkpCi0tJmd0OyBkaWVnbzpwYXNzd29yZAo8L3ByZT4KCjwhLS0gdW5xcCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgLS0+Cgo8cCBjbGFzcz1uYW1lIGlkPSJ1bnFwIj4KQSwgQiA9IG1pbWUuPGI+dW5xcCg8L2I+QyBbLCBEXTxiPik8L2I+CjwvcD4KCjxwIGNsYXNzPWRlc2NyaXB0aW9uPgpMb3ctbGV2ZWwgZmlsdGVyIHRvIHJlbW92ZSB0aGUgUXVvdGVkLVByaW50YWJsZSB0cmFuc2ZlciBjb250ZW50IGVuY29kaW5nCmZyb20gZGF0YS4gCjwvcD4KCjxwIGNsYXNzPXBhcmFtZXRlcnM+Cjx0dD5BPC90dD4gaXMgdGhlIGRlY29kZWQgdmVyc2lvbiBvZiB0aGUgbGFyZ2VzdCBwcmVmaXggb2YgCjx0dD5DLi5EPC90dD4gCnRoYXQgY2FuIGJlIGRlY29kZWQgdW5hbWJpZ3VvdXNseS4gPHR0PkI8L3R0PiBoYXMgdGhlIHJlbWFpbmluZyBieXRlcyBvZiAKPHR0PkMuLkQ8L3R0PiwgPGVtPmJlZm9yZTwvZW0+IGRlY29kaW5nLiAKSWYgPHR0PkQ8L3R0PiBpcyA8dHQ+PGI+bmlsPC9iPjwvdHQ+LCA8dHQ+QTwvdHQ+IGlzIGF1Z21lbnRlZCB3aXRoIAp0aGUgZW5jb2Rpbmcgb2YgdGhlIHJlbWFpbmluZyBieXRlcyBvZiA8dHQ+QzwvdHQ+LiAKPC9wPgoKPHAgY2xhc3M9bm90ZT4KTm90ZTogVGhlIHNpbXBsZXN0IHVzZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRvIGRlY29kZSBhIHN0cmluZyBmcm9tIGl0J3MKUXVvdGVkLVByaW50YWJsZSB0cmFuc2ZlciBjb250ZW50IGVuY29kaW5nLiAKTm90aWNlIHRoZSBleHRyYSBwYXJlbnRoZXNpcyBhcm91bmQgdGhlIGNhbGwgdG8gPHR0Pm1pbWUudW5xcDwvdHQ+LCB0byBkaXNjYXJkIHRoZSBzZWNvbmQgcmV0dXJuIHZhbHVlLgo8L3A+Cgo8cHJlIGNsYXNzPWV4YW1wbGU+CnByaW50KChtaW1lLnFwKCJtYT1FNz1FMz0iKSkpCi0tJmd0OyBtYefjCjwvcHJlPgoKPCEtLSB3cnAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAtLT4KCjxwIGNsYXNzPW5hbWUgaWQ9IndycCI+CkEsIG0gPSBtaW1lLjxiPndycCg8L2I+biBbLCBCLCBsZW5ndGhdPGI+KTwvYj4KPC9wPgoKPHAgY2xhc3M9ZGVzY3JpcHRpb24+Ckxvdy1sZXZlbCBmaWx0ZXIgdG8gYnJlYWsgdGV4dCBpbnRvIGxpbmVzIHdpdGggQ1JMRiBtYXJrZXIuIApUZXh0IGlzIGFzc3VtZWQgdG8gYmUgaW4gdGhlIDxhIGhyZWY9I25vcm1hbGl6ZT48dHQ+bm9ybWFsaXplPC90dD48L2E+IGZvcm0uCjwvcD4KCjxwIGNsYXNzPXBhcmFtZXRlcnM+Cjx0dD5BPC90dD4gaXMgYSBjb3B5IG9mIDx0dD5CPC90dD4sIGJyb2tlbiBpbnRvIGxpbmVzIG9mIGF0IG1vc3QgCjx0dD5sZW5ndGg8L3R0PiBieXRlcyAoZGVmYXVsdHMgdG8gNzYpLiAKJzx0dD5uPC90dD4nIHNob3VsZCB0ZWxsIGhvdyBtYW55IGJ5dGVzIGFyZSBsZWZ0IGZvciB0aGUgZmlyc3QgCmxpbmUgb2YgPHR0PkI8L3R0PiBhbmQgJzx0dD5tPC90dD4nIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyAKbGVmdCBpbiB0aGUgbGFzdCBsaW5lIG9mIDx0dD5BPC90dD4uIAo8L3A+Cgo8cCBjbGFzcz1ub3RlPgpOb3RlOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYnJlYWtzIGxpbmVzIHRoYXQgYXJlIGJpZ2dlciB0aGFuIAo8dHQ+bGVuZ3RoPC90dD4gYnl0ZXMuIFRoZSByZXN1bHRpbmcgbGluZSBsZW5ndGggZG9lcyBub3QgaW5jbHVkZSB0aGUgQ1JMRgptYXJrZXIuCjwvcD4KCgo8IS0tIGZvb3RlciArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrIC0tPgoKPGRpdiBjbGFzcz1mb290ZXI+Cjxocj4KPGNlbnRlcj4KPHAgY2xhc3M9YmFyPgo8YSBocmVmPSJob21lLmh0bWwiPmhvbWU8L2E+ICZtaWRkb3Q7CjxhIGhyZWY9ImhvbWUuaHRtbCNkb3duIj5kb3dubG9hZDwvYT4gJm1pZGRvdDsKPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiPmluc3RhbGxhdGlvbjwvYT4gJm1pZGRvdDsKPGEgaHJlZj0iaW50cm9kdWN0aW9uLmh0bWwiPmludHJvZHVjdGlvbjwvYT4gJm1pZGRvdDsKPGEgaHJlZj0icmVmZXJlbmNlLmh0bWwiPnJlZmVyZW5jZTwvYT4KPC9wPgo8cD4KPHNtYWxsPgpMYXN0IG1vZGlmaWVkIGJ5IERpZWdvIE5laGFiIG9uIDxicj4KVGh1IEFwciAyMCAwMDoyNTo0NCBFRFQgMjAwNgo8L3NtYWxsPgo8L3A+CjwvY2VudGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=