PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KPCEtLSBzYXZlZCBmcm9tIHVybD0oMDA2MylodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2dyYXBoL2RvYy9jdXRoaWxsX21ja2VlX29yZGVyaW5nLmh0bWwgLS0+CjxIVE1MPjxIRUFEPjxUSVRMRT5Cb29zdCBHcmFwaCBMaWJyYXJ5OiBDdXRoaWxsLU1ja2VlIE9yZGVyaW5nPC9USVRMRT4KPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+PCEtLQogIC0tIENvcHlyaWdodCAoYykgSmVyZW15IFNpZWsgMjAwMAogIC0tCiAgLS0gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgogIC0tIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKICAtLSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCiAgLS0+CjxNRVRBIGNvbnRlbnQ9Ik1TSFRNTCA2LjAwLjI3MTUuNDAwIiBuYW1lPUdFTkVSQVRPUj48L0hFQUQ+CjxCT0RZIHRleHQ9IzAwMDAwMCB2TGluaz0jNTUxYThiIGFMaW5rPSNmZjAwMDAgbGluaz0jMDAwMGVlIGJnQ29sb3I9I2ZmZmZmZj48SU1HIApoZWlnaHQ9ODYgYWx0PSJDKysgQm9vc3QiIApzcmM9Ii4uLy4uLy4uL2Jvb3N0LnBuZyIgd2lkdGg9Mjc3PiAKPEJSPgo8SDE+PEEgbmFtZT1zZWM6YmZzPjwvYT48dHQ+c2xvYW5fc3RhcnRfZW5kX3ZlcnRpY2VzPC90dD48L0gxPgo8UD4KPERJViBhbGlnbj1sZWZ0Pgo8VEFCTEUgY2VsbFBhZGRpbmc9MyBib3JkZXI9MT4KICA8VEJPRFk+CiAgPFRSPgogICAgPFRIIGFsaWduPWxlZnQ+PEI+R3JhcGhzOjwvQj48L1RIPgogICAgPFREIGFsaWduPWxlZnQ+dW5kaXJlY3RlZDwvVEQ+PC9UUj4KICA8VFI+CiAgICA8VEggYWxpZ249bGVmdD48Qj5Qcm9wZXJ0aWVzOjwvQj48L1RIPgogICAgICA8VEQgYWxpZ249bGVmdD5jb2xvciwgZGVncmVlPC9URD4KICAgIDwvVFI+CiAgPFRSPgogICAgPFRIIGFsaWduPWxlZnQ+PEI+Q29tcGxleGl0eTo8L0I+PC9USD4KICAgICAgPFREIGFsaWduPWxlZnQ+Jm5ic3A7PC9URD4KICAgIDwvVFI+PC9UQk9EWT48L1RBQkxFPjwvRElWPgo8UFJFPiAgKDEpCiAgdGVtcGxhdGUgJmx0O2NsYXNzIEdyYXBoLCBjbGFzcyBDb2xvck1hcCwgY2xhc3MgRGVncmVlTWFwJmd0OwogIHR5cGVuYW1lIGdyYXBoX3RyYWl0cyZsdDtHcmFwaCZndDs6OnZlcnRleF9kZXNjcmlwdG9yCiAgc2xvYW5fc3RhcnRfZW5kX3ZlcnRpY2VzKEdyYXBoJmFtcDsgRywKICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgZ3JhcGhfdHJhaXRzJmx0O0dyYXBoJmd0Ozo6dmVydGV4X2Rlc2NyaXB0b3IgJmFtcDtzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvck1hcCBjb2xvciwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZ3JlZU1hcCBkZWdyZWUgKQo8L1BSRT4KPHA+VGhlIGdvYWwgb2YgdGhlIHNsb2FuX3N0YXJ0X2VuZF92ZXJ0aWNlcyBhbGdvcml0aG1bMSwgMl0gaXMgdG8gZmluZCBnb29kIHN0YXJ0LSAKICBhbmQgZW5kLXZlcnRpY2VzIGZvciB0aGUgcHJvZmlsZSBhbmQgd2F2ZWZyb250IHJlZHVjdGlvbiBhbGdvcml0aG0gc2xvYW5fb3JkZXJpbmcuIAogIFRoZSBhbGdvcml0aG0gaXMgc2ltaWxhciB0byBwc2V1ZG9fcGVyaXBoZXJhbF9wYWlyIGFuZCBhbHNvIGJhc2VkIG9uIGJyZWFkdGhfZmlyc3Rfc2VhcmNoLiAKICBXaXRoIHRoaXMgYnJlYWR0aF9maXJzdF9zZWFyY2ggZnVuY3Rpb24gYSBzby1jYWxsZWQgcm9vdGVkIGxldmVsIHN0cnVjdHVyZSAoUkxTKSAKICBpcyBmb3JtZWQsIHdoZXJlIHRoZSB2ZXJ0aWNlcyB3aXRoIHRoZSBzYW1lIGRpc3RhbmNlIHRvIHRoZSBzdGFydGluZyB2ZXJ0ZXggCiAgYXJlIGdyb3VwZWQgdG9nZXRoZXIuIFRoZSBtYXhpbXVtIG51bWJlciBvZiB2ZXJ0aWNlcyBpbiBvbmUgZ3JvdXAgaXMgY2FsbGVkIAogIHRoZSB3aWR0aCBvZiB0aGUgUkxTLiBTbG9hbl9zdGFydF9lbmRfdmVydGljZXMgdHJpZXMgdG8gZmluZCBhIHBzZXVkb3BlcmlwaGVyYWwgCiAgcGFpciB3aXRoIGEgbWluaW11bSBSTFMtd2lkdGguPC9wPgo8SDM+UGFyYW1ldGVyczwvSDM+CkZvciB2ZXJzaW9uIDE6IAo8VUw+CiAgPExJPjxUVD5HcmFwaCZhbXA7IGc8L1RUPiAmbmJzcDsoSU4pIDxCUj4KICAgIEFuIHVuZGlyZWN0ZWQgZ3JhcGguIFRoZSBncmFwaCdzIHR5cGUgbXVzdCBiZSBhIG1vZGVsIG9mIDxBIAogIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZ3JhcGgvZG9jL0luY2lkZW5jZUdyYXBoLmh0bWwiPkluY2lkZW5jZUdyYXBoPC9BPi4gCiAgPExJPjxUVD52ZXJ0ZXhfZGVzY3JpcHRvciBzPC9UVD4gJm5ic3A7KElOKSA8QlI+CiAgICBUaGUgc3RhcnRpbmcgdmVydGV4LiAKICA8TEk+PFRUPkNvbG9yTWFwIGNvbG9yX21hcDwvVFQ+ICZuYnNwOyhXT1JLKSA8QlI+CiAgICBVc2VkIGludGVybmFsbHkgdG8ga2VlcCB0cmFjayBvZiB0aGUgcHJvZ3Jlc3Mgb2YgdGhlIGFsZ29yaXRobSAodG8gYXZvaWQgdmlzaXRpbmcgCiAgICB0aGUgc2FtZSB2ZXJ0ZXggdHdpY2UpLiAKICA8TEk+PFRUPkRlZ3JlZU1hcCBkZWdyZWVfbWFwPC9UVD4gJm5ic3A7KElOKSA8QlI+CiAgICBUaGlzIG11c3QgbWFwIHZlcnRpY2VzIHRvIHRoZWlyIGRlZ3JlZS4gPC9MST4KPC9VTD4KPHA+Jm5ic3A7PC9wPgo8SDM+RXhhbXBsZTwvSDM+ClNlZSA8QSAKaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9ncmFwaC9leGFtcGxlL2N1dGhpbGxfbWNrZWVfb3JkZXJpbmcuY3BwIj48VFQ+ZXhhbXBsZS9zbG9hbl9vcmRlcmluZy5jcHA8L1RUPjwvQT4uIAo8SDM+U2VlIEFsc288L0gzPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2dyYXBoL2RvYy9zbG9hbl9zdGFydF9lbmRfdmVydGljZXMuaHRtIj5zbG9hbl9zdGFydF9lbmRfdmVydGljZXM8L2E+LCAKICA8QSAKaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9ncmFwaC9kb2MvYmFuZHdpZHRoLmh0bWwiPmJhbmR3aWR0aDwvQT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZ3JhcGgvZG9jL3Byb2ZpbGUuaHRtIj5wcm9maWxlPC9hPiwgCiAgPGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9ncmFwaC9kb2Mvd2F2ZWZyb250Lmh0bSI+d2F2ZWZyb250PC9hPiBhbmQgCiAgPFRUPmRlZ3JlZV9wcm9wZXJ0eV9tYXA8L1RUPiBpbiA8VFQ+Ym9vc3QvZ3JhcGgvcHJvcGVydGllcy5ocHA8L1RUPi4gPC9wPgo8cD5bMV0gUy4gVy4gU2xvYW4sIDxpPkFuIGFsZ29yaXRobSBmb3IgcHJvZmlsZSBhbmQgd2F2ZWZyb250IHJlZHVjdGlvbiBvZiBzcGFyc2UgCiAgbWF0cmljZXM8L2k+LCBJbnQuIGouIG51bWVyLiBtZXRob2RzIGVuZy4sIDxiPjIzPC9iPiwgMjM5IC0gMjUxICgxOTg2KTwvcD4KPHA+WzJdIFMuIFcuIFNsb2FuLCA8aT5BIGZvcnRyYW4gcHJvZ3JhbSBmb3IgcHJvZmlsZSBhbmQgd2F2ZWZyb250IHJlZHVjdGlvbjwvaT4sIAogIEludC4gai4gbnVtZXIuIG1ldGhvZHMgZW5nLiwgPGI+Mjg8L2I+LCAyNjUxIC0gMjY3OSAoMTk4OSk8QlI+CjwvcD4KPEhSPgoKPFRBQkxFIHdpZHRoPSI2NjMiPgogIDxUQk9EWT4gCiAgPFRSIHZBbGlnbj10b3A+CiAgICA8VEQgbm9XcmFwPkNvcHlyaWdodCCpIDIwMDEtMjAwMjwvVEQ+CiAgICA8VEQ+TWFyYyBXaW50ZXJtYW50ZWwsIEVUSCBadXJpY2goPEEgCiAgICAgIGhyZWY9Im1haWx0bzp3aW50ZXJtYW50ZWxAaW1lcy5tYXZ0LmV0aHouY2giPndpbnRlcm1hbnRlbEBpbWVzLm1hdnQuZXRoei5jaDwvYT4pIAogICAgPC9URD4KICA8L1RSPjwvVEJPRFk+PC9UQUJMRT48L0JPRFk+PC9IVE1MPgo=