PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBGcmFtZXNldC8vRU4iImh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvZnJhbWVzZXQuZHRkIj4KPCEtLU5ld1BhZ2UtLT4KPEhUTUw+CjxIRUFEPgo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIEZyaSBKdW4gMTUgMTY6NTM6MzQgUERUIDIwMDEgLS0+CjxUSVRMRT4KQXBhY2hlIFN0cnV0cyBBUEkgRG9jdW1lbnRhdGlvbjogSW5kZXgKPC9USVRMRT4KPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgo8L0hFQUQ+CjxCT0RZIEJHQ09MT1I9IndoaXRlIj4KCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4KPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPgo8VFI+CjxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+CiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8L1RSPgo8L1RBQkxFPgo8L1REPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KPC9FTT4KPC9URD4KPC9UUj4KCjxUUj4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KJm5ic3A7UFJFViZuYnNwOwombmJzcDtORVhUPC9GT05UPjwvVEQ+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiAgPEEgSFJFRj0iaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7CiZuYnNwOzxBIEhSRUY9ImluZGV4LWFsbC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4KCjxBIEhSRUY9IiNfPF8iPjw8L0E+IDxBIEhSRUY9IiNfQV8iPkE8L0E+IDxBIEhSRUY9IiNfQl8iPkI8L0E+IDxBIEhSRUY9IiNfQ18iPkM8L0E+IDxBIEhSRUY9IiNfRF8iPkQ8L0E+IDxBIEhSRUY9IiNfRV8iPkU8L0E+IDxBIEhSRUY9IiNfRl8iPkY8L0E+IDxBIEhSRUY9IiNfR18iPkc8L0E+IDxBIEhSRUY9IiNfSF8iPkg8L0E+IDxBIEhSRUY9IiNfSV8iPkk8L0E+IDxBIEhSRUY9IiNfS18iPks8L0E+IDxBIEhSRUY9IiNfTF8iPkw8L0E+IDxBIEhSRUY9IiNfTV8iPk08L0E+IDxBIEhSRUY9IiNfTl8iPk48L0E+IDxBIEhSRUY9IiNfT18iPk88L0E+IDxBIEhSRUY9IiNfUF8iPlA8L0E+IDxBIEhSRUY9IiNfUl8iPlI8L0E+IDxBIEhSRUY9IiNfU18iPlM8L0E+IDxBIEhSRUY9IiNfVF8iPlQ8L0E+IDxBIEhSRUY9IiNfVV8iPlU8L0E+IDxBIEhSRUY9IiNfVl8iPlY8L0E+IDxBIEhSRUY9IiNfV18iPlc8L0E+IDxBIEhSRUY9IiNfWF8iPlg8L0E+IDxIUj4KPEEgTkFNRT0iXzxfIj48IS0tIC0tPjwvQT48SDI+CjxCPjw8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwjPGNsaW5pdD4oKSI+PEI+PGNsaW5pdD4oKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCI+UHJvcGVydHlVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOyZuYnNwOwo8L0RMPgo8SFI+CjxBIE5BTUU9Il9BXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5BPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwjYWJzb2x1dGVVUkwoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmFic29sdXRlVVJMKEh0dHBTZXJ2bGV0UmVxdWVzdCwgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sIj5SZXF1ZXN0VXRpbHM8L0E+CjxERD5DcmVhdGUgYW5kIHJldHVybiBhbiBhYnNvbHV0ZSBVUkwgZm9yIHRoZSBzcGVjaWZpZWQgY29udGV4dC1yZWxhdGl2ZQogcGF0aCwgYmFzZWQgb24gdGhlIHNlcnZlciBhbmQgY29udGV4dCBpbmZvcm1hdGlvbiBpbiB0aGUgc3BlY2lmaWVkCiByZXF1ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VGaWVsZFRhZy5odG1sI2FjY2VwdCI+PEI+YWNjZXB0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlRmllbGRUYWcuaHRtbCI+QmFzZUZpZWxkVGFnPC9BPgo8REQ+Q29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgY29udGVudCB0eXBlcyB0aGF0IGEgc2VydmVyIHByb2Nlc3NpbmcgdGhpcyBmb3JtCiB3aWxsIGhhbmRsZSBjb3JyZWN0bHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlRmllbGRUYWcuaHRtbCNhY2NlcHQiPjxCPmFjY2VwdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VGaWVsZFRhZy5odG1sIj5CYXNlRmllbGRUYWc8L0E+CjxERD5Db21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBjb250ZW50IHR5cGVzIHRoYXQgYSBzZXJ2ZXIgcHJvY2Vzc2luZyB0aGlzIGZvcm0KIHdpbGwgaGFuZGxlIGNvcnJlY3RseS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjYWNjZXNza2V5Ij48Qj5hY2Nlc3NrZXk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPkFjY2VzcyBrZXkgY2hhcmFjdGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjYWNjZXNzS2V5Ij48Qj5hY2Nlc3NLZXk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+QWNjZXNzIGtleSBjaGFyYWN0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI2FjdGlvbiI+PEI+YWN0aW9uPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgYWN0aW9uIFVSTCB0byB3aGljaCB0aGlzIGZvcm0gc2hvdWxkIGJlIHN1Ym1pdHRlZCwgaWYgYW55Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI2FjdGlvbiI+PEI+YWN0aW9uPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+VGhlIGFjdGlvbiBVUkwgdG8gd2hpY2ggdGhpcyBmb3JtIHNob3VsZCBiZSBzdWJtaXR0ZWQsIGlmIGFueS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+PEI+QWN0aW9uPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+LjxERD5BbiA8c3Ryb25nPkFjdGlvbjwvc3Ryb25nPiBpcyBhbiBhZGFwdGVyIGJldHdlZW4gdGhlIGNvbnRlbnRzIG9mIGFuIGluY29taW5nCiBIVFRQIHJlcXVlc3QgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGJ1c2luZXNzIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVkIHRvCiBwcm9jZXNzIHRoaXMgcmVxdWVzdC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI0FjdGlvbigpIj48Qj5BY3Rpb24oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25CYXNlLmh0bWwiPjxCPkFjdGlvbkJhc2U8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uQmFzZS5odG1sIj5BY3Rpb25CYXNlPC9BPi48REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXBwbGljYXRpb24gYWN0aW9uIGNsYXNzZXMgc2hvdWxkIG5vdyBleHRlbmQgQWN0aW9uCiBkaXJlY3RseSwgcmF0aGVyIHRoYW4gdGhpcyBjbGFzcy48L0k+PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25CYXNlLmh0bWwjQWN0aW9uQmFzZSgpIj48Qj5BY3Rpb25CYXNlKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25CYXNlLmh0bWwiPkFjdGlvbkJhc2U8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvci5odG1sIj48Qj5BY3Rpb25FcnJvcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvci5odG1sIj5BY3Rpb25FcnJvcjwvQT4uPEREPkFuIGVuY2Fwc3VsYXRpb24gb2YgYW4gaW5kaXZpZHVhbCBlcnJvciBtZXNzYWdlIHJldHVybmVkIGJ5IHRoZQogPGNvZGU+dmFsaWRhdGUoKTwvY29kZT4gbWV0aG9kIG9mIGFuIDxjb2RlPkFjdGlvbkZvcm08L2NvZGU+LCBjb25zaXN0aW5nCiBvZiBhIG1lc3NhZ2Uga2V5ICh0byBiZSB1c2VkIHRvIGxvb2sgdXAgbWVzc2FnZSB0ZXh0IGluIGFuIGFwcHJvcHJpYXRlCiBtZXNzYWdlIHJlc291cmNlcyBkYXRhYmFzZSkgcGx1cyB1cCB0byBmb3VyIHBsYWNlaG9sZGVyIG9iamVjdHMgdGhhdCBjYW4KIGJlIHVzZWQgZm9yIHBhcmFtZXRyaWMgcmVwbGFjZW1lbnQgaW4gdGhlIG1lc3NhZ2UgdGV4dC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9yLmh0bWwjQWN0aW9uRXJyb3IoamF2YS5sYW5nLlN0cmluZykiPjxCPkFjdGlvbkVycm9yKFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvci5odG1sIj5BY3Rpb25FcnJvcjwvQT4KPEREPkNvbnN0cnVjdCBhbiBhY3Rpb24gZXJyb3Igd2l0aCBubyByZXBsYWNlbWVudCB2YWx1ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3IuaHRtbCNBY3Rpb25FcnJvcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+QWN0aW9uRXJyb3IoU3RyaW5nLCBPYmplY3QpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3IuaHRtbCI+QWN0aW9uRXJyb3I8L0E+CjxERD5Db25zdHJ1Y3QgYW4gYWN0aW9uIGVycm9yIHdpdGggdGhlIHNwZWNpZmllZCByZXBsYWNlbWVudCB2YWx1ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3IuaHRtbCNBY3Rpb25FcnJvcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+QWN0aW9uRXJyb3IoU3RyaW5nLCBPYmplY3QsIE9iamVjdCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvci5odG1sIj5BY3Rpb25FcnJvcjwvQT4KPEREPkNvbnN0cnVjdCBhbiBhY3Rpb24gZXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIHJlcGxhY2VtZW50IHZhbHVlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvci5odG1sI0FjdGlvbkVycm9yKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3QpIj48Qj5BY3Rpb25FcnJvcihTdHJpbmcsIE9iamVjdCwgT2JqZWN0LCBPYmplY3QpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3IuaHRtbCI+QWN0aW9uRXJyb3I8L0E+CjxERD5Db25zdHJ1Y3QgYW4gYWN0aW9uIGVycm9yIHdpdGggdGhlIHNwZWNpZmllZCByZXBsYWNlbWVudCB2YWx1ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3IuaHRtbCNBY3Rpb25FcnJvcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+QWN0aW9uRXJyb3IoU3RyaW5nLCBPYmplY3QsIE9iamVjdCwgT2JqZWN0LCBPYmplY3QpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3IuaHRtbCI+QWN0aW9uRXJyb3I8L0E+CjxERD5Db25zdHJ1Y3QgYW4gYWN0aW9uIGVycm9yIHdpdGggdGhlIHNwZWNpZmllZCByZXBsYWNlbWVudCB2YWx1ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPjxCPkFjdGlvbkVycm9yczwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPi48REQ+QSBjbGFzcyB0aGF0IGVuY2Fwc3VsYXRlcyB0aGUgZXJyb3IgbWVzc2FnZXMgYmVpbmcgcmVwb3J0ZWQgYnkKIHRoZSA8Y29kZT52YWxpZGF0ZSgpPC9jb2RlPiBtZXRob2Qgb2YgYW4gPGNvZGU+QWN0aW9uRm9ybTwvY29kZT4uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCNBY3Rpb25FcnJvcnMoKSI+PEI+QWN0aW9uRXJyb3JzKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sIj48Qj5BY3Rpb25Gb3JtPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm0uaHRtbCI+QWN0aW9uRm9ybTwvQT4uPEREPkFuIDxzdHJvbmc+QWN0aW9uRm9ybTwvc3Ryb25nPiBpcyBhIEphdmFCZWFuIG9wdGlvbmFsbHkgYXNzb2NpYXRlZCB3aXRoCiBvbmUgb3IgbW9yZSA8Y29kZT5BY3Rpb25NYXBwaW5nczwvY29kZT4uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtLmh0bWwjQWN0aW9uRm9ybSgpIj48Qj5BY3Rpb25Gb3JtKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtLmh0bWwiPkFjdGlvbkZvcm08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbi5odG1sIj48Qj5BY3Rpb25Gb3JtQmVhbjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbi5odG1sIj5BY3Rpb25Gb3JtQmVhbjwvQT4uPEREPkFuIDxzdHJvbmc+QWN0aW9uRm9ybUJlYW48L3N0cm9uZz4gaXMgdGhlIGRlZmluaXRpb24gb2YgYSBmb3JtIGJlYW4gdGhhdAogaXMgbG9hZGVkIGZyb20gYSA8Y29kZT4mbHQ7Zm9ybS1iZWFuJmd0OzwvY29kZT4gZWxlbWVudCBpbiB0aGUgU3RydXRzCiBjb25maWd1cmF0aW9uIGZpbGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbi5odG1sI0FjdGlvbkZvcm1CZWFuKCkiPjxCPkFjdGlvbkZvcm1CZWFuKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbi5odG1sIj5BY3Rpb25Gb3JtQmVhbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm1CZWFucy5odG1sIj48Qj5BY3Rpb25Gb3JtQmVhbnM8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW5zLmh0bWwiPkFjdGlvbkZvcm1CZWFuczwvQT4uPEREPkVuY2Fwc3VsYXRlIGEgY29sbGVjdGlvbiBvZiBBY3Rpb25Gb3JtQmVhbiBvYmplY3RzIHRoYXQgY2FuIGJlCiBhZG1pbmlzdGVyZWQgYW5kIHNlYXJjaGVkLCB3aGlsZSBoaWRpbmcgdGhlIGludGVybmFsIGltcGxlbWVudGF0aW9uLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW5zLmh0bWwjQWN0aW9uRm9ybUJlYW5zKCkiPjxCPkFjdGlvbkZvcm1CZWFucygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW5zLmh0bWwiPkFjdGlvbkZvcm1CZWFuczwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCI+PEI+QWN0aW9uRm9yd2FyZDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkLmh0bWwiPkFjdGlvbkZvcndhcmQ8L0E+LjxERD5BbiA8c3Ryb25nPkFjdGlvbkZvcndhcmQ8L3N0cm9uZz4gcmVwcmVzZW50cyBhIGRlc3RpbmF0aW9uIHRvIHdoaWNoIHRoZQogY29udHJvbGxlciBzZXJ2bGV0LCA8Y29kZT5BY3Rpb25TZXJ2bGV0PC9jb2RlPiwgbWlnaHQgYmUgZGlyZWN0ZWQgdG8KIHBlcmZvcm0gYSA8Y29kZT5SZXF1ZXN0RGlzcGF0Y2hlci5mb3J3YXJkKCk8L2NvZGU+IG9yCiA8Y29kZT5IdHRwU2VydmxldFJlc3BvbnNlLnNlbmRSZWRpcmVjdCgpPC9jb2RlPiB0bywgYXMgYSByZXN1bHQgb2YKIHByb2Nlc3NpbmcgYWN0aXZpdGllcyBvZiBhbiA8Y29kZT5BY3Rpb248L2NvZGU+IGNsYXNzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sI0FjdGlvbkZvcndhcmQoKSI+PEI+QWN0aW9uRm9yd2FyZCgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sIj5BY3Rpb25Gb3J3YXJkPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IGluc3RhbmNlIHdpdGggZGVmYXVsdCB2YWx1ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sI0FjdGlvbkZvcndhcmQoamF2YS5sYW5nLlN0cmluZykiPjxCPkFjdGlvbkZvcndhcmQoU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCI+QWN0aW9uRm9yd2FyZDwvQT4KPEREPkNvbnN0cnVjdCBhIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkLmh0bWwjQWN0aW9uRm9yd2FyZChqYXZhLmxhbmcuU3RyaW5nLCBib29sZWFuKSI+PEI+QWN0aW9uRm9yd2FyZChTdHJpbmcsIGJvb2xlYW4pPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sIj5BY3Rpb25Gb3J3YXJkPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwYXRoIGFuZCByZWRpcmVjdCBmbGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmRzLmh0bWwiPjxCPkFjdGlvbkZvcndhcmRzPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmRzLmh0bWwiPkFjdGlvbkZvcndhcmRzPC9BPi48REQ+RW5jYXBzdWxhdGUgYSBjb2xsZWN0aW9uIG9mIEFjdGlvbkZvcndhcmQgb2JqZWN0cyB0aGF0IGNhbiBiZQogYWRtaW5pc3RlcmVkIGFuZCBzZWFyY2hlZCwgd2hpbGUgaGlkaW5nIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmRzLmh0bWwjQWN0aW9uRm9yd2FyZHMoKSI+PEI+QWN0aW9uRm9yd2FyZHMoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmRzLmh0bWwiPkFjdGlvbkZvcndhcmRzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj48Qj5BY3Rpb25NYXBwaW5nPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4uPEREPkFuIDxzdHJvbmc+QWN0aW9uTWFwcGluZzwvc3Ryb25nPiByZXByZXNlbnRzIHRoZSBpbmZvcm1hdGlvbiB0aGF0IHRoZQogY29udHJvbGxlciBzZXJ2bGV0LCA8Y29kZT5BY3Rpb25TZXJ2bGV0PC9jb2RlPiwga25vd3MgYWJvdXQgdGhlIG1hcHBpbmcKIG9mIGEgcGFydGljdWxhciByZXF1ZXN0IHRvIGFuIGluc3RhbmNlIG9mIGEgcGFydGljdWxhciBhY3Rpb24gY2xhc3MuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjQWN0aW9uTWFwcGluZygpIj48Qj5BY3Rpb25NYXBwaW5nKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nQmFzZS5odG1sIj48Qj5BY3Rpb25NYXBwaW5nQmFzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nQmFzZS5odG1sIj5BY3Rpb25NYXBwaW5nQmFzZTwvQT4uPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPk5vdyB0aGF0IEFjdGlvbk1hcHBpbmcgaXMgYSBjbGFzcywgeW91IHNob3VsZCB1c2UgaXQgaW50ZWFkPC9JPjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZ0Jhc2UuaHRtbCNBY3Rpb25NYXBwaW5nQmFzZSgpIj48Qj5BY3Rpb25NYXBwaW5nQmFzZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZ0Jhc2UuaHRtbCI+QWN0aW9uTWFwcGluZ0Jhc2U8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sIj48Qj5BY3Rpb25NYXBwaW5nczwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sIj5BY3Rpb25NYXBwaW5nczwvQT4uPEREPkVuY2Fwc3VsYXRlIGEgY29sbGVjdGlvbiBvZiBBY3Rpb25NYXBwaW5nIG9iamVjdHMgdGhhdCBjYW4gYmUKIGFkbWluaXN0ZXJlZCBhbmQgc2VhcmNoZWQsIHdoaWxlIGhpZGluZyB0aGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sI0FjdGlvbk1hcHBpbmdzKCkiPjxCPkFjdGlvbk1hcHBpbmdzKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sIj5BY3Rpb25NYXBwaW5nczwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNhY3Rpb25zIj48Qj5hY3Rpb25zPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5UaGUgc2V0IG9mIEFjdGlvbiBpbnN0YW5jZXMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZCBhbmQgaW5pdGlhbGl6ZWQsCiBrZXllZCBieSB0aGUgZnVsbHkgcXVhbGlmaWVkIEphdmEgY2xhc3MgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPjxCPkFjdGlvblNlcnZsZXQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPi48REQ+PHN0cm9uZz5BY3Rpb25TZXJ2bGV0PC9zdHJvbmc+IHJlcHJlc2VudHMgdGhlICJjb250cm9sbGVyIiBpbiB0aGUKIE1vZGVsLVZpZXctQ29udHJvbGxlciAoTVZDKSBkZXNpZ24gcGF0dGVybiBmb3Igd2ViIGFwcGxpY2F0aW9ucyB0aGF0IGlzCiBjb21tb25seSBrbm93biBhcyAiTW9kZWwgMiIuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjQWN0aW9uU2VydmxldCgpIj48Qj5BY3Rpb25TZXJ2bGV0KCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNhY3RpdmVDb3VudCI+PEI+YWN0aXZlQ291bnQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD5UaGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgdGhpcyBkYXRhIHNvdXJjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sI2FkZChpbnQsIGphdmEubGFuZy5PYmplY3QpIj48Qj5hZGQoaW50LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwiPkZhc3RBcnJheUxpc3Q8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtJbnNlcnQgdGhlIHNwZWNpZmllZCBlbGVtZW50IGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gdGhpcyBsaXN0LAogYW5kIHNoaWZ0IGFsbCByZW1haW5pbmcgZWxlbWVudHMgdXAgb25lIHBvc2l0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjYWRkKGphdmEubGFuZy5PYmplY3QpIj48Qj5hZGQoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7QXBwZW5kcyB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGlzIGxpc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwjYWRkKGphdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcikiPjxCPmFkZChTdHJpbmcsIEFjdGlvbkVycm9yKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+CjxERD5BZGQgYW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgc2V0IG9mIGVycm9ycyBmb3IgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sI2FkZEFsbChqYXZhLnV0aWwuQ29sbGVjdGlvbikiPjxCPmFkZEFsbChDb2xsZWN0aW9uKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7QXBwZW5kIGFsbCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBDb2xsZWN0aW9uIHRvIHRoZSBlbmQKIG9mIHRoaXMgbGlzdCwgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBhcmUgcmV0dXJuZWQgYnkgdGhlIHNwZWNpZmllZAogQ29sbGVjdGlvbidzIEl0ZXJhdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjYWRkQWxsKGludCwgamF2YS51dGlsLkNvbGxlY3Rpb24pIj48Qj5hZGRBbGwoaW50LCBDb2xsZWN0aW9uKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7SW5zZXJ0IGFsbCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBDb2xsZWN0aW9uIGF0IHRoZSBzcGVjaWZpZWQKIHBvc2l0aW9uIGluIHRoaXMgbGlzdCwgYW5kIHNoaWZ0IGFueSBwcmV2aW91cyBlbGVtZW50cyB1cHdhcmRzIGFzCiBuZWVkZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI2FkZENhbGxNZXRob2QoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+YWRkQ2FsbE1ldGhvZChTdHJpbmcsIFN0cmluZywgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPkFkZCBhbiAiY2FsbCBtZXRob2QiIHJ1bGUgZm9yIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjYWRkQ2FsbE1ldGhvZChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGphdmEubGFuZy5DbGFzc1tdKSI+PEI+YWRkQ2FsbE1ldGhvZChTdHJpbmcsIFN0cmluZywgaW50LCBDbGFzc1tdKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPkFkZCBhbiAiY2FsbCBtZXRob2QiIHJ1bGUgZm9yIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjYWRkQ2FsbE1ldGhvZChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGphdmEubGFuZy5TdHJpbmdbXSkiPjxCPmFkZENhbGxNZXRob2QoU3RyaW5nLCBTdHJpbmcsIGludCwgU3RyaW5nW10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+QWRkIGFuICJjYWxsIG1ldGhvZCIgcnVsZSBmb3IgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNhZGRDYWxsUGFyYW0oamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+YWRkQ2FsbFBhcmFtKFN0cmluZywgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPkFkZCBhICJjYWxsIHBhcmFtZXRlciIgcnVsZSBmb3IgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNhZGRDYWxsUGFyYW0oamF2YS5sYW5nLlN0cmluZywgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+YWRkQ2FsbFBhcmFtKFN0cmluZywgaW50LCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+QWRkIGEgImNhbGwgcGFyYW1ldGVyIiBydWxlIGZvciB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2FkZERhdGFTb3VyY2UoamF2YS5sYW5nLlN0cmluZywgamF2YXguc3FsLkRhdGFTb3VyY2UpIj48Qj5hZGREYXRhU291cmNlKFN0cmluZywgRGF0YVNvdXJjZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5BZGQgYSBkYXRhIHNvdXJjZSBvYmplY3QgdG8gYmUgdXNlZCBieSB0aGlzIGFwcGxpY2F0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FkZERhdGFTb3VyY2VSdWxlLmh0bWwiPjxCPkFkZERhdGFTb3VyY2VSdWxlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FkZERhdGFTb3VyY2VSdWxlLmh0bWwiPkFkZERhdGFTb3VyY2VSdWxlPC9BPi48REQ+UHJpdmF0ZSBkaWdlc3RlciA8Y29kZT5SdWxlPC9jb2RlPiB0aGF0IGFkZHMgYSBkYXRhIHNvdXJjZSB0byB0aGUgdW5kZXJseWluZwogPGNvZGU+QWN0aW9uU2VydmxldDwvY29kZT4gaW5zdGFuY2UuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BZGREYXRhU291cmNlUnVsZS5odG1sI0FkZERhdGFTb3VyY2VSdWxlKG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLkRpZ2VzdGVyKSI+PEI+QWRkRGF0YVNvdXJjZVJ1bGUoRGlnZXN0ZXIpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWRkRGF0YVNvdXJjZVJ1bGUuaHRtbCI+QWRkRGF0YVNvdXJjZVJ1bGU8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRXJyb3JNZXNzYWdlcy5odG1sI2FkZEVycm9yKGphdmEubGFuZy5TdHJpbmcpIj48Qj5hZGRFcnJvcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9FcnJvck1lc3NhZ2VzLmh0bWwiPkVycm9yTWVzc2FnZXM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtBZGQgYW4gZXJyb3IgbWVzc2FnZSBrZXkgdG8gdGhlIGFjY3VtdWxhdGVkIHNldCBvZiBlcnJvcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2FkZEZvcm1CZWFuKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3JtQmVhbikiPjxCPmFkZEZvcm1CZWFuKEFjdGlvbkZvcm1CZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlJlZ2lzdGVyIGEgZm9ybSBiZWFuIGRlZmluaXRpb24gdG8gdGhlIHNldCBjb25maWd1cmVkIGZvciB0aGlzIHNlcnZsZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW5zLmh0bWwjYWRkRm9ybUJlYW4ob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm1CZWFuKSI+PEI+YWRkRm9ybUJlYW4oQWN0aW9uRm9ybUJlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW5zLmh0bWwiPkFjdGlvbkZvcm1CZWFuczwvQT4KPEREPlJlZ2lzdGVyIGEgZm9ybSBiZWFuIHRvIHRoZSBzZXQgY29uZmlndXJlZCBmb3IgdGhpcyBzZXJ2bGV0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9BZGRGb3JtQmVhbkFjdGlvbi5odG1sIj48Qj5BZGRGb3JtQmVhbkFjdGlvbjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0FkZEZvcm1CZWFuQWN0aW9uLmh0bWwiPkFkZEZvcm1CZWFuQWN0aW9uPC9BPi48REQ+QSBzdGFuZGFyZCA8c3Ryb25nPkFjdGlvbjwvc3Ryb25nPiB0aGF0IGNhbGxzIHRoZQogPGNvZGU+YWRkRm9ybUJlYW4oKTwvY29kZT4gbWV0aG9kIG9mIG91ciBjb250cm9sbGVyIHNlcnZsZXQgdG8gYWRkIGEgbmV3CiBhY3Rpb24gZm9ybSBkZWZpbml0aW9uIGR5bmFtaWNhbGx5LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0FkZEZvcm1CZWFuQWN0aW9uLmh0bWwjQWRkRm9ybUJlYW5BY3Rpb24oKSI+PEI+QWRkRm9ybUJlYW5BY3Rpb24oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvQWRkRm9ybUJlYW5BY3Rpb24uaHRtbCI+QWRkRm9ybUJlYW5BY3Rpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjYWRkRm9yd2FyZChvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9yd2FyZCkiPjxCPmFkZEZvcndhcmQoQWN0aW9uRm9yd2FyZCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5BZGQgYSBuZXcgPGNvZGU+QWN0aW9uRm9yd2FyZDwvY29kZT4gYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWFwcGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjYWRkRm9yd2FyZChvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9yd2FyZCkiPjxCPmFkZEZvcndhcmQoQWN0aW9uRm9yd2FyZCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5SZWdpc3RlciBhIGxvZ2ljYWwgZm9yd2FyZGluZyB0byB0aGUgc2V0IGNvbmZpZ3VyZWQgZm9yIHRoaXMgc2VydmxldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkcy5odG1sI2FkZEZvcndhcmQob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcndhcmQpIj48Qj5hZGRGb3J3YXJkKEFjdGlvbkZvcndhcmQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZHMuaHRtbCI+QWN0aW9uRm9yd2FyZHM8L0E+CjxERD5SZWdpc3RlciBhIGxvZ2ljYWwgZm9yd2FyZGluZyB0byB0aGUgc2V0IGNvbmZpZ3VyZWQgZm9yIHRoaXMgc2VydmxldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvQWRkRm9yd2FyZEFjdGlvbi5odG1sIj48Qj5BZGRGb3J3YXJkQWN0aW9uPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvQWRkRm9yd2FyZEFjdGlvbi5odG1sIj5BZGRGb3J3YXJkQWN0aW9uPC9BPi48REQ+QSBzdGFuZGFyZCA8c3Ryb25nPkFjdGlvbjwvc3Ryb25nPiB0aGF0IGNhbGxzIHRoZQogPGNvZGU+YWRkRm9yd2FyZCgpPC9jb2RlPiBtZXRob2Qgb2Ygb3VyIGNvbnRyb2xsZXIgc2VydmxldCB0byBhZGQgYSBuZXcKIGFjdGlvbiBmb3J3YXJkIGRlZmluaXRpb24gZHluYW1pY2FsbHkuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvQWRkRm9yd2FyZEFjdGlvbi5odG1sI0FkZEZvcndhcmRBY3Rpb24oKSI+PEI+QWRkRm9yd2FyZEFjdGlvbigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9BZGRGb3J3YXJkQWN0aW9uLmh0bWwiPkFkZEZvcndhcmRBY3Rpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjYWRkTWFwcGluZyhvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZykiPjxCPmFkZE1hcHBpbmcoQWN0aW9uTWFwcGluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5SZWdpc3RlciBhIG1hcHBpbmcgdG8gdGhlIHNldCBjb25maWd1cmVkIGZvciB0aGlzIHNlcnZsZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZ3MuaHRtbCNhZGRNYXBwaW5nKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nKSI+PEI+YWRkTWFwcGluZyhBY3Rpb25NYXBwaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmdzLmh0bWwiPkFjdGlvbk1hcHBpbmdzPC9BPgo8REQ+UmVnaXN0ZXIgYSBsb2dpY2FsIG1hcHBpbmcgdG8gdGhlIHNldCBjb25maWd1cmVkIGZvciB0aGlzIHNlcnZsZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0FkZE1hcHBpbmdBY3Rpb24uaHRtbCI+PEI+QWRkTWFwcGluZ0FjdGlvbjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0FkZE1hcHBpbmdBY3Rpb24uaHRtbCI+QWRkTWFwcGluZ0FjdGlvbjwvQT4uPEREPkEgc3RhbmRhcmQgPHN0cm9uZz5BY3Rpb248L3N0cm9uZz4gdGhhdCBjYWxscyB0aGUKIDxjb2RlPmFkZE1hcHBpbmcoKTwvY29kZT4gbWV0aG9kIG9mIG91ciBjb250cm9sbGVyIHNlcnZsZXQgdG8gYWRkIGEgbmV3CiBhY3Rpb24gbWFwcGluZyBkZWZpbml0aW9uIGR5bmFtaWNhbGx5LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0FkZE1hcHBpbmdBY3Rpb24uaHRtbCNBZGRNYXBwaW5nQWN0aW9uKCkiPjxCPkFkZE1hcHBpbmdBY3Rpb24oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvQWRkTWFwcGluZ0FjdGlvbi5odG1sIj5BZGRNYXBwaW5nQWN0aW9uPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI2FkZE9iamVjdENyZWF0ZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+YWRkT2JqZWN0Q3JlYXRlKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPkFkZCBhbiAib2JqZWN0IGNyZWF0ZSIgcnVsZSBmb3IgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNhZGRPYmplY3RDcmVhdGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmFkZE9iamVjdENyZWF0ZShTdHJpbmcsIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPkFkZCBhbiAib2JqZWN0IGNyZWF0ZSIgcnVsZSBmb3IgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sI2FkZE9wdGlvbihqYXZhLmxhbmcuU3RyaW5nQnVmZmVyLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBib29sZWFuKSI+PEI+YWRkT3B0aW9uKFN0cmluZ0J1ZmZlciwgU3RyaW5nLCBTdHJpbmcsIGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPkFkZCBhbiBvcHRpb24gZWxlbWVudCB0byB0aGUgc3BlY2lmaWVkIFN0cmluZ0J1ZmZlciBiYXNlZCBvbiB0aGUKIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI2FkZFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5hZGRQcm9wZXJ0eShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+QWRkIGEgZ2VuZXJpYyBwcm9wZXJ0eSB0byB0aGUgbGlzdCBvZiBjb25uZWN0aW9uIHByb3BlcnRpZXMgdG8gYmUgdXNlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjYWRkUnVsZShqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci5SdWxlKSI+PEI+YWRkUnVsZShTdHJpbmcsIFJ1bGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+UmVnaXN0ZXIgYSBuZXcgUnVsZSBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2FkZFNlcnZsZXRNYXBwaW5nKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5hZGRTZXJ2bGV0TWFwcGluZyhTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5SZW1lbWJlciBhIHNlcnZsZXQgbWFwcGluZyBmcm9tIG91ciB3ZWIgYXBwbGljYXRpb24gZGVwbG95bWVudAogZGVzY3JpcHRvciwgaWYgaXQgaXMgZm9yIHRoaXMgc2VydmxldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjYWRkU2V0TmV4dChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+YWRkU2V0TmV4dChTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5BZGQgYSAic2V0IG5leHQiIHJ1bGUgZm9yIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjYWRkU2V0TmV4dChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+YWRkU2V0TmV4dChTdHJpbmcsIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPkFkZCBhICJzZXQgbmV4dCIgcnVsZSBmb3IgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNhZGRTZXRQcm9wZXJ0aWVzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5hZGRTZXRQcm9wZXJ0aWVzKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5BZGQgYSAic2V0IHByb3BlcnRpZXMiIHJ1bGUgZm9yIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjYWRkU2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmFkZFNldFByb3BlcnR5KFN0cmluZywgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+QWRkIGEgInNldCBwcm9wZXJ0eSIgcnVsZSBmb3IgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNhZGRTZXRUb3AoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmFkZFNldFRvcChTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5BZGQgYSAic2V0IHRvcCIgcnVsZSBmb3IgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNhZGRTZXRUb3AoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmFkZFNldFRvcChTdHJpbmcsIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPkFkZCBhICJzZXQgdG9wIiBydWxlIGZvciB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNhbGlnbiI+PEI+YWxpZ248L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+VGhlIHByb3BlcnR5IHRvIHNwZWNpZnkgd2hlcmUgdG8gYWxpZ24gdGhlIGltYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI2FsbEVsZW1lbnRzIj48Qj5hbGxFbGVtZW50czwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwiPkRpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQT4KPEREPkEgSGFzaHRhYmxlIHJlcHJlc2VudGluZyBhbGwgZWxlbW5lbnRzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNhbHQiPjxCPmFsdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5UaGUgYWx0ZXJuYXRlIHRleHQgdG8gZGlzcGxheSBmb3IgdGhlIGltYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNhbHQiPjxCPmFsdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+VGhlIGFsdGVybmF0ZSB0ZXh0IGZvciB0aGlzIGltYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjYWx0KCkiPjxCPmFsdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGFsdGVybmF0ZSB0ZXh0IHRvIGJlIGluY2x1ZGVkIG9uIHRoaXMgZ2VuZXJhdGVkIGVsZW1lbnQsCiBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGVyZSBpcyBubyBzdWNoIHRleHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sI2FsdCgpIj48Qj5hbHQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sIj5JbWFnZVRhZzwvQT4KPEREPlJldHVybiB0aGUgYWx0ZXJuYXRlIHRleHQgdG8gYmUgaW5jbHVkZWQgb24gdGhpcyBnZW5lcmF0ZWQgZWxlbWVudCwKIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZXJlIGlzIG5vIHN1Y2ggdGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2FsdEtleSI+PEI+YWx0S2V5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlRoZSBtZXNzYWdlIGxvb2t1cCBrZXkgdXNlZCB0byBsb29rIHVwIGludGVybmF0aW9uYWxpemVkIG1lc3NhZ2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNhbHRLZXkiPjxCPmFsdEtleTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGtleSBmb3IgdGhlIGFsdGVybmF0ZSB0ZXh0IGZvciB0aGlzIGltYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sI2FuY2hvciI+PEI+YW5jaG9yPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sIj5JbmNsdWRlVGFnPC9BPgo8REQ+VGhlIGFuY2hvciB0byBiZSBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSBnZW5lcmF0ZWQgaHlwZXJsaW5rLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI2FuY2hvciI+PEI+YW5jaG9yPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+VGhlIGFuY2hvciB0byBiZSBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSBnZW5lcmF0ZWQgaHlwZXJsaW5rLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwjYW5jaG9yIj48Qj5hbmNob3I8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+VGhlIGFuY2hvciB0byBiZSBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSBnZW5lcmF0ZWQgaHlwZXJsaW5rLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNhcHBsaWNhdGlvbiI+PEI+YXBwbGljYXRpb248L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSByZXNvdXJjZXMgb2JqZWN0IGZvciBvdXIgYXBwbGljYXRpb24gcmVzb3VyY2VzIChpZiBhbnkpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCNhcmcwIj48Qj5hcmcwPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5UaGUgZmlyc3Qgb3B0aW9uYWwgYXJndW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjYXJnMCI+PEI+YXJnMDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlRoZSBmaXJzdCBvcHRpb25hbCBhcmd1bWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwjYXJnMSI+PEI+YXJnMTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+VGhlIHNlY29uZCBvcHRpb25hbCBhcmd1bWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCNhcmcxIj48Qj5hcmcxPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+VGhlIHNlY29uZCBvcHRpb25hbCBhcmd1bWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwjYXJnMiI+PEI+YXJnMjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+VGhlIHRoaXJkIG9wdGlvbmFsIGFyZ3VtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sI2FyZzIiPjxCPmFyZzI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5UaGUgdGhpcmQgb3B0aW9uYWwgYXJndW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI2FyZzMiPjxCPmFyZzM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlRoZSBmb3VydGggb3B0aW9uYWwgYXJndW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjYXJnMyI+PEI+YXJnMzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlRoZSBmb3VydGggb3B0aW9uYWwgYXJndW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI2FyZzQiPjxCPmFyZzQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlRoZSBmaWZ0aCBvcHRpb25hbCBhcmd1bWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCNhcmc0Ij48Qj5hcmc0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+VGhlIGZpZnRoIG9wdGlvbmFsIGFyZ3VtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9BcnJheVN0YWNrLmh0bWwiPjxCPkFycmF5U3RhY2s8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9BcnJheVN0YWNrLmh0bWwiPkFycmF5U3RhY2s8L0E+LjxERD5JbXBsZW1lbnRhdGlvbiBvZiB0aGUgPGNvZGU+amF2YS51dGlsLlN0YWNrPC9jb2RlPiBBUEkgdGhhdCBpcyBiYXNlZCBvbgogYW4gPGNvZGU+QXJyYXlMaXN0PC9jb2RlPiByYXRoZXIgdGhhbiBhIDxjb2RlPlZlY3RvcjwvY29kZT4uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQXJyYXlTdGFjay5odG1sI0FycmF5U3RhY2soKSI+PEI+QXJyYXlTdGFjaygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9BcnJheVN0YWNrLmh0bWwiPkFycmF5U3RhY2s8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjYXR0cmlidXRlIj48Qj5hdHRyaWJ1dGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSByZXF1ZXN0LXNjb3BlIG9yIHNlc3Npb24tc2NvcGUgYXR0cmlidXRlIHVuZGVyIHdoaWNoCiBvdXIgZm9ybSBiZWFuLCBpZiBhbnksIHdpbGwgYmUgY3JlYXRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL09iamVjdENyZWF0ZVJ1bGUuaHRtbCNhdHRyaWJ1dGVOYW1lIj48Qj5hdHRyaWJ1dGVOYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvT2JqZWN0Q3JlYXRlUnVsZS5odG1sIj5PYmplY3RDcmVhdGVSdWxlPC9BPgo8REQ+VGhlIGF0dHJpYnV0ZSBjb250YWluaW5nIGFuIG92ZXJyaWRlIGNsYXNzIG5hbWUgaWYgaXQgaXMgcHJlc2VudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxQYXJhbVJ1bGUuaHRtbCNhdHRyaWJ1dGVOYW1lIj48Qj5hdHRyaWJ1dGVOYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbFBhcmFtUnVsZS5odG1sIj5DYWxsUGFyYW1SdWxlPC9BPgo8REQ+VGhlIGF0dHJpYnV0ZSBmcm9tIHdoaWNoIHRvIHNhdmUgdGhlIHBhcmFtZXRlciB2YWx1ZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI2F1dG9Db21taXQiPjxCPmF1dG9Db21taXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5UaGUgaW5pdGlhbCBhdXRvLWNvbW1pdCBzdGF0ZSB0byB3aGljaCB3ZSBzaG91bGQgcmV0dXJuIGFmdGVyIHJlbGVhc2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjYXV0b0NvbW1pdCI+PEI+YXV0b0NvbW1pdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPlRoZSBkZWZhdWx0IGF1dG8tY29tbWl0IHN0YXRlIGZvciBuZXdseSBjcmVhdGVkIGNvbm5lY3Rpb25zLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCNhdmFpbGFibGUoKSI+PEI+YXZhaWxhYmxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwiPkJ1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW08L0E+CjxERD5UaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIGJ5dGVzIGxlZnQgdG8gcmVhZAogaW4gdGhlIGJ1ZmZlciBiZWZvcmUgaXQgaGFzIHRvIGJlIHJlZmlsbGVkCjwvREw+CjxIUj4KPEEgTkFNRT0iX0JfIj48IS0tIC0tPjwvQT48SDI+CjxCPkI8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VBdHRyaWJ1dGVUYWcuaHRtbCI+PEI+QmFzZUF0dHJpYnV0ZVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlQXR0cmlidXRlVGFnLmh0bWwiPkJhc2VBdHRyaWJ1dGVUYWc8L0E+LjxERD5CYXNlIGNsYXNzIGZvciBjb25kaXRpb25hbHMgYmFzZWQgb24gdGhlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YKIGF0dHJpYnV0ZXMgaW4gc29tZSBhcHByb3ByaWF0ZSBzY29wZSAoZGVmYXVsdD1zZXNzaW9uKS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VBdHRyaWJ1dGVUYWcuaHRtbCNCYXNlQXR0cmlidXRlVGFnKCkiPjxCPkJhc2VBdHRyaWJ1dGVUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VBdHRyaWJ1dGVUYWcuaHRtbCI+QmFzZUF0dHJpYnV0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VGaWVsZFRhZy5odG1sIj48Qj5CYXNlRmllbGRUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUZpZWxkVGFnLmh0bWwiPkJhc2VGaWVsZFRhZzwvQT4uPEREPkNvbnZlbmllbmNlIGJhc2UgY2xhc3MgZm9yIHRoZSB2YXJpb3VzIGlucHV0IHRhZ3MgZm9yIHRleHQgZmllbGRzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlRmllbGRUYWcuaHRtbCI+PEI+QmFzZUZpZWxkVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlRmllbGRUYWcuaHRtbCI+QmFzZUZpZWxkVGFnPC9BPi48REQ+Q29udmVuaWVuY2UgYmFzZSBjbGFzcyBmb3IgdGhlIHZhcmlvdXMgaW5wdXQgdGFncyBmb3IgdGV4dCBmaWVsZHMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlRmllbGRUYWcuaHRtbCNCYXNlRmllbGRUYWcoKSI+PEI+QmFzZUZpZWxkVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlRmllbGRUYWcuaHRtbCI+QmFzZUZpZWxkVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlRmllbGRUYWcuaHRtbCNCYXNlRmllbGRUYWcoKSI+PEI+QmFzZUZpZWxkVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwiPkJhc2VGaWVsZFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPjxCPkJhc2VIYW5kbGVyVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPi48REQ+QmFzZSBjbGFzcyBmb3IgdGFncyB0aGF0IHJlbmRlciBmb3JtIGVsZW1lbnRzIGNhcGFibGUgb2YgaW5jbHVkaW5nIEphdmFTY3JpcHQKIGV2ZW50IGhhbmRsZXJzIGFuZC9vciBDU1MgU3R5bGUgYXR0cmlidXRlcy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+PEI+QmFzZUhhbmRsZXJUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPi48REQ+QmFzZSBjbGFzcyBmb3IgdGFncyB0aGF0IHJlbmRlciBmb3JtIGVsZW1lbnRzIGNhcGFibGUgb2YgaW5jbHVkaW5nIEphdmFTY3JpcHQKIGV2ZW50IGhhbmRsZXJzIGFuZC9vciBDU1MgU3R5bGUgYXR0cmlidXRlcy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjQmFzZUhhbmRsZXJUYWcoKSI+PEI+QmFzZUhhbmRsZXJUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI0Jhc2VIYW5kbGVyVGFnKCkiPjxCPkJhc2VIYW5kbGVyVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCI+PEI+QmFzZUlucHV0VGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+LjxERD5BYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aGUgdmFyaW91cyBpbnB1dCB0YWdzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCI+PEI+QmFzZUlucHV0VGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPi48REQ+QWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdGhlIHZhcmlvdXMgaW5wdXQgdGFncy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sI0Jhc2VJbnB1dFRhZygpIj48Qj5CYXNlSW5wdXRUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sI0Jhc2VJbnB1dFRhZygpIj48Qj5CYXNlSW5wdXRUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZVRhZy5odG1sIj48Qj5CYXNlVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VUYWcuaHRtbCI+QmFzZVRhZzwvQT4uPEREPlJlbmRlcnMgYW4gSFRNTCA8YmFzZT4gZWxlbWVudCB3aXRoIGFuIGhyZWYgCiBhdHRyaWJ1dGUgcG9pbnRpbmcgdG8gdGhlIGFic29sdXRlIGxvY2F0aW9uIG9mIHRoZSBlbmNsb3NpbmcgSlNQIHBhZ2UuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VUYWcuaHRtbCI+PEI+QmFzZVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZVRhZy5odG1sIj5CYXNlVGFnPC9BPi48REQ+UmVuZGVycyBhbiBIVE1MIDxiYXNlPiBlbGVtZW50IHdpdGggYW4gaHJlZiAKIGF0dHJpYnV0ZSBwb2ludGluZyB0byB0aGUgYWJzb2x1dGUgbG9jYXRpb24gb2YgdGhlIGVuY2xvc2luZyBKU1AgcGFnZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VUYWcuaHRtbCNCYXNlVGFnKCkiPjxCPkJhc2VUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VUYWcuaHRtbCI+QmFzZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZVRhZy5odG1sI0Jhc2VUYWcoKSI+PEI+QmFzZVRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VUYWcuaHRtbCI+QmFzZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NvbnN0YW50cy5odG1sI0JFQU5fS0VZIj48Qj5CRUFOX0tFWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NvbnN0YW50cy5odG1sIj5Db25zdGFudHM8L0E+CjxERD5UaGUgYXR0cmlidXRlIGtleSBmb3IgdGhlIGJlYW4gb3VyIGZvcm0gaXMgcmVsYXRlZCB0by4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NvbnN0YW50cy5odG1sI0JFQU5fS0VZIj48Qj5CRUFOX0tFWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Db25zdGFudHMuaHRtbCI+Q29uc3RhbnRzPC9BPgo8REQ+VGhlIGF0dHJpYnV0ZSBrZXkgZm9yIHRoZSBiZWFuIG91ciBmb3JtIGlzIHJlbGF0ZWQgdG8uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0JlYW5VdGlscy5odG1sIj48Qj5CZWFuVXRpbHM8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9CZWFuVXRpbHMuaHRtbCI+QmVhblV0aWxzPC9BPi48REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXQgc29tZSBwb2ludCBhZnRlciBTdHJ1dHMgMS4wIGZpbmFsLCB3aWxsIGJlIHJlcGxhY2VkIGJ5CiAgYW4gZXF1aXZhbGVudCBjbGFzcyBpbiB0aGUgSmFrYXJ0YSBDb21tb25zIEJlYW51dGlscyBwYWNrYWdlLjwvST48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9CZWFuVXRpbHMuaHRtbCNCZWFuVXRpbHMoKSI+PEI+QmVhblV0aWxzKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0JlYW5VdGlscy5odG1sIj5CZWFuVXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BZGREYXRhU291cmNlUnVsZS5odG1sI2JlZ2luKG9yZy54bWwuc2F4LkF0dHJpYnV0ZUxpc3QpIj48Qj5iZWdpbihBdHRyaWJ1dGVMaXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FkZERhdGFTb3VyY2VSdWxlLmh0bWwiPkFkZERhdGFTb3VyY2VSdWxlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9SdWxlLmh0bWwjYmVnaW4ob3JnLnhtbC5zYXguQXR0cmlidXRlTGlzdCkiPjxCPmJlZ2luKEF0dHJpYnV0ZUxpc3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1J1bGUuaHRtbCI+UnVsZTwvQT4KPEREPlRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBiZWdpbm5pbmcgb2YgYSBtYXRjaGluZyBYTUwgZWxlbWVudAogaXMgZW5jb3VudGVyZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXRQcm9wZXJ0aWVzUnVsZS5odG1sI2JlZ2luKG9yZy54bWwuc2F4LkF0dHJpYnV0ZUxpc3QpIj48Qj5iZWdpbihBdHRyaWJ1dGVMaXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXRQcm9wZXJ0aWVzUnVsZS5odG1sIj5TZXRQcm9wZXJ0aWVzUnVsZTwvQT4KPEREPlByb2Nlc3MgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGVsZW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9PYmplY3RDcmVhdGVSdWxlLmh0bWwjYmVnaW4ob3JnLnhtbC5zYXguQXR0cmlidXRlTGlzdCkiPjxCPmJlZ2luKEF0dHJpYnV0ZUxpc3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL09iamVjdENyZWF0ZVJ1bGUuaHRtbCI+T2JqZWN0Q3JlYXRlUnVsZTwvQT4KPEREPlByb2Nlc3MgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGVsZW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXRQcm9wZXJ0eVJ1bGUuaHRtbCNiZWdpbihvcmcueG1sLnNheC5BdHRyaWJ1dGVMaXN0KSI+PEI+YmVnaW4oQXR0cmlidXRlTGlzdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0UHJvcGVydHlSdWxlLmh0bWwiPlNldFByb3BlcnR5UnVsZTwvQT4KPEREPlByb2Nlc3MgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGVsZW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsUGFyYW1SdWxlLmh0bWwjYmVnaW4ob3JnLnhtbC5zYXguQXR0cmlidXRlTGlzdCkiPjxCPmJlZ2luKEF0dHJpYnV0ZUxpc3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxQYXJhbVJ1bGUuaHRtbCI+Q2FsbFBhcmFtUnVsZTwvQT4KPEREPlByb2Nlc3MgdGhlIHN0YXJ0IG9mIHRoaXMgZWxlbWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxNZXRob2RSdWxlLmh0bWwjYmVnaW4ob3JnLnhtbC5zYXguQXR0cmlidXRlTGlzdCkiPjxCPmJlZ2luKEF0dHJpYnV0ZUxpc3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxNZXRob2RSdWxlLmh0bWwiPkNhbGxNZXRob2RSdWxlPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3RhcnQgb2YgdGhpcyBlbGVtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvUnVsZS5odG1sI2JvZHkoamF2YS5sYW5nLlN0cmluZykiPjxCPmJvZHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9SdWxlLmh0bWwiPlJ1bGU8L0E+CjxERD5UaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgYm9keSBvZiBhIG1hdGNoaW5nIFhNTCBlbGVtZW50CiBpcyBlbmNvdW50ZXJlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxQYXJhbVJ1bGUuaHRtbCNib2R5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5ib2R5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbFBhcmFtUnVsZS5odG1sIj5DYWxsUGFyYW1SdWxlPC9BPgo8REQ+UHJvY2VzcyB0aGUgYm9keSB0ZXh0IG9mIHRoaXMgZWxlbWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxNZXRob2RSdWxlLmh0bWwjYm9keShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Ym9keShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxNZXRob2RSdWxlLmh0bWwiPkNhbGxNZXRob2RSdWxlPC9BPgo8REQ+UHJvY2VzcyB0aGUgYm9keSB0ZXh0IG9mIHRoaXMgZWxlbWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjYm9keVRleHQiPjxCPmJvZHlUZXh0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5UaGUgYm9keSB0ZXh0IG9mIHRoZSBjdXJyZW50IGVsZW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsUGFyYW1SdWxlLmh0bWwjYm9keVRleHQiPjxCPmJvZHlUZXh0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbFBhcmFtUnVsZS5odG1sIj5DYWxsUGFyYW1SdWxlPC9BPgo8REQ+VGhlIGJvZHkgdGV4dCBjb2xsZWN0ZWQgZnJvbSB0aGlzIGVsZW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsTWV0aG9kUnVsZS5odG1sI2JvZHlUZXh0Ij48Qj5ib2R5VGV4dDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxNZXRob2RSdWxlLmh0bWwiPkNhbGxNZXRob2RSdWxlPC9BPgo8REQ+VGhlIGJvZHkgdGV4dCBjb2xsZWN0ZWQgZnJvbSB0aGlzIGVsZW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI2JvZHlUZXh0cyI+PEI+Ym9keVRleHRzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5UaGUgc3RhY2sgb2YgYm9keSB0ZXh0IHN0cmluZyBidWZmZXJzIGZvciBzdXJyb3VuZGluZyBlbGVtZW50cy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2JvcmRlciI+PEI+Ym9yZGVyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlRoZSBib3JkZXIgc2l6ZSBhcm91bmQgdGhlIGltYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNib3JkZXIiPjxCPmJvcmRlcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+VGhlIGJvcmRlciBzaXplIGFyb3VuZCB0aGUgaW1hZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNib3VuZGFyeSI+PEI+Ym91bmRhcnk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwiPk11bHRpcGFydEl0ZXJhdG9yPC9BPgo8REQ+VGhlIGJvdW5kYXJ5IGZvciB0aGlzIG11bHRpcGFydCByZXF1ZXN0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0VmFsdWVTdHJlYW0uaHRtbCNib3VuZGFyeUJ5dGVzIj48Qj5ib3VuZGFyeUJ5dGVzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sIj5NdWx0aXBhcnRWYWx1ZVN0cmVhbTwvQT4KPEREPmJ5dGUgYnVmZmVyIHdpdGggdGhlIGJvdW5kYXJ5CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNib3VuZGFyeUJ5dGVzIj48Qj5ib3VuZGFyeUJ5dGVzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPlRoZSBieXRlIGFycmF5IHJlcHJlc2VudGluZyB0aGUgYm91bmRhcnkgZm9yIHRoaXMgbXVsdGlwYXJ0IHJlcXVlc3QKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sI2JvdW5kYXJ5UmVhY2hlZCI+PEI+Ym91bmRhcnlSZWFjaGVkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sIj5NdWx0aXBhcnRWYWx1ZVN0cmVhbTwvQT4KPEREPmhhdmUgd2UgcmVhY2hlZCB0aGUgYm91bmRhcnk/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sI2J1ZmZlciI+PEI+YnVmZmVyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwiPkJ1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW08L0E+CjxERD5UaGUgYnl0ZSBhcnJheSB1c2VkIHRvIGhvbGQgYnVmZmVyZWQgZGF0YQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sI2J1ZmZlciI+PEI+YnVmZmVyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+VGhlIGJ1ZmZlciBpbnRvIHdoaWNoIHdlIGFjY3VtdWxhdGUgbGluZXMgdG8gYmUgbG9nZ2VkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCNCVUZGRVJfU0laRSI+PEI+QlVGRkVSX1NJWkU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCI+UmVzb3VyY2VUYWc8L0E+CjxERD5CdWZmZXIgc2l6ZSB0byB1c2Ugd2hlbiByZWFkaW5nIHRoZSBpbnB1dCBzdHJlYW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwjQlVGRkVSX1NJWkUiPjxCPkJVRkZFUl9TSVpFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCI+SW5jbHVkZVRhZzwvQT4KPEREPkJ1ZmZlciBzaXplIHRvIHVzZSB3aGVuIHJlYWRpbmcgdGhlIGlucHV0IHN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwiPjxCPkJ1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW08L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sIj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtPC9BPi48REQ+VGhpcyBjbGFzcyBpbXBsZW1lbnRzIGJ1ZmZlcmluZyBmb3IgYW4gSW5wdXRTdHJlYW0gYXMgd2VsbCBhcyBhCiByZWFkTGluZSBtZXRob2QuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwjQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbShqYXZhLmlvLklucHV0U3RyZWFtLCBpbnQsIGxvbmcsIGxvbmcpIj48Qj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtKElucHV0U3RyZWFtLCBpbnQsIGxvbmcsIGxvbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sIj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtPC9BPgo8REQ+UHVibGljIGNvbnN0cnVjdG9yIGZvciB0aGlzIGNsYXNzLCBqdXN0IHdyYXBzIHRoZSBJbnB1dFN0cmVhbQogZ2l2ZW4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwjYnVmZmVyTGVuZ3RoIj48Qj5idWZmZXJMZW5ndGg8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCI+QnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbTwvQT4KPEREPlRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCBmcm9tIHRoZSB1bmRlcmx5aW5nIElucHV0U3RyZWFtIHRoYXQgYXJlCiBpbiB0aGUgYnVmZmVyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sI2J1ZmZlck9mZnNldCI+PEI+YnVmZmVyT2Zmc2V0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwiPkJ1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW08L0E+CjxERD5UaGUgY3VycmVudCBvZmZzZXQgd2UncmUgYXQgaW4gdGhlIGJ1ZmZlcidzIGJ5dGUgYXJyYXkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjYnVmZmVyU2l6ZSI+PEI+YnVmZmVyU2l6ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+VGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIHJlYWQgZmlsZXMgZnJvbSBhIGNsaWVudCB1cGxvYWQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwjYnVmZmVyU2l6ZSI+PEI+YnVmZmVyU2l6ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sIj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtPC9BPgo8REQ+VGhlIHNpemUgb2YgdGhlIGJ5dGUgYXJyYXkgYnVmZmVyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNidWZmZXJTaXplIj48Qj5idWZmZXJTaXplPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPlRoZSBhbW91bnQgb2YgZGF0YSByZWFkIGZyb20gYSByZXF1ZXN0IGF0IGEgdGltZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwjYnVuZGxlIj48Qj5idW5kbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlRoZSBzZXJ2bGV0IGNvbnRleHQgYXR0cmlidXRlIGtleSBmb3Igb3VyIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCNidW5kbGUiPjxCPmJ1bmRsZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlRoZSBzZXJ2bGV0IGNvbnRleHQgYXR0cmlidXRlIGtleSBmb3Igb3VyIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2J1bmRsZSI+PEI+YnVuZGxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBzZXJ2bGV0IGNvbnRleHQgYXR0cmlidXRlIGNvbnRhaW5pbmcgb3VyIG1lc3NhZ2UKIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sI2J1bmRsZSI+PEI+YnVuZGxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPlRoZSBzZXJ2bGV0IGNvbnRleHQgYXR0cmlidXRlIGtleSBmb3Igb3VyIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjYnVuZGxlIj48Qj5idW5kbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sIj5JbWFnZVRhZzwvQT4KPEREPlRoZSBzZXJ2bGV0IGNvbnRleHQgYXR0cmlidXRlIGtleSBmb3Igb3VyIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvblRhZy5odG1sI2J1bmRsZSI+PEI+YnVuZGxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwiPk9wdGlvblRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBzZXJ2bGV0IGNvbnRleHQgYXR0cmlidXRlIGNvbnRhaW5pbmcgb3VyIG1lc3NhZ2UKIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCI+PEI+QnV0dG9uVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0J1dHRvblRhZy5odG1sIj5CdXR0b25UYWc8L0E+LjxERD5SZW5kZXJzIGFuIEhUTUwgQlVUVE9OIHRhZyB3aXRoaW4gdGhlIFN0cnV0cyBmcmFtZXdvcmsuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0J1dHRvblRhZy5odG1sIj48Qj5CdXR0b25UYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0J1dHRvblRhZy5odG1sIj5CdXR0b25UYWc8L0E+LjxERD5SZW5kZXJzIGFuIEhUTUwgQlVUVE9OIHRhZyB3aXRoaW4gdGhlIFN0cnV0cyBmcmFtZXdvcmsuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCNCdXR0b25UYWcoKSI+PEI+QnV0dG9uVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCI+QnV0dG9uVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CdXR0b25UYWcuaHRtbCNCdXR0b25UYWcoKSI+PEI+QnV0dG9uVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQnV0dG9uVGFnLmh0bWwiPkJ1dHRvblRhZzwvQT4KPEREPiZuYnNwOwo8L0RMPgo8SFI+CjxBIE5BTUU9Il9DXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5DPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxNZXRob2RSdWxlLmh0bWwiPjxCPkNhbGxNZXRob2RSdWxlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsTWV0aG9kUnVsZS5odG1sIj5DYWxsTWV0aG9kUnVsZTwvQT4uPEREPlJ1bGUgaW1wbGVtZW50YXRpb24gdGhhdCBjYWxscyBhIG1ldGhvZCBvbiB0aGUgdG9wIChwYXJlbnQpCiBvYmplY3QsIHBhc3NpbmcgYXJndW1lbnRzIGNvbGxlY3RlZCBmcm9tIHN1YnNlcXVlbnQKIDxjb2RlPkNhbGxQYXJhbVJ1bGU8L2NvZGU+IHJ1bGVzIG9yIGZyb20gdGhlIGJvZHkgb2YgdGhpcwogZWxlbWVudC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbE1ldGhvZFJ1bGUuaHRtbCNDYWxsTWV0aG9kUnVsZShvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci5EaWdlc3RlciwgamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+Q2FsbE1ldGhvZFJ1bGUoRGlnZXN0ZXIsIFN0cmluZywgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsTWV0aG9kUnVsZS5odG1sIj5DYWxsTWV0aG9kUnVsZTwvQT4KPEREPkNvbnN0cnVjdCBhICJjYWxsIG1ldGhvZCIgcnVsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbWV0aG9kIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsTWV0aG9kUnVsZS5odG1sI0NhbGxNZXRob2RSdWxlKG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLkRpZ2VzdGVyLCBqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGphdmEubGFuZy5DbGFzc1tdKSI+PEI+Q2FsbE1ldGhvZFJ1bGUoRGlnZXN0ZXIsIFN0cmluZywgaW50LCBDbGFzc1tdKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsTWV0aG9kUnVsZS5odG1sIj5DYWxsTWV0aG9kUnVsZTwvQT4KPEREPkNvbnN0cnVjdCBhICJjYWxsIG1ldGhvZCIgcnVsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbWV0aG9kIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsTWV0aG9kUnVsZS5odG1sI0NhbGxNZXRob2RSdWxlKG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLkRpZ2VzdGVyLCBqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGphdmEubGFuZy5TdHJpbmdbXSkiPjxCPkNhbGxNZXRob2RSdWxlKERpZ2VzdGVyLCBTdHJpbmcsIGludCwgU3RyaW5nW10pPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxNZXRob2RSdWxlLmh0bWwiPkNhbGxNZXRob2RSdWxlPC9BPgo8REQ+Q29uc3RydWN0IGEgImNhbGwgbWV0aG9kIiBydWxlIHdpdGggdGhlIHNwZWNpZmllZCBtZXRob2QgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxQYXJhbVJ1bGUuaHRtbCI+PEI+Q2FsbFBhcmFtUnVsZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbFBhcmFtUnVsZS5odG1sIj5DYWxsUGFyYW1SdWxlPC9BPi48REQ+UnVsZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHNhdmVzIGEgcGFyYW1ldGVyIGZyb20gZWl0aGVyIGFuIGF0dHJpYnV0ZSBvZgogdGhpcyBlbGVtZW50LCBvciBmcm9tIHRoZSBlbGVtZW50IGJvZHksIHRvIGJlIHVzZWQgaW4gYSBjYWxsIGdlbmVyYXRlZAogYnkgYSBzdXJyb3VuZGluZyBDYWxsTWV0aG9kUnVsZSBydWxlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsUGFyYW1SdWxlLmh0bWwjQ2FsbFBhcmFtUnVsZShvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci5EaWdlc3RlciwgaW50KSI+PEI+Q2FsbFBhcmFtUnVsZShEaWdlc3RlciwgaW50KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsUGFyYW1SdWxlLmh0bWwiPkNhbGxQYXJhbVJ1bGU8L0E+CjxERD5Db25zdHJ1Y3QgYSAiY2FsbCBwYXJhbWV0ZXIiIHJ1bGUgdGhhdCB3aWxsIHNhdmUgdGhlIGJvZHkgdGV4dCBvZiB0aGlzCiBlbGVtZW50IGFzIHRoZSBwYXJhbWV0ZXIgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsUGFyYW1SdWxlLmh0bWwjQ2FsbFBhcmFtUnVsZShvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci5EaWdlc3RlciwgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Q2FsbFBhcmFtUnVsZShEaWdlc3RlciwgaW50LCBTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxQYXJhbVJ1bGUuaHRtbCI+Q2FsbFBhcmFtUnVsZTwvQT4KPEREPkNvbnN0cnVjdCBhICJjYWxsIHBhcmFtZXRlciIgcnVsZSB0aGF0IHdpbGwgc2F2ZSB0aGUgdmFsdWUgb2YgdGhlCiBzcGVjaWZpZWQgYXR0cmlidXRlIGFzIHRoZSBwYXJhbWV0ZXIgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ29uc3RhbnRzLmh0bWwjQ0FOQ0VMX1BST1BFUlRZIj48Qj5DQU5DRUxfUFJPUEVSVFk8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Db25zdGFudHMuaHRtbCI+Q29uc3RhbnRzPC9BPgo8REQ+VGhlIHByb3BlcnR5IHVuZGVyIHdoaWNoIGEgQ2FuY2VsIGJ1dHRvbiBwcmVzcyBpcyByZXBvcnRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NvbnN0YW50cy5odG1sI0NBTkNFTF9QUk9QRVJUWSI+PEI+Q0FOQ0VMX1BST1BFUlRZPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NvbnN0YW50cy5odG1sIj5Db25zdGFudHM8L0E+CjxERD5UaGUgcHJvcGVydHkgdW5kZXIgd2hpY2ggYSBDYW5jZWwgYnV0dG9uIHByZXNzIGlzIHJlcG9ydGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ29uc3RhbnRzLmh0bWwjQ0FOQ0VMX1BST1BFUlRZX1giPjxCPkNBTkNFTF9QUk9QRVJUWV9YPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NvbnN0YW50cy5odG1sIj5Db25zdGFudHM8L0E+CjxERD5UaGUgcHJvcGVydHkgdW5kZXIgd2hpY2ggYSBDYW5jZWwgYnV0dG9uIHByZXNzIGlzIHJlcG9ydGVkLCBpZiB0aGUKIENhbmNlbCBidXR0b24gaXMgcmVuZGVyZWQgYXMgYW4gaW1hZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2FuY2VsVGFnLmh0bWwiPjxCPkNhbmNlbFRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DYW5jZWxUYWcuaHRtbCI+Q2FuY2VsVGFnPC9BPi48REQ+VGFnIGZvciBpbnB1dCBmaWVsZHMgb2YgdHlwZSAiY2FuY2VsIi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2FuY2VsVGFnLmh0bWwiPjxCPkNhbmNlbFRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2FuY2VsVGFnLmh0bWwiPkNhbmNlbFRhZzwvQT4uPEREPlRhZyBmb3IgaW5wdXQgZmllbGRzIG9mIHR5cGUgImNhbmNlbCIuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DYW5jZWxUYWcuaHRtbCNDYW5jZWxUYWcoKSI+PEI+Q2FuY2VsVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DYW5jZWxUYWcuaHRtbCI+Q2FuY2VsVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DYW5jZWxUYWcuaHRtbCNDYW5jZWxUYWcoKSI+PEI+Q2FuY2VsVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2FuY2VsVGFnLmh0bWwiPkNhbmNlbFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI2NhdGFsb2ciPjxCPmNhdGFsb2c8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5UaGUgaW5pdGlhbCBjYXRhbG9nIHRvIHdoaWNoIHdlIHNob3VsZCByZXR1cm4gYWZ0ZXIgcmVsZWFzZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjY2hhcmFjdGVycyhjaGFyW10sIGludCwgaW50KSI+PEI+Y2hhcmFjdGVycyhjaGFyW10sIGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPlByb2Nlc3Mgbm90aWZpY2F0aW9uIG9mIGNoYXJhY3RlciBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIGJvZHkgb2YKIGFuIFhNTCBlbGVtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NoZWNrYm94VGFnLmh0bWwiPjxCPkNoZWNrYm94VGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPi48REQ+VGFnIGZvciBpbnB1dCBmaWVsZHMgb2YgdHlwZSAiY2hlY2tib3giLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sIj48Qj5DaGVja2JveFRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2hlY2tib3hUYWcuaHRtbCI+Q2hlY2tib3hUYWc8L0E+LjxERD5UYWcgZm9yIGlucHV0IGZpZWxkcyBvZiB0eXBlICJjaGVja2JveCIuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sI0NoZWNrYm94VGFnKCkiPjxCPkNoZWNrYm94VGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sIj5DaGVja2JveFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2hlY2tib3hUYWcuaHRtbCNDaGVja2JveFRhZygpIj48Qj5DaGVja2JveFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjY2hlY2tFcnJvcigpIj48Qj5jaGVja0Vycm9yKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+Rmx1c2ggdGhlIHN0cmVhbSBhbmQgY2hlY2sgZm9yIGl0cyBlcnJvciBzdGF0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL09iamVjdENyZWF0ZVJ1bGUuaHRtbCNjbGFzc05hbWUiPjxCPmNsYXNzTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL09iamVjdENyZWF0ZVJ1bGUuaHRtbCI+T2JqZWN0Q3JlYXRlUnVsZTwvQT4KPEREPlRoZSBKYXZhIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCB0byBiZSBjcmVhdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9EaXNwYXRjaEFjdGlvbi5odG1sI2NsYXp6Ij48Qj5jbGF6ejwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9EaXNwYXRjaEFjdGlvbi5odG1sIj5EaXNwYXRjaEFjdGlvbjwvQT4KPEREPlRoZSBDbGFzcyBpbnN0YW5jZSBvZiB0aGlzIDxjb2RlPkRpc3BhdGNoQWN0aW9uPC9jb2RlPiBjbGFzcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlc0ZhY3RvcnkuaHRtbCNjbGF6eiI+PEI+Y2xheno8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5PC9BPgo8REQ+VGhlIEphdmEgY2xhc3MgdG8gYmUgdXNlZCBmb3IKIDxjb2RlPk1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5PC9jb2RlPiBpbnN0YW5jZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwjY2xlYXIoKSI+PEI+Y2xlYXIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+CjxERD5DbGVhciBhbGwgZXJyb3IgbWVzc2FnZXMgcmVjb3JkZWQgYnkgdGhpcyBvYmplY3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI2NsZWFyKCkiPjxCPmNsZWFyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5DbGVhciB0aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgb2JqZWN0IHN0YWNrLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sI2NsZWFyKCkiPjxCPmNsZWFyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPkZhc3RIYXNoTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmVtb3ZlIGFsbCBtYXBwaW5ncyBmcm9tIHRoaXMgbWFwLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9BcnJheVN0YWNrLmh0bWwjY2xlYXIoKSI+PEI+Y2xlYXIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQXJyYXlTdGFjay5odG1sIj5BcnJheVN0YWNrPC9BPgo8REQ+UmVtb3ZlIGFsbCBlbGVtZW50cyBmcm9tIHRoaXMgc3RhY2suCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNjbGVhcigpIj48Qj5jbGVhcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwiPkZhc3RBcnJheUxpc3Q8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZW1vdmUgYWxsIG9mIHRoZSBlbGVtZW50cyBmcm9tIHRoaXMgbGlzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCNjbGVhcigpIj48Qj5jbGVhcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JlbW92ZSBhbGwgbWFwcGluZ3MgZnJvbSB0aGlzIG1hcC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCNjbGVhcldhcm5pbmdzKCkiPjxCPmNsZWFyV2FybmluZ3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5DbGVhciBhbGwgd2FybmluZ3MgcmVwb3J0ZWQgZm9yIHRoaXMgQ29ubmVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCNjbG9uZSgpIj48Qj5jbG9uZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sIj5GYXN0SGFzaE1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGlzIDxjb2RlPkZhc3RIYXNoTWFwPC9jb2RlPiBpbnN0YW5jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sI2Nsb25lKCkiPjxCPmNsb25lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGlzIDxjb2RlPkZhc3RBcnJheUxpc3Q8L2NvZGU+IGluc3RhbmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sI2Nsb25lKCkiPjxCPmNsb25lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwiPkZhc3RUcmVlTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoaXMgPGNvZGU+RmFzdFRyZWVNYXA8L2NvZGU+IGluc3RhbmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9CZWFuVXRpbHMuaHRtbCNjbG9uZUJlYW4oamF2YS5sYW5nLk9iamVjdCkiPjxCPmNsb25lQmVhbihPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQmVhblV0aWxzLmh0bWwiPkJlYW5VdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0Nsb25lIGEgYmVhbiBiYXNlZCBvbiB0aGUgYXZhaWxhYmxlIHByb3BlcnR5IGdldHRlcnMgYW5kIHNldHRlcnMsCiBldmVuIGlmIHRoZSBiZWFuIGNsYXNzIGl0c2VsZiBkb2VzIG5vdCBpbXBsZW1lbnQgQ2xvbmVhYmxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCNjbG9zZSgpIj48Qj5jbG9zZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sIj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtPC9BPgo8REQ+VGhpcyBtZXRob2QgYXR0ZW1wdHMgdG8gY2xvc2UgdGhlIHVuZGVybHlpbmcgSW5wdXRTdHJlYW0KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCNjbG9zZSgpIj48Qj5jbG9zZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPkNsb3NlIHRoZSBzdHJlYW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjY2xvc2UoKSI+PEI+Y2xvc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5SZXR1cm4gdGhpcyB3cmFwcGVkIENvbm5lY3Rpb24gdG8gb3VyIGRhdGEgc291cmNlIGNvbm5lY3Rpb24gcG9vbC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNjbG9zZSgpIj48Qj5jbG9zZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPkNsb3NlIGFsbCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRoaXMgZGF0YSBzb3VyY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjY2xvc2VkIj48Qj5jbG9zZWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5UaGUgY2xvc2VkIGZsYWcgZm9yIHRoaXMgd3JhcHBlZCBjb25uZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI2Nsb3NlZCI+PEI+Y2xvc2VkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+SGFzIHRoaXMgZGF0YSBzb3VyY2UgYmVlbiBjbG9zZWQ/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwjY29sbGVjdGlvbiI+PEI+Y29sbGVjdGlvbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPlRoZSBjb2xsZWN0aW9uIG92ZXIgd2hpY2ggd2Ugd2lsbCBiZSBpdGVyYXRpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI2NvbGxlY3Rpb24iPjxCPmNvbGxlY3Rpb248L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlRoZSBjb2xsZWN0aW9uIG92ZXIgd2hpY2ggd2Ugd2lsbCBiZSBpdGVyYXRpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwjY29sbGVjdGlvbiI+PEI+Y29sbGVjdGlvbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1NpemVUYWcuaHRtbCI+U2l6ZVRhZzwvQT4KPEREPlRoZSBhY3R1YWwgY29sbGVjdGlvbiB0byBiZSBjb3VudGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sI2NvbGxlY3Rpb24iPjxCPmNvbGxlY3Rpb248L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgY29sbGVjdGlvbiBjb250YWluaW5nIGJlYW5zIHRoYXQgaGF2ZSBwcm9wZXJ0aWVzIHRvCiBwcm92aWRlIGJvdGggdGhlIHZhbHVlcyBhbmQgdGhlIGxhYmVscyAoaWRlbnRpZmllZCBieSB0aGUKIDxjb2RlPnByb3BlcnR5PC9jb2RlPiBhbmQgPGNvZGU+bGFiZWxQcm9wZXJ0eTwvY29kZT4gYXR0cmlidXRlcykuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI2NvbGxlY3Rpb24iPjxCPmNvbGxlY3Rpb248L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlRoZSBjb2xsZWN0aW9uIG92ZXIgd2hpY2ggd2Ugd2lsbCBiZSBpdGVyYXRpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwjY29scyI+PEI+Y29sczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwiPkJhc2VJbnB1dFRhZzwvQT4KPEREPlRoZSBudW1iZXIgb2YgY2hhcmFjdGVyIGNvbHVtbnMgZm9yIHRoaXMgZmllbGQsIG9yIG5lZ2F0aXZlCiBmb3Igbm8gbGltaXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCNjb2xzIj48Qj5jb2xzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwiPkJhc2VJbnB1dFRhZzwvQT4KPEREPlRoZSBudW1iZXIgb2YgY2hhcmFjdGVyIGNvbHVtbnMgZm9yIHRoaXMgZmllbGQsIG9yIG5lZ2F0aXZlCiBmb3Igbm8gbGltaXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjY29tbWl0KCkiPjxCPmNvbW1pdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sIj5HZW5lcmljQ29ubmVjdGlvbjwvQT4KPEREPk1ha2UgYWxsIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgcHJldmlvdXMgY29tbWl0IG9yIHJvbGxiYWNrCiBwZXJtYW5lbnQsIGFuZCByZWxlYXNlcyBhbnkgZGF0YWJhc2UgbG9ja3MgY3VycmVudGx5IGhlbGQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjY29tcGFyYXRvcigpIj48Qj5jb21wYXJhdG9yKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwiPkZhc3RUcmVlTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSBjb21wYXJhdG9yIHVzZWQgdG8gb3JkZXIgdGhpcyBtYXAsIG9yIDxjb2RlPm51bGw8L2NvZGU+CiBpZiB0aGlzIG1hcCB1c2VzIGl0cyBrZXlzJyBuYXR1cmFsIG9yZGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbXBhcmVUYWdCYXNlLmh0bWwiPjxCPkNvbXBhcmVUYWdCYXNlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbXBhcmVUYWdCYXNlLmh0bWwiPkNvbXBhcmVUYWdCYXNlPC9BPi48REQ+QWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgY29tcGFyaXNvbiB0YWdzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29tcGFyZVRhZ0Jhc2UuaHRtbCNDb21wYXJlVGFnQmFzZSgpIj48Qj5Db21wYXJlVGFnQmFzZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29tcGFyZVRhZ0Jhc2UuaHRtbCI+Q29tcGFyZVRhZ0Jhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwjY29tcHV0ZVBhcmFtZXRlcnMoamF2YXguc2VydmxldC5qc3AuUGFnZUNvbnRleHQsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGJvb2xlYW4pIj48Qj5jb21wdXRlUGFyYW1ldGVycyhQYWdlQ29udGV4dCwgU3RyaW5nLCBTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBib29sZWFuKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sIj5SZXF1ZXN0VXRpbHM8L0E+CjxERD5Db21wdXRlIGEgc2V0IG9mIHF1ZXJ5IHBhcmFtZXRlcnMgdGhhdCB3aWxsIGJlIGR5bmFtaWNhbGx5IGFkZGVkIHRvCiBhIGdlbmVyYXRlZCBVUkwuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sI2NvbXB1dGVVUkwoamF2YXguc2VydmxldC5qc3AuUGFnZUNvbnRleHQsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEudXRpbC5NYXAsIGphdmEubGFuZy5TdHJpbmcsIGJvb2xlYW4pIj48Qj5jb21wdXRlVVJMKFBhZ2VDb250ZXh0LCBTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBNYXAsIFN0cmluZywgYm9vbGVhbik8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXF1ZXN0VXRpbHMuaHRtbCI+UmVxdWVzdFV0aWxzPC9BPgo8REQ+Q29tcHV0ZSBhIGh5cGVybGluayBVUkwgYmFzZWQgb24gdGhlIDxjb2RlPmZvcndhcmQ8L2NvZGU+LAogPGNvZGU+aHJlZjwvY29kZT4sIG9yIDxjb2RlPnBhZ2U8L2NvZGU+IHBhcmFtZXRlciB0aGF0IGlzIG5vdCBudWxsLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sI2NvbmRpdGlvbigpIj48Qj5jb25kaXRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sIj5Db25kaXRpb25hbFRhZ0Jhc2U8L0E+CjxERD5FdmFsdWF0ZSB0aGUgY29uZGl0aW9uIHRoYXQgaXMgYmVpbmcgdGVzdGVkIGJ5IHRoaXMgcGFydGljdWxhciB0YWcsCiBhbmQgcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBuZXN0ZWQgYm9keSBjb250ZW50IG9mIHRoaXMgdGFnCiBzaG91bGQgYmUgZXZhbHVhdGVkLCBvciA8Y29kZT5mYWxzZTwvY29kZT4gaWYgaXQgc2hvdWxkIGJlIHNraXBwZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUHJlc2VudFRhZy5odG1sI2NvbmRpdGlvbigpIj48Qj5jb25kaXRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1ByZXNlbnRUYWcuaHRtbCI+UHJlc2VudFRhZzwvQT4KPEREPkV2YWx1YXRlIHRoZSBjb25kaXRpb24gdGhhdCBpcyBiZWluZyB0ZXN0ZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIHRhZywKIGFuZCByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcKIHNob3VsZCBiZSBldmFsdWF0ZWQsIG9yIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiBpdCBzaG91bGQgYmUgc2tpcHBlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9NYXRjaFRhZy5odG1sI2NvbmRpdGlvbigpIj48Qj5jb25kaXRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL01hdGNoVGFnLmh0bWwiPk1hdGNoVGFnPC9BPgo8REQ+RXZhbHVhdGUgdGhlIGNvbmRpdGlvbiB0aGF0IGlzIGJlaW5nIHRlc3RlZCBieSB0aGlzIHBhcnRpY3VsYXIgdGFnLAogYW5kIHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZwogc2hvdWxkIGJlIGV2YWx1YXRlZCwgb3IgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIGl0IHNob3VsZCBiZSBza2lwcGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL05vdE1hdGNoVGFnLmh0bWwjY29uZGl0aW9uKCkiPjxCPmNvbmRpdGlvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTm90TWF0Y2hUYWcuaHRtbCI+Tm90TWF0Y2hUYWc8L0E+CjxERD5FdmFsdWF0ZSB0aGUgY29uZGl0aW9uIHRoYXQgaXMgYmVpbmcgdGVzdGVkIGJ5IHRoaXMgcGFydGljdWxhciB0YWcsCiBhbmQgcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBuZXN0ZWQgYm9keSBjb250ZW50IG9mIHRoaXMgdGFnCiBzaG91bGQgYmUgZXZhbHVhdGVkLCBvciA8Y29kZT5mYWxzZTwvY29kZT4gaWYgaXQgc2hvdWxkIGJlIHNraXBwZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29tcGFyZVRhZ0Jhc2UuaHRtbCNjb25kaXRpb24oKSI+PEI+Y29uZGl0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db21wYXJlVGFnQmFzZS5odG1sIj5Db21wYXJlVGFnQmFzZTwvQT4KPEREPkV2YWx1YXRlIHRoZSBjb25kaXRpb24gdGhhdCBpcyBiZWluZyB0ZXN0ZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIHRhZywKIGFuZCByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcKIHNob3VsZCBiZSBldmFsdWF0ZWQsIG9yIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiBpdCBzaG91bGQgYmUgc2tpcHBlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9FcXVhbFRhZy5odG1sI2NvbmRpdGlvbigpIj48Qj5jb25kaXRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0VxdWFsVGFnLmh0bWwiPkVxdWFsVGFnPC9BPgo8REQ+RXZhbHVhdGUgdGhlIGNvbmRpdGlvbiB0aGF0IGlzIGJlaW5nIHRlc3RlZCBieSB0aGlzIHBhcnRpY3VsYXIgdGFnLAogYW5kIHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZwogc2hvdWxkIGJlIGV2YWx1YXRlZCwgb3IgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIGl0IHNob3VsZCBiZSBza2lwcGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0dyZWF0ZXJFcXVhbFRhZy5odG1sI2NvbmRpdGlvbigpIj48Qj5jb25kaXRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0dyZWF0ZXJFcXVhbFRhZy5odG1sIj5HcmVhdGVyRXF1YWxUYWc8L0E+CjxERD5FdmFsdWF0ZSB0aGUgY29uZGl0aW9uIHRoYXQgaXMgYmVpbmcgdGVzdGVkIGJ5IHRoaXMgcGFydGljdWxhciB0YWcsCiBhbmQgcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBuZXN0ZWQgYm9keSBjb250ZW50IG9mIHRoaXMgdGFnCiBzaG91bGQgYmUgZXZhbHVhdGVkLCBvciA8Y29kZT5mYWxzZTwvY29kZT4gaWYgaXQgc2hvdWxkIGJlIHNraXBwZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTm90RXF1YWxUYWcuaHRtbCNjb25kaXRpb24oKSI+PEI+Y29uZGl0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Ob3RFcXVhbFRhZy5odG1sIj5Ob3RFcXVhbFRhZzwvQT4KPEREPkV2YWx1YXRlIHRoZSBjb25kaXRpb24gdGhhdCBpcyBiZWluZyB0ZXN0ZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIHRhZywKIGFuZCByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcKIHNob3VsZCBiZSBldmFsdWF0ZWQsIG9yIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiBpdCBzaG91bGQgYmUgc2tpcHBlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Ob3RQcmVzZW50VGFnLmh0bWwjY29uZGl0aW9uKCkiPjxCPmNvbmRpdGlvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTm90UHJlc2VudFRhZy5odG1sIj5Ob3RQcmVzZW50VGFnPC9BPgo8REQ+RXZhbHVhdGUgdGhlIGNvbmRpdGlvbiB0aGF0IGlzIGJlaW5nIHRlc3RlZCBieSB0aGlzIHBhcnRpY3VsYXIgdGFnLAogYW5kIHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZwogc2hvdWxkIGJlIGV2YWx1YXRlZCwgb3IgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIGl0IHNob3VsZCBiZSBza2lwcGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0xlc3NFcXVhbFRhZy5odG1sI2NvbmRpdGlvbigpIj48Qj5jb25kaXRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0xlc3NFcXVhbFRhZy5odG1sIj5MZXNzRXF1YWxUYWc8L0E+CjxERD5FdmFsdWF0ZSB0aGUgY29uZGl0aW9uIHRoYXQgaXMgYmVpbmcgdGVzdGVkIGJ5IHRoaXMgcGFydGljdWxhciB0YWcsCiBhbmQgcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBuZXN0ZWQgYm9keSBjb250ZW50IG9mIHRoaXMgdGFnCiBzaG91bGQgYmUgZXZhbHVhdGVkLCBvciA8Y29kZT5mYWxzZTwvY29kZT4gaWYgaXQgc2hvdWxkIGJlIHNraXBwZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvR3JlYXRlclRoYW5UYWcuaHRtbCNjb25kaXRpb24oKSI+PEI+Y29uZGl0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9HcmVhdGVyVGhhblRhZy5odG1sIj5HcmVhdGVyVGhhblRhZzwvQT4KPEREPkV2YWx1YXRlIHRoZSBjb25kaXRpb24gdGhhdCBpcyBiZWluZyB0ZXN0ZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIHRhZywKIGFuZCByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcKIHNob3VsZCBiZSBldmFsdWF0ZWQsIG9yIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiBpdCBzaG91bGQgYmUgc2tpcHBlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9MZXNzVGhhblRhZy5odG1sI2NvbmRpdGlvbigpIj48Qj5jb25kaXRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0xlc3NUaGFuVGFnLmh0bWwiPkxlc3NUaGFuVGFnPC9BPgo8REQ+RXZhbHVhdGUgdGhlIGNvbmRpdGlvbiB0aGF0IGlzIGJlaW5nIHRlc3RlZCBieSB0aGlzIHBhcnRpY3VsYXIgdGFnLAogYW5kIHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZwogc2hvdWxkIGJlIGV2YWx1YXRlZCwgb3IgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIGl0IHNob3VsZCBiZSBza2lwcGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1ByZXNlbnRUYWcuaHRtbCNjb25kaXRpb24oYm9vbGVhbikiPjxCPmNvbmRpdGlvbihib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1ByZXNlbnRUYWcuaHRtbCI+UHJlc2VudFRhZzwvQT4KPEREPkV2YWx1YXRlIHRoZSBjb25kaXRpb24gdGhhdCBpcyBiZWluZyB0ZXN0ZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIHRhZywKIGFuZCByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcKIHNob3VsZCBiZSBldmFsdWF0ZWQsIG9yIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiBpdCBzaG91bGQgYmUgc2tpcHBlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9NYXRjaFRhZy5odG1sI2NvbmRpdGlvbihib29sZWFuKSI+PEI+Y29uZGl0aW9uKGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTWF0Y2hUYWcuaHRtbCI+TWF0Y2hUYWc8L0E+CjxERD5FdmFsdWF0ZSB0aGUgY29uZGl0aW9uIHRoYXQgaXMgYmVpbmcgdGVzdGVkIGJ5IHRoaXMgcGFydGljdWxhciB0YWcsCiBhbmQgcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBuZXN0ZWQgYm9keSBjb250ZW50IG9mIHRoaXMgdGFnCiBzaG91bGQgYmUgZXZhbHVhdGVkLCBvciA8Y29kZT5mYWxzZTwvY29kZT4gaWYgaXQgc2hvdWxkIGJlIHNraXBwZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29tcGFyZVRhZ0Jhc2UuaHRtbCNjb25kaXRpb24oaW50LCBpbnQpIj48Qj5jb25kaXRpb24oaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29tcGFyZVRhZ0Jhc2UuaHRtbCI+Q29tcGFyZVRhZ0Jhc2U8L0E+CjxERD5FdmFsdWF0ZSB0aGUgY29uZGl0aW9uIHRoYXQgaXMgYmVpbmcgdGVzdGVkIGJ5IHRoaXMgcGFydGljdWxhciB0YWcsCiBhbmQgcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBuZXN0ZWQgYm9keSBjb250ZW50IG9mIHRoaXMgdGFnCiBzaG91bGQgYmUgZXZhbHVhdGVkLCBvciA8Y29kZT5mYWxzZTwvY29kZT4gaWYgaXQgc2hvdWxkIGJlIHNraXBwZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPjxCPkNvbmRpdGlvbmFsVGFnQmFzZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCI+Q29uZGl0aW9uYWxUYWdCYXNlPC9BPi48REQ+QWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdGhlIHZhcmlvdXMgY29uZGl0aW9uYWwgZXZhbHVhdGlvbiB0YWdzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjQ29uZGl0aW9uYWxUYWdCYXNlKCkiPjxCPkNvbmRpdGlvbmFsVGFnQmFzZSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPkNvbmRpdGlvbmFsVGFnQmFzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNjb25maWciPjxCPmNvbmZpZzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+VGhlIGNvbnRleHQtcmVsYXRpdmUgcGF0aCB0byBvdXIgY29uZmlndXJhdGlvbiByZXNvdXJjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sI2NvbmZpZyI+PEI+Y29uZmlnPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPlRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB1c2VkIHRvIGluaXRpYWxpemUgdGhpcyBNZXNzYWdlUmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI2Nvbm4iPjxCPmNvbm48L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5UaGUgQ29ubmVjdGlvbiB0aGF0IGlzIGJlaW5nIHdyYXBwZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjY29ubmVjdGlvbnMiPjxCPmNvbm5lY3Rpb25zPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+VGhlIGxpc3Qgb2YgQ29ubmVjdGlvbnMgKHdyYXBwZWQgaW4gb3VyIGFzc29jaWF0ZWQgd3JhcHBlciBjbGFzcykgdGhhdAogaGF2ZSBiZWVuIGNyZWF0ZWQgYnV0IGFyZSBub3QgY3VycmVudGx5IGluIHVzZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL011bHRpYm94VGFnLmh0bWwjY29uc3RhbnQiPjxCPmNvbnN0YW50PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCI+TXVsdGlib3hUYWc8L0E+CjxERD5UaGUgY29uc3RhbnQgU3RyaW5nIHZhbHVlIHRvIGJlIHJldHVybmVkIHdoZW4gdGhpcyBjaGVja2JveCBpcwogc2VsZWN0ZWQgYW5kIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Db25zdGFudHMuaHRtbCI+PEI+Q29uc3RhbnRzPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NvbnN0YW50cy5odG1sIj5Db25zdGFudHM8L0E+LjxERD5NYW5pZmVzdCBjb25zdGFudHMgZm9yIHRoaXMgcGFja2FnZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ29uc3RhbnRzLmh0bWwiPjxCPkNvbnN0YW50czwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ29uc3RhbnRzLmh0bWwiPkNvbnN0YW50czwvQT4uPEREPk1hbmlmZXN0IGNvbnN0YW50cyBmb3IgdGhpcyBwYWNrYWdlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ29uc3RhbnRzLmh0bWwjQ29uc3RhbnRzKCkiPjxCPkNvbnN0YW50cygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ29uc3RhbnRzLmh0bWwiPkNvbnN0YW50czwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ29uc3RhbnRzLmh0bWwjQ29uc3RhbnRzKCkiPjxCPkNvbnN0YW50cygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NvbnN0YW50cy5odG1sIj5Db25zdGFudHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sI2NvbnRhaW5zKGphdmEubGFuZy5PYmplY3QpIj48Qj5jb250YWlucyhPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwiPkZhc3RBcnJheUxpc3Q8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhpcyBsaXN0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgZWxlbWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sI2NvbnRhaW5zQWxsKGphdmEudXRpbC5Db2xsZWN0aW9uKSI+PEI+Y29udGFpbnNBbGwoQ29sbGVjdGlvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIGxpc3QgY29udGFpbnMgYWxsIG9mIHRoZSBlbGVtZW50cwogaW4gdGhlIHNwZWNpZmllZCBDb2xsZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sI2NvbnRhaW5zS2V5KGphdmEubGFuZy5PYmplY3QpIj48Qj5jb250YWluc0tleShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sIj5GYXN0SGFzaE1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIG1hcCBjb250YWlucyBhIG1hcHBpbmcgZm9yIHRoZQogc3BlY2lmaWVkIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCNjb250YWluc0tleShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+Y29udGFpbnNLZXkoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCI+RmFzdFRyZWVNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhpcyBtYXAgY29udGFpbnMgYSBtYXBwaW5nIGZvciB0aGUKIHNwZWNpZmllZCBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwjY29udGFpbnNWYWx1ZShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+Y29udGFpbnNWYWx1ZShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sIj5GYXN0SGFzaE1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIG1hcCBjb250YWlucyBvbmUgb3IgbW9yZSBrZXlzIG1hcHBpbmcKIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjY29udGFpbnNWYWx1ZShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+Y29udGFpbnNWYWx1ZShPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIG1hcCBjb250YWlucyBvbmUgb3IgbW9yZSBrZXlzIG1hcHBpbmcKIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2NvbnRlbnQiPjxCPmNvbnRlbnQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBhbmQgY2hhcmFjdGVyIGVuY29kaW5nIHRvIGJlIHNldCBvbiBlYWNoCiByZXNwb25zZSAobWF5IGJlIG92ZXJyaWRkZW4gYnkgZm9yd2FyZGVkLXRvIHJlc291cmNlcykuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwjY29udGVudCI+PEI+Y29udGVudDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwiPlB1dFRhZzwvQT4KPEREPlRoZSBjb250ZW50J3MgVVJJIChvciB0ZXh0KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnQuaHRtbCNjb250ZW50Ij48Qj5jb250ZW50PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL3V0aWwvQ29udGVudC5odG1sIj5Db250ZW50PC9BPgo8REQ+VGVtcGxhdGVzIHJlZ2FyZCB0aGlzIGFzIGNvbnRlbnQgdG8gYmUgZWl0aGVyIGluY2x1ZGVkIG9yIAogIHByaW50ZWQgZGlyZWN0bHkuPGJyPiBUaGlzIGlzIGEgYmxhbmsgZmluYWwgdGhhdCBpcwogIHNldCBhdCBjb25zdHJ1Y3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50Lmh0bWwiPjxCPkNvbnRlbnQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnQuaHRtbCI+Q29udGVudDwvQT4uPEREPkEgdXRpbGl0eSBmaWxlIGZvciB0ZW1wbGF0ZXMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnQuaHRtbCNDb250ZW50KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5Db250ZW50KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50Lmh0bWwiPkNvbnRlbnQ8L0E+CjxERD5UaGUgb25seSBjb25zdHJ1Y3Rvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwjY29udGVudExlbmd0aCI+PEI+Y29udGVudExlbmd0aDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sIj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtPC9BPgo8REQ+VGhlIGNvbnRlbnQgbGVuZ3RoIG9mIHRoZSBtdWx0aXBhcnQgZGF0YQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwjY29udGVudExlbmd0aCI+PEI+Y29udGVudExlbmd0aDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCI+TXVsdGlwYXJ0SXRlcmF0b3I8L0E+CjxERD5UaGUgY29udGVudCBsZW5ndGggb2YgdGhpcyByZXF1ZXN0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQ29udGVudExlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uLmh0bWwiPjxCPkNvbnRlbnRMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbjwvQj48L0E+IC0gZXhjZXB0aW9uIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQ29udGVudExlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uLmh0bWwiPkNvbnRlbnRMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbjwvQT4uPEREPlRoaXMgZXhjZXB0aW9uIGlzIHRocm93biB3aGVuIG11bHRpcGFydCBwb3N0IGRhdGEgZXhjZWVkcyB0aGUgdmFsdWUKIGdpdmVuIGJ5IHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXI8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0NvbnRlbnRMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbi5odG1sI0NvbnRlbnRMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbigpIj48Qj5Db250ZW50TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb24oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0NvbnRlbnRMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbi5odG1sIj5Db250ZW50TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9Db250ZW50TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb24uaHRtbCNDb250ZW50TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb24obG9uZykiPjxCPkNvbnRlbnRMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbihsb25nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0NvbnRlbnRMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbi5odG1sIj5Db250ZW50TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwjY29udGVudExlbmd0aE1ldCI+PEI+Y29udGVudExlbmd0aE1ldDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sIj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtPC9BPgo8REQ+V2hldGhlciBvciBub3QgYnl0ZXMgdXAgdG8gdGhlIENvbnRlbnQtTGVuZ3RoIGhhdmUgYmVlbiByZWFkCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sI2NvbnRlbnRMZW5ndGhNZXQoKSI+PEI+Y29udGVudExlbmd0aE1ldCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sIj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50TWFwLmh0bWwiPjxCPkNvbnRlbnRNYXA8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnRNYXAuaHRtbCI+Q29udGVudE1hcDwvQT4uPEREPkEgc2ltcGxlIGZhY2FkZSBmb3IgYSBoYXNoIG1hcC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL3V0aWwvQ29udGVudE1hcC5odG1sI0NvbnRlbnRNYXAoKSI+PEI+Q29udGVudE1hcCgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnRNYXAuaHRtbCI+Q29udGVudE1hcDwvQT4KPEREPkV4cGxpY2l0bHkgZGVjbGFyZSBhIGRvLW5vdGhpbmcsIG5vLWFyZyBjb25zdHJ1Y3Rvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnRNYXBTdGFjay5odG1sIj48Qj5Db250ZW50TWFwU3RhY2s8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnRNYXBTdGFjay5odG1sIj5Db250ZW50TWFwU3RhY2s8L0E+LjxERD5UaGlzIGNsYXNzIHByb3ZpZGVzIGFjY2VzcyB0byBhIHN0YWNrIG9mIENvbnRlbnRNYXBzIGluIHJlcXVlc3Qgc2NvcGUKIHRocm91Z2ggc3RhdGljIG1ldGhvZHMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnRNYXBTdGFjay5odG1sI0NvbnRlbnRNYXBTdGFjaygpIj48Qj5Db250ZW50TWFwU3RhY2soKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50TWFwU3RhY2suaHRtbCI+Q29udGVudE1hcFN0YWNrPC9BPgo8REQ+Tm8gaW5zdGFudGlhdGlvbnMgb2YgdGhpcyBjbGFzcyBhcmUgYWxsb3dlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sI2NvbnRlbnRSZWFkIj48Qj5jb250ZW50UmVhZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCI+TXVsdGlwYXJ0SXRlcmF0b3I8L0E+CjxERD5XaGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgc3RyZWFtIGlzIGZpbmlzaGVkCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza0ZpbGUuaHRtbCNjb250ZW50VHlwZSI+PEI+Y29udGVudFR5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tGaWxlLmh0bWwiPkRpc2tGaWxlPC9BPgo8REQ+VGhlIGNvbnRlbnQgdHlwZSBvZiB0aGUgZmlsZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCNjb250ZW50VHlwZSI+PEI+Y29udGVudFR5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPlRoZSBjb250ZW50IHR5cGUgb2YgdGhpcyBlbGVtZW50CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjY29udGV4dCI+PEI+Y29udGV4dDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPlRoZSBzZXJ2bGV0IGNvbnRleHQgd2l0aCB3aGljaCB3ZSBhcmUgYXNzb2NpYXRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwjY29udmVydChqYXZhLmxhbmcuT2JqZWN0KSI+PEI+Y29udmVydChPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwiPkNvbnZlcnRVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvbnZlcnQgdGhlIHNwZWNpZmllZCB2YWx1ZSBpbnRvIGEgU3RyaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNjb252ZXJ0KGphdmEubGFuZy5TdHJpbmdbXSwgamF2YS5sYW5nLkNsYXNzKSI+PEI+Y29udmVydChTdHJpbmdbXSwgQ2xhc3MpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwiPkNvbnZlcnRVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvbnZlcnQgYW4gYXJyYXkgb2Ygc3BlY2lmaWVkIHZhbHVlcyB0byBhbiBhcnJheSBvZiBvYmplY3RzIG9mIHRoZQogc3BlY2lmaWVkIGNsYXNzIChpZiBwb3NzaWJsZSkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2NvbnZlcnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkNsYXNzKSI+PEI+Y29udmVydChTdHJpbmcsIENsYXNzKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb252ZXJ0IHRoZSBzcGVjaWZpZWQgdmFsdWUgdG8gYW4gb2JqZWN0IG9mIHRoZSBzcGVjaWZpZWQgY2xhc3MgKGlmCiBwb3NzaWJsZSkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2NvbnZlcnRCb29sZWFuKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5Cb29sZWFuKSI+PEI+Y29udmVydEJvb2xlYW4oU3RyaW5nLCBCb29sZWFuKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb252ZXJ0IGEgU3RyaW5nIHZhbHVlIHRvIGEgY29ycmVzcG9uZGluZyBCb29sZWFuIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNjb252ZXJ0Qnl0ZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQnl0ZSkiPjxCPmNvbnZlcnRCeXRlKFN0cmluZywgQnl0ZSk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29udmVydCBhIFN0cmluZyB2YWx1ZSB0byBhIGNvcnJlc3BvbmRpbmcgQnl0ZSB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwjY29udmVydENoYXJhY3RlcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2hhcmFjdGVyKSI+PEI+Y29udmVydENoYXJhY3RlcihTdHJpbmcsIENoYXJhY3Rlcik8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29udmVydCBhIFN0cmluZyB2YWx1ZSB0byBhIGNvcnJlc3BvbmRpbmcgQ2hhcmFjdGVyIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNjb252ZXJ0RG91YmxlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5Eb3VibGUpIj48Qj5jb252ZXJ0RG91YmxlKFN0cmluZywgRG91YmxlKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb252ZXJ0IGEgU3RyaW5nIHZhbHVlIHRvIGEgY29ycmVzcG9uZGluZyBEb3VibGUgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2NvbnZlcnRGbG9hdChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuRmxvYXQpIj48Qj5jb252ZXJ0RmxvYXQoU3RyaW5nLCBGbG9hdCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29udmVydCBhIFN0cmluZyB2YWx1ZSB0byBhIGNvcnJlc3BvbmRpbmcgRmxvYXQgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2NvbnZlcnRJbnRlZ2VyKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5JbnRlZ2VyKSI+PEI+Y29udmVydEludGVnZXIoU3RyaW5nLCBJbnRlZ2VyKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb252ZXJ0IGEgU3RyaW5nIHZhbHVlIHRvIGEgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNjb252ZXJ0TG9uZyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuTG9uZykiPjxCPmNvbnZlcnRMb25nKFN0cmluZywgTG9uZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29udmVydCBhIFN0cmluZyB2YWx1ZSB0byBhIGNvcnJlc3BvbmRpbmcgTG9uZyB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwjY29udmVydFNob3J0KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TaG9ydCkiPjxCPmNvbnZlcnRTaG9ydChTdHJpbmcsIFNob3J0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb252ZXJ0IGEgU3RyaW5nIHZhbHVlIHRvIGEgY29ycmVzcG9uZGluZyBTaG9ydCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwiPjxCPkNvbnZlcnRVdGlsczwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+LjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BdCBzb21lIHBvaW50IGFmdGVyIFN0cnV0cyAxLjAgZmluYWwsIHdpbGwgYmUgcmVwbGFjZWQgYnkKICBhbiBlcXVpdmFsZW50IGNsYXNzIGluIHRoZSBKYWthcnRhIENvbW1vbnMgQmVhbnV0aWxzIHBhY2thZ2UuPC9JPjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI0NvbnZlcnRVdGlscygpIj48Qj5Db252ZXJ0VXRpbHMoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwiPkNvbnZlcnRVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOyZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sI2Nvb2tpZSI+PEI+Y29va2llPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCI+Q29uZGl0aW9uYWxUYWdCYXNlPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGNvb2tpZSB0byBiZSB1c2VkIGFzIGEgdmFyaWFibGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCI+PEI+Q29va2llVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCI+Q29va2llVGFnPC9BPi48REQ+RGVmaW5lIGEgc2NyaXB0aW5nIHZhcmlhYmxlIGJhc2VkIG9uIHRoZSB2YWx1ZShzKSBvZiB0aGUgc3BlY2lmaWVkCiBjb29raWUgcmVjZWl2ZWQgd2l0aCB0aGlzIHJlcXVlc3QuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sI0Nvb2tpZVRhZygpIj48Qj5Db29raWVUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCI+Q29va2llVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUZWkuaHRtbCI+PEI+Q29va2llVGVpPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUZWkuaHRtbCI+Q29va2llVGVpPC9BPi48REQ+SW1wbGVtZW50YXRpb24gb2YgPGNvZGU+VGFnRXh0cmFJbmZvPC9jb2RlPiBmb3IgdGhlIDxiPmNvb2tpZTwvYj4KIHRhZywgaWRlbnRpZnlpbmcgdGhlIHNjcmlwdGluZyBvYmplY3QocykgdG8gYmUgbWFkZSB2aXNpYmxlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUZWkuaHRtbCNDb29raWVUZWkoKSI+PEI+Q29va2llVGVpKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGVpLmh0bWwiPkNvb2tpZVRlaTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwjY29weVByb3BlcnRpZXMoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmNvcHlQcm9wZXJ0aWVzKE9iamVjdCwgT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCI+UHJvcGVydHlVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvcHkgcHJvcGVydHkgdmFsdWVzIGZyb20gdGhlICJvcmlnaW4iIGJlYW4gdG8gdGhlICJkZXN0aW5hdGlvbiIgYmVhbgogZm9yIGFsbCBjYXNlcyB3aGVyZSB0aGUgcHJvcGVydHkgbmFtZXMgYXJlIHRoZSBzYW1lIChldmVuIHRob3VnaCB0aGUKIGFjdHVhbCBnZXR0ZXIgYW5kIHNldHRlciBtZXRob2RzIG1pZ2h0IGhhdmUgYmVlbiBjdXN0b21pemVkIHZpYQogPGNvZGU+QmVhbkluZm88L2NvZGU+IGNsYXNzZXMpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI2NyZWF0ZUNvbm5lY3Rpb24oKSI+PEI+Y3JlYXRlQ29ubmVjdGlvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPkNyZWF0ZSwgY29uZmlndXJlLCBhbmQgcmV0dXJuIGEgbmV3IEpEQkMgQ29ubmVjdGlvbiB0aGF0IGhhcyBiZWVuCiB3cmFwcGVkIGluIG91ciBjb3JyZXNwb25kaW5nIHdyYXBwZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwjY3JlYXRlRmFjdG9yeSgpIj48Qj5jcmVhdGVGYWN0b3J5KCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeS5odG1sIj5NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeTwvQT4KPEREPkNyZWF0ZSBhbmQgcmV0dXJuIGEgPGNvZGU+TWVzc2FnZVJlc291cmNlc0ZhY3Rvcnk8L2NvZGU+IGluc3RhbmNlIG9mIHRoZQogYXBwcm9wcmlhdGUgY2xhc3MsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBjdXN0b21pemVkCiA8Y29kZT5NZXNzYWdlUmVzb3VyY2VzPC9jb2RlPiBpbnN0YW5jZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI2NyZWF0ZUZvcm1JbnN0YW5jZSgpIj48Qj5jcmVhdGVGb3JtSW5zdGFuY2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPkNyZWF0aW9uIG9mIEFjdGlvbkZvcm0gaW5zdGFuY2VzIGlzIG5vdyB0aGUgcmVzcG9uc2liaWxpdHkKICBvZiB0aGUgY29udHJvbGxlciBzZXJ2bGV0PC9JPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwjY3JlYXRlTG9jYWxGaWxlKCkiPjxCPmNyZWF0ZUxvY2FsRmlsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCI+TXVsdGlwYXJ0SXRlcmF0b3I8L0E+CjxERD5DcmVhdGVzIGEgZmlsZSBvbiBkaXNrIGZyb20gdGhlIGN1cnJlbnQgbXVsaXRwYXJ0IGVsZW1lbnQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlc0ZhY3RvcnkuaHRtbCNjcmVhdGVSZXNvdXJjZXMoamF2YS5sYW5nLlN0cmluZykiPjxCPmNyZWF0ZVJlc291cmNlcyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeS5odG1sIj5NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeTwvQT4KPEREPkNyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3bHkgaW5zdGFuc2lhdGVkIDxjb2RlPk1lc3NhZ2VSZXNvdXJjZXM8L2NvZGU+Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwjY3JlYXRlUmVzb3VyY2VzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5jcmVhdGVSZXNvdXJjZXMoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzRmFjdG9yeS5odG1sIj5Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5PC9BPgo8REQ+Q3JlYXRlIGFuZCByZXR1cm4gYSBuZXdseSBpbnN0YW5zaWF0ZWQgPGNvZGU+TWVzc2FnZVJlc291cmNlczwvY29kZT4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjY3JlYXRlU3RhdGVtZW50KCkiPjxCPmNyZWF0ZVN0YXRlbWVudCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sIj5HZW5lcmljQ29ubmVjdGlvbjwvQT4KPEREPkNyZWF0ZSBhIDxjb2RlPlN0YXRlbWVudDwvY29kZT4gZm9yIHNlbmRpbmcgU1FMIHN0YXRlbWVudHMgdG8gdGhlCiBkYXRhYmFzZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCNjcmVhdGVTdGF0ZW1lbnQoaW50LCBpbnQpIj48Qj5jcmVhdGVTdGF0ZW1lbnQoaW50LCBpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sIj5HZW5lcmljQ29ubmVjdGlvbjwvQT4KPEREPihKREJDIDIuMCkgQ3JlYXRlIGEgU3RhdGVtZW50IHRoYXQgd2lsbCBjcmVhdGUgYSBSZXN1bHRTZXQgb2YgdGhlCiBzcGVjaWZpZWQgdHlwZSBhbmQgY29uY3VycmVuY3kuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9IdG1sVGFnLmh0bWwjY3VycmVudExvY2FsZSgpIj48Qj5jdXJyZW50TG9jYWxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSHRtbFRhZy5odG1sIj5IdG1sVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBjdXJyZW50IExvY2FsZSBmb3IgdGhpcyByZXF1ZXN0LCBjcmVhdGluZyBhIG5ldyBvbmUgaWYKIG5lY2Vzc2FyeS4KPC9ETD4KPEhSPgo8QSBOQU1FPSJfRF8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+RDwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sI2RhdGEiPjxCPmRhdGE8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlRoaXMgc2hvdWxkIG5ldmVyIGJlIHVzZWQuPC9JPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI0RBVEFfU09VUkNFX0tFWSI+PEI+REFUQV9TT1VSQ0VfS0VZPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwiPkFjdGlvbjwvQT4KPEREPlRoZSBjb250ZXh0IGF0dHJpYnV0ZXMga2V5IHVuZGVyIHdoaWNoIG91ciA8c3Ryb25nPmRlZmF1bHQ8L3N0cm9uZz4KIGNvbmZpZ3VyZWQgZGF0YSBzb3VyY2UgKHdoaWNoIG11c3QgaW1wbGVtZW50CiA8Y29kZT5qYXZheC5zcWwuRGF0YVNvdXJjZTwvY29kZT4pIGlzIHN0b3JlZCwKIGlmIG9uZSBpcyBjb25maWd1cmVkIGZvciB0aGlzIGFwcGxpY2F0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNkYXRhU291cmNlcyI+PEI+ZGF0YVNvdXJjZXM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSBKREJDIGRhdGEgc291cmNlcyB0aGF0IGhhcyBiZWVuIGNvbmZpZ3VyZWQgZm9yIHRoaXMgYXBwbGljYXRpb24sCiBpZiBhbnksIGtleWVkIGJ5IHRoZSBzZXJ2bGV0IGNvbnRleHQgYXR0cmlidXRlIHVuZGVyIHdoaWNoIHRoZXkgYXJlCiBzdG9yZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2RlYnVnIj48Qj5kZWJ1ZzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+VGhlIGRlYnVnZ2luZyBkZXRhaWwgbGV2ZWwgZm9yIHRoaXMgc2VydmxldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjZGVidWciPjxCPmRlYnVnPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5UaGUgZGVidWdnaW5nIGRldGFpbCBsZXZlbCBvZiB0aGlzIGNvbXBvbmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI2RlYnVnIj48Qj5kZWJ1ZzwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7VGhlIGRlYnVnZ2luZyBkZXRhaWwgbGV2ZWwgZm9yIHRoaXMgY29tcG9uZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9CZWFuVXRpbHMuaHRtbCNkZWJ1ZyI+PEI+ZGVidWc8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0JlYW5VdGlscy5odG1sIj5CZWFuVXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUaGUgZGVidWdnaW5nIGRldGFpbCBsZXZlbCBmb3IgdGhpcyBjb21wb25lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZGVidWciPjxCPmRlYnVnPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+VGhlIGRlYnVnZ2luZyBkZXRhaWwgbGV2ZWwgZm9yIHRoaXMgZGF0YSBzb3VyY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2RlZmF1bHRCb29sZWFuIj48Qj5kZWZhdWx0Qm9vbGVhbjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwiPkNvbnZlcnRVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1RoZSBkZWZhdWx0IHZhbHVlIGZvciBCb29sZWFuIGNvbnZlcnNpb25zLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNkZWZhdWx0Qnl0ZSI+PEI+ZGVmYXVsdEJ5dGU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgQnl0ZSBjb252ZXJzaW9ucy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwjZGVmYXVsdENoYXJhY3RlciI+PEI+ZGVmYXVsdENoYXJhY3RlcjwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwiPkNvbnZlcnRVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1RoZSBkZWZhdWx0IHZhbHVlIGZvciBDaGFyYWN0ZXIgY29udmVyc2lvbnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2RlZmF1bHREb3VibGUiPjxCPmRlZmF1bHREb3VibGU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgRG91YmxlIGNvbnZlcnNpb25zLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZGVmYXVsdEZhY3RvcnkiPjxCPmRlZmF1bHRGYWN0b3J5PC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXM8L0E+CjxERD5UaGUgZGVmYXVsdCBNZXNzYWdlUmVzb3VyY2VzRmFjdG9yeSB1c2VkIHRvIGNyZWF0ZSBNZXNzYWdlUmVzb3VyY2VzCiBpbnN0YW5jZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2RlZmF1bHRGbG9hdCI+PEI+ZGVmYXVsdEZsb2F0PC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7VGhlIGRlZmF1bHQgdmFsdWUgZm9yIEZsb2F0IGNvbnZlcnNpb25zLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNkZWZhdWx0SW50ZWdlciI+PEI+ZGVmYXVsdEludGVnZXI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgSW50ZWdlciBjb252ZXJzaW9ucy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNkZWZhdWx0TG9jYWxlIj48Qj5kZWZhdWx0TG9jYWxlPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwiPkFjdGlvbjwvQT4KPEREPlRoZSBzeXN0ZW0gZGVmYXVsdCBMb2NhbGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2RlZmF1bHRMb2NhbGUiPjxCPmRlZmF1bHRMb2NhbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSBkZWZhdWx0IExvY2FsZSBmb3IgdGhpcyBzZXJ2ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI2RlZmF1bHRMb2NhbGUiPjxCPmRlZmF1bHRMb2NhbGU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5UaGUgZGVmYXVsdCBMb2NhbGUgZm9yIG91ciBzZXJ2ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRXJyb3JzVGFnLmh0bWwjZGVmYXVsdExvY2FsZSI+PEI+ZGVmYXVsdExvY2FsZTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Vycm9yc1RhZy5odG1sIj5FcnJvcnNUYWc8L0E+CjxERD5UaGUgZGVmYXVsdCBsb2NhbGUgb24gb3VyIHNlcnZlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCNkZWZhdWx0TG9jYWxlIj48Qj5kZWZhdWx0TG9jYWxlPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlRoZSBkZWZhdWx0IExvY2FsZSBmb3Igb3VyIHNlcnZlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2RlZmF1bHRMb2NhbGUiPjxCPmRlZmF1bHRMb2NhbGU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlRoZSBkZWZhdWx0IExvY2FsZSBmb3Igb3VyIHNlcnZlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sI2RlZmF1bHRMb2NhbGUiPjxCPmRlZmF1bHRMb2NhbGU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPlRoZSBkZWZhdWx0IGxvY2FsZSBvbiBvdXIgc2VydmVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNkZWZhdWx0TG9jYWxlIj48Qj5kZWZhdWx0TG9jYWxlPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+VGhlIGRlZmF1bHQgTG9jYWxlIGZvciBvdXIgc2VydmVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwjZGVmYXVsdExvY2FsZSI+PEI+ZGVmYXVsdExvY2FsZTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+VGhlIGRlZmF1bHQgbG9jYWxlIGZvciBvdXIgc2VydmVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZGVmYXVsdExvY2FsZSI+PEI+ZGVmYXVsdExvY2FsZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXM8L0E+CjxERD5UaGUgZGVmYXVsdCBMb2NhbGUgZm9yIG91ciBlbnZpcm9ubWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwjZGVmYXVsdExvY2FsZSI+PEI+ZGVmYXVsdExvY2FsZTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwiPlJlcXVlc3RVdGlsczwvQT4KPEREPlRoZSBkZWZhdWx0IExvY2FsZSBmb3Igb3VyIHNlcnZlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwjZGVmYXVsdExvbmciPjxCPmRlZmF1bHRMb25nPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7VGhlIGRlZmF1bHQgdmFsdWUgZm9yIExvbmcgY29udmVyc2lvbnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2RlZmF1bHRTaG9ydCI+PEI+ZGVmYXVsdFNob3J0PC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7VGhlIGRlZmF1bHQgdmFsdWUgZm9yIFNob3J0IGNvbnZlcnNpb25zLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwiPjxCPkRlZmluZVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwiPkRlZmluZVRhZzwvQT4uPEREPkRlZmluZSBhIHNjcmlwdGluZyB2YXJpYWJsZSBiYXNlZCBvbiB0aGUgdmFsdWUocykgb2YgdGhlIHNwZWNpZmllZAogYmVhbiBwcm9wZXJ0eS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwjRGVmaW5lVGFnKCkiPjxCPkRlZmluZVRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sIj5EZWZpbmVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRlaS5odG1sIj48Qj5EZWZpbmVUZWk8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRlaS5odG1sIj5EZWZpbmVUZWk8L0E+LjxERD5JbXBsZW1lbnRhdGlvbiBvZiA8Y29kZT5UYWdFeHRyYUluZm88L2NvZGU+IGZvciB0aGUgPGI+ZGVmaW5lPC9iPgogdGFnLCBpZGVudGlmeWluZyB0aGUgc2NyaXB0aW5nIG9iamVjdChzKSB0byBiZSBtYWRlIHZpc2libGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRlaS5odG1sI0RlZmluZVRlaSgpIj48Qj5EZWZpbmVUZWkoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUZWkuaHRtbCI+RGVmaW5lVGVpPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCNkZXNjcmliZShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+ZGVzY3JpYmUoT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCI+UHJvcGVydHlVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiB0aGUgZW50aXJlIHNldCBvZiBwcm9wZXJ0aWVzIGZvciB3aGljaCB0aGUgc3BlY2lmaWVkIGJlYW4KIHByb3ZpZGVzIGEgcmVhZCBtZXRob2QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0JlYW5VdGlscy5odG1sI2Rlc2NyaWJlKGphdmEubGFuZy5PYmplY3QpIj48Qj5kZXNjcmliZShPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQmVhblV0aWxzLmh0bWwiPkJlYW5VdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiB0aGUgZW50aXJlIHNldCBvZiBwcm9wZXJ0aWVzIGZvciB3aGljaCB0aGUgc3BlY2lmaWVkIGJlYW4KIHByb3ZpZGVzIGEgcmVhZCBtZXRob2QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZGVzY3JpcHRpb24iPjxCPmRlc2NyaXB0aW9uPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+VGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgZGF0YSBzb3VyY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCNkZXNjcmlwdG9yc0NhY2hlIj48Qj5kZXNjcmlwdG9yc0NhY2hlPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPlByb3BlcnR5VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUaGUgY2FjaGUgb2YgUHJvcGVydHlEZXNjcmlwdG9yIGFycmF5cyBmb3IgYmVhbnMgd2UgaGF2ZSBhbHJlYWR5CiBpbnRyb3NwZWN0ZWQsIGtleWVkIGJ5IHRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZSBvZiB0aGlzIG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjZGVzdHJveSgpIj48Qj5kZXN0cm95KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5HcmFjZWZ1bGx5IHNodXQgZG93biB0aGlzIGNvbnRyb2xsZXIgc2VydmxldCwgcmVsZWFzaW5nIGFueSByZXNvdXJjZXMKIHRoYXQgd2VyZSBhbGxvY2F0ZWQgYXQgaW5pdGlhbGl6YXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza0ZpbGUuaHRtbCNkZXN0cm95KCkiPjxCPmRlc3Ryb3koKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tGaWxlLmh0bWwiPkRpc2tGaWxlPC9BPgo8REQ+RGVsZXRlIHRoZSB0ZW1wb3JhcnkgZmlsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9Gb3JtRmlsZS5odG1sI2Rlc3Ryb3koKSI+PEI+ZGVzdHJveSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Zvcm1GaWxlLmh0bWwiPkZvcm1GaWxlPC9BPgo8REQ+RGVzdHJveSBhbGwgY29udGVudCBmb3IgdGhpcyBmb3JtIGZpbGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2Rlc3Ryb3lBY3Rpb25zKCkiPjxCPmRlc3Ryb3lBY3Rpb25zKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5HcmFjZWZ1bGx5IHNodXQgZG93biBhbnkgYWN0aW9uIGluc3RhbmNlcyB3ZSBoYXZlIGNyZWF0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2Rlc3Ryb3lBcHBsaWNhdGlvbigpIj48Qj5kZXN0cm95QXBwbGljYXRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkdyYWNlZnVsbHkgdGVybWluYXRlIHVzZSBvZiB0aGUgYXBwbGljYXRpb24gTWVzc2FnZVJlc291cmNlcyAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjZGVzdHJveURhdGFTb3VyY2VzKCkiPjxCPmRlc3Ryb3lEYXRhU291cmNlcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+R3JhY2VmdWxseSB0ZXJtaW5hdGUgdXNlIG9mIHRoZSBkYXRhIHNvdXJjZSBhc3NvY2lhdGVkIHdpdGggdGhpcwogYXBwbGljYXRpb24gKGlmIGFueSkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2Rlc3Ryb3lJbnRlcm5hbCgpIj48Qj5kZXN0cm95SW50ZXJuYWwoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkdyYWNlZnVsbHkgdGVybWluYXRlIHVzZSBvZiB0aGUgaW50ZXJuYWwgTWVzc2FnZVJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1J1bGUuaHRtbCNkaWdlc3RlciI+PEI+ZGlnZXN0ZXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9SdWxlLmh0bWwiPlJ1bGU8L0E+CjxERD5UaGUgRGlnZXN0ZXIgd2l0aCB3aGljaCB0aGlzIFJ1bGUgaXMgYXNzb2NpYXRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPjxCPkRpZ2VzdGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4uPEREPkEgPHN0cm9uZz5EaWdlc3Rlcjwvc3Ryb25nPiBwcm9jZXNzZXMgYW4gWE1MIGlucHV0IHN0cmVhbSBieSBtYXRjaGluZyBhCiBzZXJpZXMgb2YgZWxlbWVudCBuZXN0aW5nIHBhdHRlcm5zIHRvIGV4ZWN1dGUgUnVsZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQKIHByaW9yIHRvIHRoZSBzdGFydCBvZiBwYXJzaW5nLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI0RpZ2VzdGVyKCkiPjxCPkRpZ2VzdGVyKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5Db25zdHJ1Y3QgYSBuZXcgRGlnZXN0ZXIgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwjZGlyZWN0Ij48Qj5kaXJlY3Q8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL1B1dFRhZy5odG1sIj5QdXRUYWc8L0E+CjxERD5EZXRlcm1pbmVzIHdoZXRoZXIgY29udGVudCBpcyBpbmNsdWRlZCAoZmFsc2UpIG9yIHByaW50ZWQgKHRydWUpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL3V0aWwvQ29udGVudC5odG1sI2RpcmVjdCI+PEI+ZGlyZWN0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL3V0aWwvQ29udGVudC5odG1sIj5Db250ZW50PC9BPgo8REQ+UmVwcmVzZW50cyBhIGJvb2xlYW47IGlmIHRydWUsIGNvbnRlbnQgaXMgaW5jbHVkZWQsIG90aGVyd2lzZQogICBjb250ZW50IGlzIHByaW50ZWQuPGJyPlRoaXMgaXMgYSBibGFuayBmaW5hbCB0aGF0IGlzIHNldCBhdCAKICBjb25zdHJ1Y3Rpb24uPGJyPlRoaXMgaXMgYSBzdHJpbmcgaW5zdGVhZCBvZiBhIGJvb2xlYW4gYXMKICBhIGNvbnZlbmllbmNlIGZvciB0aGUgdGFncywgd2hvc2UgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUKICBpcyBhIHN0cmluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjZGlzYWJsZWQiPjxCPmRpc2FibGVkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5Db21wb25lbnQgaXMgZGlzYWJsZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCNkaXNhYmxlZCI+PEI+ZGlzYWJsZWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+SXMgdGhpcyBvcHRpb24gZGlzYWJsZWQ/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNkaXNrQnVmZmVyU2l6ZSI+PEI+ZGlza0J1ZmZlclNpemU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwiPk11bHRpcGFydEl0ZXJhdG9yPC9BPgo8REQ+VGhlIHNpemUgaW4gYnl0ZXMgd3JpdHRlbiB0byB0aGUgZmlsZXN5c3RlbSBhdCBhIHRpbWUgWzIwS10KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sIj48Qj5EaXNrRmlsZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sIj5EaXNrRmlsZTwvQT4uPEREPiZuYnNwOzxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza0ZpbGUuaHRtbCNEaXNrRmlsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+RGlza0ZpbGUoU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tGaWxlLmh0bWwiPkRpc2tGaWxlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwiPjxCPkRpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+RGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPi48REQ+VGhpcyBpcyBhIE11bHRpcGFydFJlcXVlc3RIYW5kbGVyIHRoYXQgd3JpdGVzIGZpbGUgZGF0YSBkaXJlY3RseSB0bwogdG8gdGVtcG9yYXJ5IGZpbGVzIG9uIGRpc2suPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCNEaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIoKSI+PEI+RGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+RGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0Rpc3BhdGNoQWN0aW9uLmh0bWwiPjxCPkRpc3BhdGNoQWN0aW9uPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvRGlzcGF0Y2hBY3Rpb24uaHRtbCI+RGlzcGF0Y2hBY3Rpb248L0E+LjxERD5BbiBhYnN0cmFjdCA8c3Ryb25nPkFjdGlvbjwvc3Ryb25nPiB0aGF0IGRpc3BhdGNoZXMgdG8gYSBwdWJsaWMKIG1ldGhvZCB0aGF0IGlzIG5hbWVkIGJ5IHRoZSByZXF1ZXN0IHBhcmFtZXRlciB3aG9zZSBuYW1lIGlzIHNwZWNpZmllZAogYnkgdGhlIDxjb2RlPnBhcmFtZXRlcjwvY29kZT4gcHJvcGVydHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcKIEFjdGlvbk1hcHBpbmcuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvRGlzcGF0Y2hBY3Rpb24uaHRtbCNEaXNwYXRjaEFjdGlvbigpIj48Qj5EaXNwYXRjaEFjdGlvbigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9EaXNwYXRjaEFjdGlvbi5odG1sIj5EaXNwYXRjaEFjdGlvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sI2RvQWZ0ZXJCb2R5KCkiPjxCPmRvQWZ0ZXJCb2R5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCI+RW51bWVyYXRlVGFnPC9BPgo8REQ+TWFrZSB0aGUgbmV4dCBjb2xsZWN0aW9uIGVsZW1lbnQgYXZhaWxhYmxlIGFuZCBsb29wLCBvcgogZmluaXNoIHRoZSBpdGVyYXRpb25zIGlmIHRoZXJlIGFyZSBubyBtb3JlIGVsZW1lbnRzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCNkb0FmdGVyQm9keSgpIj48Qj5kb0FmdGVyQm9keSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+TWFrZSB0aGUgbmV4dCBjb2xsZWN0aW9uIGVsZW1lbnQgYXZhaWxhYmxlIGFuZCBsb29wLCBvcgogZmluaXNoIHRoZSBpdGVyYXRpb25zIGlmIHRoZXJlIGFyZSBubyBtb3JlIGVsZW1lbnRzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCNkb0FmdGVyQm9keSgpIj48Qj5kb0FmdGVyQm9keSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwiPlJhZGlvVGFnPC9BPgo8REQ+U2F2ZSB0aGUgYXNzb2NpYXRlZCBsYWJlbCBmcm9tIHRoZSBib2R5IGNvbnRlbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DYW5jZWxUYWcuaHRtbCNkb0FmdGVyQm9keSgpIj48Qj5kb0FmdGVyQm9keSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NhbmNlbFRhZy5odG1sIj5DYW5jZWxUYWc8L0E+CjxERD5TYXZlIHRoZSBhc3NvY2lhdGVkIGxhYmVsIGZyb20gdGhlIGJvZHkgY29udGVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL011bHRpYm94VGFnLmh0bWwjZG9BZnRlckJvZHkoKSI+PEI+ZG9BZnRlckJvZHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPlNhdmUgdGhlIGJvZHkgY29udGVudHMgb2YgdGhpcyB0YWcgYXMgdGhlIGNvbnN0YW50IHRoYXQgd2Ugd2lsbAogYmUgcmV0dXJuaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCNkb0FmdGVyQm9keSgpIj48Qj5kb0FmdGVyQm9keSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jlc2V0VGFnLmh0bWwiPlJlc2V0VGFnPC9BPgo8REQ+U2F2ZSB0aGUgYXNzb2NpYXRlZCBsYWJlbCBmcm9tIHRoZSBib2R5IGNvbnRlbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CdXR0b25UYWcuaHRtbCNkb0FmdGVyQm9keSgpIj48Qj5kb0FmdGVyQm9keSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0J1dHRvblRhZy5odG1sIj5CdXR0b25UYWc8L0E+CjxERD5TYXZlIHRoZSBhc3NvY2lhdGVkIGxhYmVsIGZyb20gdGhlIGJvZHkgY29udGVudCAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1N1Ym1pdFRhZy5odG1sI2RvQWZ0ZXJCb2R5KCkiPjxCPmRvQWZ0ZXJCb2R5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU3VibWl0VGFnLmh0bWwiPlN1Ym1pdFRhZzwvQT4KPEREPlNhdmUgdGhlIGFzc29jaWF0ZWQgbGFiZWwgZnJvbSB0aGUgYm9keSBjb250ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI2RvQWZ0ZXJCb2R5KCkiPjxCPmRvQWZ0ZXJCb2R5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+U2F2ZSB0aGUgYXNzb2NpYXRlZCBsYWJlbCBmcm9tIHRoZSBib2R5IGNvbnRlbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCNkb0FmdGVyQm9keSgpIj48Qj5kb0FmdGVyQm9keSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5TYXZlIGFueSBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcsIHdoaWNoIHdpbGwgZ2VuZXJhbGx5IGJlIHRoZQogb3B0aW9uKHMpIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzIGRpc3BsYXllZCB0byB0aGUgdXNlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvblRhZy5odG1sI2RvQWZ0ZXJCb2R5KCkiPjxCPmRvQWZ0ZXJCb2R5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwiPk9wdGlvblRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIGJvZHkgdGV4dCBvZiB0aGlzIHRhZyAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwjZG9BZnRlckJvZHkoKSI+PEI+ZG9BZnRlckJvZHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sIj5DaGVja2JveFRhZzwvQT4KPEREPlNhdmUgdGhlIGFzc29jaWF0ZWQgbGFiZWwgZnJvbSB0aGUgYm9keSBjb250ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNkb0FmdGVyQm9keSgpIj48Qj5kb0FmdGVyQm9keSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+TWFrZSB0aGUgbmV4dCBjb2xsZWN0aW9uIGVsZW1lbnQgYXZhaWxhYmxlIGFuZCBsb29wLCBvcgogZmluaXNoIHRoZSBpdGVyYXRpb25zIGlmIHRoZXJlIGFyZSBubyBtb3JlIGVsZW1lbnRzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+UmVuZGVyIHRoZSBlbmQgb2YgdGhlIGh5cGVybGluay4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJlbmRlciB0aGUgZW5kIG9mIHRoaXMgZm9ybS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPk9wdGlvbmFsbHkgcmVuZGVyIHRoZSBhc3NvY2lhdGVkIGxhYmVsIGZyb20gdGhlIGJvZHkgY29udGVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sIj5PcHRpb25zMVRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIGVuZCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPkNsZWFuIHVwIGFmdGVyIHByb2Nlc3NpbmcgdGhpcyBlbnVtZXJhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPlByb2Nlc3MgdGhlIGVuZCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4KPEREPk9wdGlvbmFsbHkgcmVuZGVyIHRoZSBhc3NvY2lhdGVkIGxhYmVsIGZyb20gdGhlIGJvZHkgY29udGVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZXNldFRhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZXNldFRhZy5odG1sIj5SZXNldFRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIGVuZCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JbmNsdWRlVGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0luY2x1ZGVUYWcuaHRtbCI+SW5jbHVkZVRhZzwvQT4KPEREPkxvb2sgdXAgdGhlIEFjdGlvbkZvcndhcmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSwKIGFuZCBwZXJmb3JtIGFuIGluY2x1ZGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYWN0dWFsIHBhdGguCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5Qcm9jZXNzIHRoZSBlbmQgb2YgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9yd2FyZFRhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3J3YXJkVGFnLmh0bWwiPkZvcndhcmRUYWc8L0E+CjxERD5Mb29rIHVwIHRoZSBBY3Rpb25Gb3J3YXJkIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUsCiBhbmQgcGVyZm9ybSBhIGZvcndhcmQgb3IgcmVkaXJlY3QgdG8gdGhhdCBwYXRoIGFzIGluZGljYXRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZWRpcmVjdFRhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZWRpcmVjdFRhZy5odG1sIj5SZWRpcmVjdFRhZzwvQT4KPEREPlJlbmRlciBhIHJlZGlyZWN0IHRvIHRoZSBzcGVjaWZpZWQgaHlwZXJsaW5rLCBhbmQgc2tpcCB0aGUKIHJlbWFpbmRlciBvZiB0aGUgY3VycmVudCBwYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1N1Ym1pdFRhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NoZWNrYm94VGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPgo8REQ+T3B0aW9uYWxseSByZW5kZXIgdGhlIGFzc29jaWF0ZWQgbGFiZWwgZnJvbSB0aGUgYm9keSBjb250ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0J1dHRvblRhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCI+QnV0dG9uVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NhbmNlbFRhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DYW5jZWxUYWcuaHRtbCI+Q2FuY2VsVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvblRhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwiPkxpbmsxVGFnPC9BPgo8REQ+UmVuZGVyIHRoZSBlbmQgb2YgdGhlIGh5cGVybGluay4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPkNsZWFuIHVwIGFmdGVyIHByb2Nlc3NpbmcgdGhpcyBlbnVtZXJhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPlJlbmRlciB0aGUgZW5kIG9mIHRoaXMgZm9ybS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0h0bWxUYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0h0bWxUYWcuaHRtbCI+SHRtbFRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIGVuZCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlJlbmRlciB0aGUgZW5kIG9mIHRoZSBJTUcgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sIj5PcHRpb25zVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwiPlJhZGlvVGFnPC9BPgo8REQ+T3B0aW9uYWxseSByZW5kZXIgdGhlIGFzc29jaWF0ZWQgbGFiZWwgZnJvbSB0aGUgYm9keSBjb250ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2FuY2VsVGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DYW5jZWxUYWcuaHRtbCI+Q2FuY2VsVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL011bHRpYm94VGFnLmh0bWwiPk11bHRpYm94VGFnPC9BPgo8REQ+UmVuZGVyIGFuIGlucHV0IGVsZW1lbnQgZm9yIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jlc2V0VGFnLmh0bWwiPlJlc2V0VGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQnV0dG9uVGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CdXR0b25UYWcuaHRtbCI+QnV0dG9uVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU3VibWl0VGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI2RvRW5kVGFnKCkiPjxCPmRvRW5kVGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+UmVuZGVyIHRoZSBlbmQgb2YgdGhlIGh5cGVybGluay4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jld3JpdGVUYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jld3JpdGVUYWcuaHRtbCI+UmV3cml0ZVRhZzwvQT4KPEREPklnbm9yZSB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+UmVuZGVyIHRoZSBlbmQgb2YgdGhpcyBmb3JtLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgZW5kIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2hlY2tib3hUYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgcmVtYWluZGVyIG9mIHRoaXMgcGFnZSBub3JtYWxseS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJlbmRlciB0aGUgZW5kIG9mIHRoaXMgZm9ybS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPkNvbmRpdGlvbmFsVGFnQmFzZTwvQT4KPEREPkV2YWx1YXRlIHRoZSByZW1haW5kZXIgb2YgdGhlIGN1cnJlbnQgcGFnZSBub3JtYWxseS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPkNsZWFuIHVwIGFmdGVyIHByb2Nlc3NpbmcgdGhpcyBlbnVtZXJhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Gb3J3YXJkVGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0ZvcndhcmRUYWcuaHRtbCI+Rm9yd2FyZFRhZzwvQT4KPEREPkxvb2sgdXAgdGhlIEFjdGlvbkZvcndhcmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSwKIGFuZCBwZXJmb3JtIGEgZm9yd2FyZCBvciByZWRpcmVjdCB0byB0aGF0IHBhdGggYXMgaW5kaWNhdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwjZG9FbmRUYWcoKSI+PEI+ZG9FbmRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+UmVuZGVyIHRoZSByZWRpcmVjdCBhbmQgc2tpcCB0aGUgcmVtYWluZGVyIG9mIHRoaXMgcGFnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9QdXRUYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwiPlB1dFRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIGVuZCB0YWcgYnkgcHV0dGluZyBjb250ZW50IGludG8gdGhlIGVuY2xvc2luZwogaW5zZXJ0IHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9JbnNlcnRUYWcuaHRtbCNkb0VuZFRhZygpIj48Qj5kb0VuZFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvSW5zZXJ0VGFnLmh0bWwiPkluc2VydFRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIGVuZCB0YWcgYnkgaW5jbHVkaW5nIHRoZSB0ZW1wbGF0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjZG9HZXQoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj48Qj5kb0dldChIdHRwU2VydmxldFJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+UHJvY2VzcyBhbiBIVFRQICJHRVQiIHJlcXVlc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2RvUG9zdChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkiPjxCPmRvUG9zdChIdHRwU2VydmxldFJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+UHJvY2VzcyBhbiBIVFRQICJQT1NUIiByZXF1ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPlJlbmRlciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBoeXBlcmxpbmsuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSHRtbFByb3BlcnR5VGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9IdG1sUHJvcGVydHlUYWcuaHRtbCI+SHRtbFByb3BlcnR5VGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3RhcnQgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyRXF1YWxzVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlckVxdWFsc1RhZy5odG1sIj5JZlBhcmFtZXRlckVxdWFsc1RhZzwvQT4KPEREPkNvbXBhcmUgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXIgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZSwgYW5kIGRlY2lkZSB3aGV0aGVyCiBvciBub3QgdG8gaW5jbHVkZSB0aGUgYm9keSBjb250ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJlbmRlciB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgZm9ybS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTXVsdGlib3hUYWcuaHRtbCI+TXVsdGlib3hUYWc8L0E+CjxERD5HZW5lcmF0ZSB0aGUgcmVxdWlyZWQgaW5wdXQgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1BhcmFtZXRlclRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUGFyYW1ldGVyVGFnLmh0bWwiPlBhcmFtZXRlclRhZzwvQT4KPEREPkdlbmVyYXRlIHRoZSByZXF1aXJlZCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCI+T3B0aW9uczFUYWc8L0E+CjxERD5Qcm9jZXNzIHRoZSBzdGFydCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5Qcm9jZXNzIHRoZSBzdGFydCB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRXJyb3JzVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FcnJvcnNUYWcuaHRtbCI+RXJyb3JzVGFnPC9BPgo8REQ+UmVuZGVyIHRoZSBzcGVjaWZpZWQgZXJyb3IgbWVzc2FnZXMgaWYgdGhlcmUgYXJlIGFueS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sIj5FbnVtZXJhdGVUYWc8L0E+CjxERD5Db25zdHJ1Y3QgYW4gZW51bWVyYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgY29sbGVjdGlvbiwgYW5kIGJlZ2luCiBsb29waW5nIHRocm91Z2ggdGhlIGJvZHkgb25jZSBwZXIgZWxlbWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD5Qcm9jZXNzIHRoZSBzdGFydCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvR2V0UHJvcGVydHlUYWcuaHRtbCI+R2V0UHJvcGVydHlUYWc8L0E+CjxERD5SZXRyaWV2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydHkgYW5kIGV4cG9zZSBpdCBhcyBhIHNjcmlwdGluZyB2YXJpYWJsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck51bGxUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTnVsbFRhZy5odG1sIj5JZlBhcmFtZXRlck51bGxUYWc8L0E+CjxERD5SZXRyaWV2ZSB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlciwgYW5kIGRlY2lkZSB3aGV0aGVyCiBvciBub3QgdG8gaW5jbHVkZSB0aGUgYm9keSBjb250ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JhZGlvVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4KPEREPkdlbmVyYXRlIHRoZSByZXF1aXJlZCBpbnB1dCB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVzZXRUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Jlc2V0VGFnLmh0bWwiPlJlc2V0VGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3RhcnQgb2YgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlUmVkaXJlY3RVUkxUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VuY29kZVJlZGlyZWN0VVJMVGFnLmh0bWwiPkVuY29kZVJlZGlyZWN0VVJMVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3RhcnQgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0luY2x1ZGVUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0luY2x1ZGVUYWcuaHRtbCI+SW5jbHVkZVRhZzwvQT4KPEREPkRlZmVyIGdlbmVyYXRpb24gdW50aWwgdGhlIGVuZCBvZiB0aGlzIHRhZyBpcyBlbmNvdW50ZXJlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5Qcm9jZXNzIHRoZSBzdGFydCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlRmllbGRUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VGaWVsZFRhZy5odG1sIj5CYXNlRmllbGRUYWc8L0E+CjxERD5HZW5lcmF0ZSB0aGUgcmVxdWlyZWQgaW5wdXQgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmQXR0cmlidXRlTWlzc2luZ1RhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZBdHRyaWJ1dGVNaXNzaW5nVGFnLmh0bWwiPklmQXR0cmlidXRlTWlzc2luZ1RhZzwvQT4KPEREPkNvbmRpdGlvbmFsbHkgZXZhbHVhdGUgdGhlIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3J3YXJkVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3J3YXJkVGFnLmh0bWwiPkZvcndhcmRUYWc8L0E+CjxERD5EZWZlciBnZW5lcmF0aW9uIHVudGlsIHRoZSBlbmQgb2YgdGhpcyB0YWcgaXMgZW5jb3VudGVyZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOb3RFcXVhbHNUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTm90RXF1YWxzVGFnLmh0bWwiPklmUGFyYW1ldGVyTm90RXF1YWxzVGFnPC9BPgo8REQ+Q29tcGFyZSB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlciB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLCBhbmQgZGVjaWRlIHdoZXRoZXIKIG9yIG5vdCB0byBpbmNsdWRlIHRoZSBib2R5IGNvbnRlbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVkaXJlY3RUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+RGVmZXIgZ2VuZXJhdGlvbiB1bnRpbCB0aGUgZW5kIG9mIHRoaXMgdGFnIGlzIGVuY291bnRlcmVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1N1Ym1pdFRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU3VibWl0VGFnLmh0bWwiPlN1Ym1pdFRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIHN0YXJ0IG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1RleHRhcmVhVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9UZXh0YXJlYVRhZy5odG1sIj5UZXh0YXJlYVRhZzwvQT4KPEREPkdlbmVyYXRlIHRoZSByZXF1aXJlZCBpbnB1dCB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2hlY2tib3hUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPgo8REQ+R2VuZXJhdGUgdGhlIHJlcXVpcmVkIGlucHV0IHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0J1dHRvblRhZy5odG1sIj5CdXR0b25UYWc8L0E+CjxERD5Qcm9jZXNzIHRoZSBzdGFydCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdE51bGxUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTm90TnVsbFRhZy5odG1sIj5JZlBhcmFtZXRlck5vdE51bGxUYWc8L0E+CjxERD5SZXRyaWV2ZSB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlciwgYW5kIGRlY2lkZSB3aGV0aGVyCiBvciBub3QgdG8gaW5jbHVkZSB0aGUgYm9keSBjb250ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VUYWcuaHRtbCI+QmFzZVRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIHN0YXJ0IG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NhbmNlbFRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2FuY2VsVGFnLmh0bWwiPkNhbmNlbFRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIHN0YXJ0IG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvblRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uVGFnLmh0bWwiPk9wdGlvblRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIHN0YXJ0IG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sIj5MaW5rMVRhZzwvQT4KPEREPlJlbmRlciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBoeXBlcmxpbmsuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUHJvcGVydHlUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Byb3BlcnR5VGFnLmh0bWwiPlByb3BlcnR5VGFnPC9BPgo8REQ+R2VuZXJhdGUgdGhlIHJlcXVpcmVkIGlucHV0IHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5RXF1YWxzVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5RXF1YWxzVGFnLmh0bWwiPklmUHJvcGVydHlFcXVhbHNUYWc8L0E+CjxERD5Db25kaXRpb25hbGx5IGV2YWx1YXRlIHRoZSBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZBdHRyaWJ1dGVFeGlzdHNUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmQXR0cmlidXRlRXhpc3RzVGFnLmh0bWwiPklmQXR0cmlidXRlRXhpc3RzVGFnPC9BPgo8REQ+Q29uZGl0aW9uYWxseSBldmFsdWF0ZSB0aGUgYm9keSBjb250ZW50IG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPkNvbnN0cnVjdCBhbiBpdGVyYXRvciBmb3IgdGhlIHNwZWNpZmllZCBjb2xsZWN0aW9uLCBhbmQgYmVnaW4KIGxvb3BpbmcgdGhyb3VnaCB0aGUgYm9keSBvbmNlIHBlciBlbGVtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlOb3RFcXVhbHNUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlOb3RFcXVhbHNUYWcuaHRtbCI+SWZQcm9wZXJ0eU5vdEVxdWFsc1RhZzwvQT4KPEREPkNvbmRpdGlvbmFsbHkgZXZhbHVhdGUgdGhlIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5SZW5kZXIgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGZvcm0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlVVJMVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbmNvZGVVUkxUYWcuaHRtbCI+RW5jb2RlVVJMVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3RhcnQgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwiPkhlYWRlclRhZzwvQT4KPEREPlJldHJpZXZlIHRoZSByZXF1aXJlZCBwcm9wZXJ0eSBhbmQgZXhwb3NlIGl0IGFzIGEgc2NyaXB0aW5nIHZhcmlhYmxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sIj5Xcml0ZVRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIHN0YXJ0IHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sIj5EZWZpbmVUYWc8L0E+CjxERD5SZXRyaWV2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydHkgYW5kIGV4cG9zZSBpdCBhcyBhIHNjcmlwdGluZyB2YXJpYWJsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1NpemVUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwiPlNpemVUYWc8L0E+CjxERD5SZXRyaWV2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydHkgYW5kIGV4cG9zZSBpdCBhcyBhIHNjcmlwdGluZyB2YXJpYWJsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sIj5Db29raWVUYWc8L0E+CjxERD5SZXRyaWV2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydHkgYW5kIGV4cG9zZSBpdCBhcyBhIHNjcmlwdGluZyB2YXJpYWJsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sIj5QYXJhbWV0ZXJUYWc8L0E+CjxERD5SZXRyaWV2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydHkgYW5kIGV4cG9zZSBpdCBhcyBhIHNjcmlwdGluZyB2YXJpYWJsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1Jlc291cmNlVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCI+UmVzb3VyY2VUYWc8L0E+CjxERD5SZXRyaWV2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydHkgYW5kIGV4cG9zZSBpdCBhcyBhIHNjcmlwdGluZyB2YXJpYWJsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+CjxERD5EZWZpbmUgdGhlIGNvbnRlbnRzIHJldHVybmVkIGZvciB0aGUgc3BlY2lmaWVkIHJlc291cmNlIGFzIGEKIHBhZ2Ugc2NvcGUgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwiPlN0cnV0c1RhZzwvQT4KPEREPlJldHJpZXZlIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uIG9iamVjdCBhbmQgZXhwb3NlIGl0IGFzIGEKIHNjcmlwdGluZyB2YXJpYWJsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhZ2VUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYWdlVGFnLmh0bWwiPlBhZ2VUYWc8L0E+CjxERD5SZXRyaWV2ZSB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBvYmplY3QgYW5kIGV4cG9zZSBpdCBhcyBhCiBzY3JpcHRpbmcgdmFyaWFibGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3RhcnQgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSHRtbFRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0h0bWxUYWcuaHRtbCI+SHRtbFRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIHN0YXJ0IG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlJlbmRlciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBJTUcgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPlByb2Nlc3MgdGhlIHN0YXJ0IG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwiPkJhc2VJbnB1dFRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIHN0YXJ0IG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwiPkJhc2VGaWVsZFRhZzwvQT4KPEREPkdlbmVyYXRlIHRoZSByZXF1aXJlZCBpbnB1dCB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZVRhZy5odG1sIj5CYXNlVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3RhcnQgb2YgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SYWRpb1RhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwiPlJhZGlvVGFnPC9BPgo8REQ+R2VuZXJhdGUgdGhlIHJlcXVpcmVkIGlucHV0IHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NhbmNlbFRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NhbmNlbFRhZy5odG1sIj5DYW5jZWxUYWc8L0E+CjxERD5Qcm9jZXNzIHRoZSBzdGFydCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sIj5FcnJvcnNUYWc8L0E+CjxERD5SZW5kZXIgdGhlIHNwZWNpZmllZCBlcnJvciBtZXNzYWdlcyBpZiB0aGVyZSBhcmUgYW55Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPlByb2Nlc3MgdGhlIGJlZ2lubmluZyBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jlc2V0VGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCI+UmVzZXRUYWc8L0E+CjxERD5Qcm9jZXNzIHRoZSBzdGFydCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0J1dHRvblRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0J1dHRvblRhZy5odG1sIj5CdXR0b25UYWc8L0E+CjxERD5Qcm9jZXNzIHRoZSBzdGFydCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1N1Ym1pdFRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1N1Ym1pdFRhZy5odG1sIj5TdWJtaXRUYWc8L0E+CjxERD5Qcm9jZXNzIHRoZSBzdGFydCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+SW1hZ2VUYWc8L0E+CjxERD5Qcm9jZXNzIHRoZSBzdGFydCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5SZW5kZXIgdGhlIGJlZ2lubmluZyBvZiB0aGUgaHlwZXJsaW5rLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmV3cml0ZVRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jld3JpdGVUYWcuaHRtbCI+UmV3cml0ZVRhZzwvQT4KPEREPlJlbmRlciB0aGUgYXBwcm9wcmlhdGVseSBlbmNvZGVkIFVSSS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5SZW5kZXIgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGZvcm0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3RhcnQgb2YgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPgo8REQ+R2VuZXJhdGUgdGhlIHJlcXVpcmVkIGlucHV0IHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZW5kZXIgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGZvcm0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9UZXh0YXJlYVRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1RleHRhcmVhVGFnLmh0bWwiPlRleHRhcmVhVGFnPC9BPgo8REQ+R2VuZXJhdGUgdGhlIHJlcXVpcmVkIGlucHV0IHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sIj5Db25kaXRpb25hbFRhZ0Jhc2U8L0E+CjxERD5QZXJmb3JtIHRoZSB0ZXN0IHJlcXVpcmVkIGZvciB0aGlzIHBhcnRpY3VsYXIgdGFnLCBhbmQgZWl0aGVyIGV2YWx1YXRlCiBvciBza2lwIHRoZSBib2R5IG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPkNvbnN0cnVjdCBhbiBpdGVyYXRvciBmb3IgdGhlIHNwZWNpZmllZCBjb2xsZWN0aW9uLCBhbmQgYmVnaW4KIGxvb3BpbmcgdGhyb3VnaCB0aGUgYm9keSBvbmNlIHBlciBlbGVtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0ZvcndhcmRUYWcuaHRtbCNkb1N0YXJ0VGFnKCkiPjxCPmRvU3RhcnRUYWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0ZvcndhcmRUYWcuaHRtbCI+Rm9yd2FyZFRhZzwvQT4KPEREPkRlZmVyIHByb2Nlc3NpbmcgdW50aWwgdGhlIGVuZCBvZiB0aGlzIHRhZyBpcyBlbmNvdW50ZXJlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI2RvU3RhcnRUYWcoKSI+PEI+ZG9TdGFydFRhZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD5EZWZlciBnZW5lcmF0aW9uIHVudGlsIHRoZSBlbmQgb2YgdGhpcyB0YWcgaXMgZW5jb3VudGVyZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvR2V0VGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9HZXRUYWcuaHRtbCI+R2V0VGFnPC9BPgo8REQ+UHJpbnQgY29udGVudCBuYW1lZCBieSBzZXROYW1lKCkgb3IgaW5jbHVkZSBpdCwgZGVwZW5kaW5nCiBvbiB0aGUgY29udGVudCdzIGRpcmVjdCBhdHRyaWJ1dGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvSW5zZXJ0VGFnLmh0bWwjZG9TdGFydFRhZygpIj48Qj5kb1N0YXJ0VGFnKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9JbnNlcnRUYWcuaHRtbCI+SW5zZXJ0VGFnPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3RhcnQgdGFnIGJ5IHB1c2hpbmcgdGhpcyB0YWcncyBtYXAgb250byB0aGUKIGNvbnRlbnQgbWFwIHN0YWNrLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbXBhcmVUYWdCYXNlLmh0bWwjRE9VQkxFX0NPTVBBUkUiPjxCPkRPVUJMRV9DT01QQVJFPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29tcGFyZVRhZ0Jhc2UuaHRtbCI+Q29tcGFyZVRhZ0Jhc2U8L0E+CjxERD5XZSB3aWxsIGRvIGEgZG91YmxlL2Zsb2F0IGNvbXBhcmlzb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZHJpdmVyIj48Qj5kcml2ZXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD5UaGUgSkRCQyBkcml2ZXIgdGhhdCB3ZSB1c2UgYXMgYSBjb25uZWN0aW9uIGZhY3RvcnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZHJpdmVyQ2xhc3MiPjxCPmRyaXZlckNsYXNzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+VGhlIEphdmEgY2xhc3MgbmFtZSBvZiB0aGUgSkRCQyBkcml2ZXIgdG8gdXNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNkdGRzIj48Qj5kdGRzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5UaGUgVVJMcyBvZiBEVERzIHRoYXQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQsIGtleWVkIGJ5IHRoZSBwdWJsaWMKIGlkZW50aWZpZXIgdGhhdCBjb3JyZXNwb25kcy4KPC9ETD4KPEhSPgo8QSBOQU1FPSJfRV8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+RTwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwjZW1wdHkoKSI+PEI+ZW1wdHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+CjxERD5SZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlcmUgYXJlIG5vIGVycm9yIG1lc3NhZ2VzIHJlY29yZGVkCiBpbiB0aGlzIGNvbGxlY3Rpb24sIG9yIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0FycmF5U3RhY2suaHRtbCNlbXB0eSgpIj48Qj5lbXB0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9BcnJheVN0YWNrLmh0bWwiPkFycmF5U3RhY2s8L0E+CjxERD5SZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhpcyBzdGFjayBpcyBjdXJyZW50bHkgZW1wdHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlUmVkaXJlY3RVUkxUYWcuaHRtbCI+PEI+RW5jb2RlUmVkaXJlY3RVUkxUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlUmVkaXJlY3RVUkxUYWcuaHRtbCI+RW5jb2RlUmVkaXJlY3RVUkxUYWc8L0E+LjxERD5DdXN0b20gdGFnIGltcGxlbWVudGF0aW9uIHRoYXQgYWN0cyBsaWtlCiA8Y29kZT4mbHQ7anNwOmdldFByb3BlcnR5Jmd0OzwvY29kZT4gYnV0IGVuY29kZXMgdGhlIG91dHB1dCBzdHJlYW0gc28gdGhhdAogSFRNTC1yZWxhdGVkIGNoYXJhY3RlcnMgZG8gbm90IGNhdXNlIGRpZmZpY3VsdGllcy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VuY29kZVJlZGlyZWN0VVJMVGFnLmh0bWwjRW5jb2RlUmVkaXJlY3RVUkxUYWcoKSI+PEI+RW5jb2RlUmVkaXJlY3RVUkxUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VuY29kZVJlZGlyZWN0VVJMVGFnLmh0bWwiPkVuY29kZVJlZGlyZWN0VVJMVGFnPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VuY29kZVVSTFRhZy5odG1sIj48Qj5FbmNvZGVVUkxUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlVVJMVGFnLmh0bWwiPkVuY29kZVVSTFRhZzwvQT4uPEREPkN1c3RvbSB0YWcgaW1wbGVtZW50YXRpb24gdGhhdCBhY3RzIGxpa2UKIDxjb2RlPiZsdDtqc3A6Z2V0UHJvcGVydHkmZ3Q7PC9jb2RlPiBidXQgZW5jb2RlcyB0aGUgb3V0cHV0IHN0cmVhbSBzbyB0aGF0CiBIVE1MLXJlbGF0ZWQgY2hhcmFjdGVycyBkbyBub3QgY2F1c2UgZGlmZmljdWx0aWVzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlVVJMVGFnLmh0bWwjRW5jb2RlVVJMVGFnKCkiPjxCPkVuY29kZVVSTFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlVVJMVGFnLmh0bWwiPkVuY29kZVVSTFRhZzwvQT4KPEREPkNvbnN0cnVjdCBhIG5ldyBpbnN0YW5jZSBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sI2VuY291bnRlcmVkRmluYWxCb3VuZGFyeSgpIj48Qj5lbmNvdW50ZXJlZEZpbmFsQm91bmRhcnkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFZhbHVlU3RyZWFtLmh0bWwiPk11bHRpcGFydFZhbHVlU3RyZWFtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI2VuY3R5cGUiPjxCPmVuY3R5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlRoZSBjb250ZW50IGVuY29kaW5nIHRvIGJlIHVzZWQgb24gYSBQT1NUIHN1Ym1pdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNlbmN0eXBlIj48Qj5lbmN0eXBlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+VGhlIGNvbnRlbnQgZW5jb2RpbmcgdG8gYmUgdXNlZCBvbiBhIFBPU1Qgc3VibWl0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvUnVsZS5odG1sI2VuZCgpIj48Qj5lbmQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9SdWxlLmh0bWwiPlJ1bGU8L0E+CjxERD5UaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgZW5kIG9mIGEgbWF0Y2hpbmcgWE1MIGVsZW1lbnQKIGlzIGVuY291bnRlcmVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvT2JqZWN0Q3JlYXRlUnVsZS5odG1sI2VuZCgpIj48Qj5lbmQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9PYmplY3RDcmVhdGVSdWxlLmh0bWwiPk9iamVjdENyZWF0ZVJ1bGU8L0E+CjxERD5Qcm9jZXNzIHRoZSBlbmQgb2YgdGhpcyBlbGVtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0VG9wUnVsZS5odG1sI2VuZCgpIj48Qj5lbmQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXRUb3BSdWxlLmh0bWwiPlNldFRvcFJ1bGU8L0E+CjxERD5Qcm9jZXNzIHRoZSBlbmQgb2YgdGhpcyBlbGVtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0TmV4dFJ1bGUuaHRtbCNlbmQoKSI+PEI+ZW5kKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0TmV4dFJ1bGUuaHRtbCI+U2V0TmV4dFJ1bGU8L0E+CjxERD5Qcm9jZXNzIHRoZSBlbmQgb2YgdGhpcyBlbGVtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbFBhcmFtUnVsZS5odG1sI2VuZCgpIj48Qj5lbmQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsUGFyYW1SdWxlLmh0bWwiPkNhbGxQYXJhbVJ1bGU8L0E+CjxERD5Qcm9jZXNzIHRoZSBlbmQgb2YgdGhpcyBlbGVtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbE1ldGhvZFJ1bGUuaHRtbCNlbmQoKSI+PEI+ZW5kKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbE1ldGhvZFJ1bGUuaHRtbCI+Q2FsbE1ldGhvZFJ1bGU8L0E+CjxERD5Qcm9jZXNzIHRoZSBlbmQgb2YgdGhpcyBlbGVtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNlbmREb2N1bWVudCgpIj48Qj5lbmREb2N1bWVudCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+UHJvY2VzcyBub3RpZmljYXRpb24gb2YgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQgYmVpbmcgcmVhY2hlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjZW5kRWxlbWVudChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZW5kRWxlbWVudChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+UHJvY2VzcyBub3RpZmljYXRpb24gb2YgdGhlIGVuZCBvZiBhbiBYTUwgZWxlbWVudCBiZWluZyByZWFjaGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjZW5zdXJlQ2FwYWNpdHkoaW50KSI+PEI+ZW5zdXJlQ2FwYWNpdHkoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7SW5jcmVhc2UgdGhlIGNhcGFjaXR5IG9mIHRoaXMgPGNvZGU+QXJyYXlMaXN0PC9jb2RlPiBpbnN0YW5jZSwgaWYKIG5lY2Vzc2FyeSwgdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhvbGQgYXQgbGVhc3QgdGhlIG51bWJlciBvZiBlbGVtZW50cwogc3BlY2lmaWVkIGJ5IHRoZSBtaW5pbXVtIGNhcGFjaXR5IGFyZ3VtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sI2VudHJ5U2V0KCkiPjxCPmVudHJ5U2V0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPkZhc3RIYXNoTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIGEgY29sbGVjdGlvbiB2aWV3IG9mIHRoZSBtYXBwaW5ncyBjb250YWluZWQgaW4gdGhpcyBtYXAuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjZW50cnlTZXQoKSI+PEI+ZW50cnlTZXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCI+RmFzdFRyZWVNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gYSBjb2xsZWN0aW9uIHZpZXcgb2YgdGhlIG1hcHBpbmdzIGNvbnRhaW5lZCBpbiB0aGlzIG1hcC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvSXRlcmF0b3JBZGFwdGVyLmh0bWwjZW51bSI+PEI+ZW51bTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9JdGVyYXRvckFkYXB0ZXIuaHRtbCI+SXRlcmF0b3JBZGFwdGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPjxCPkVudW1lcmF0ZVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCI+RW51bWVyYXRlVGFnPC9BPi48REQ+Q3VzdG9tIHRhZyB0aGF0IGVudW1lcmF0ZXMgdGhlIGVsZW1lbnRzIG9mIGEgY29sbGVjdGlvbiwgd2hpY2ggY2FuIGJlCiBlaXRoZXIgYW4gYXR0cmlidXRlIG9yIHRoZSBwcm9wZXJ0eSBvZiBhbiBhdHRyaWJ1dGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCNFbnVtZXJhdGVUYWcoKSI+PEI+RW51bWVyYXRlVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCI+RW51bWVyYXRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGVpLmh0bWwiPjxCPkVudW1lcmF0ZVRlaTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUZWkuaHRtbCI+RW51bWVyYXRlVGVpPC9BPi48REQ+SW1wbGVtZW50YXRpb24gb2YgPGNvZGU+VGFnRXh0cmFJbmZvPC9jb2RlPiBmb3IgdGhlIDxiPmVudW1lcmF0ZTwvYj4KIHRhZywgaWRlbnRpZnlpbmcgdGhlIHNjcmlwdGluZyBvYmplY3QocykgdG8gYmUgbWFkZSB2aXNpYmxlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGVpLmh0bWwjRW51bWVyYXRlVGVpKCkiPjxCPkVudW1lcmF0ZVRlaSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGVpLmh0bWwiPkVudW1lcmF0ZVRlaTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sI2VudW1lcmF0aW9uIj48Qj5lbnVtZXJhdGlvbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPkVudW1lcmF0aW9uIG9mIHRoZSBlbGVtZW50cyBvZiB0aGlzIGNvbGxlY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNlcXVhbHMoYnl0ZVtdLCBpbnQsIGludCwgYnl0ZVtdKSI+PEI+ZXF1YWxzKGJ5dGVbXSwgaW50LCBpbnQsIGJ5dGVbXSk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCI+TXVsdGlwYXJ0SXRlcmF0b3I8L0E+CjxERD5DaGVja3MgYnl0ZXMgZm9yIGVxdWFsaXR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sI2VxdWFscyhqYXZhLmxhbmcuT2JqZWN0KSI+PEI+ZXF1YWxzKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPkZhc3RIYXNoTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29tcGFyZSB0aGUgc3BlY2lmaWVkIG9iamVjdCB3aXRoIHRoaXMgbGlzdCBmb3IgZXF1YWxpdHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPjxCPmVxdWFscyhPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwiPkZhc3RBcnJheUxpc3Q8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb21wYXJlIHRoZSBzcGVjaWZpZWQgb2JqZWN0IHdpdGggdGhpcyBsaXN0IGZvciBlcXVhbGl0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPjxCPmVxdWFscyhPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvbXBhcmUgdGhlIHNwZWNpZmllZCBvYmplY3Qgd2l0aCB0aGlzIGxpc3QgZm9yIGVxdWFsaXR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0VxdWFsVGFnLmh0bWwiPjxCPkVxdWFsVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0VxdWFsVGFnLmh0bWwiPkVxdWFsVGFnPC9BPi48REQ+RXZhbHVhdGUgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCB2YXJpYWJsZQogYW5kIHZhbHVlIGFyZSBlcXVhbC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0VxdWFsVGFnLmh0bWwjRXF1YWxUYWcoKSI+PEI+RXF1YWxUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0VxdWFsVGFnLmh0bWwiPkVxdWFsVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjZXJyb3IiPjxCPmVycm9yPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+VGhlIGVycm9yIHN0YXRlIGZvciB0aGlzIHN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNFUlJPUl9LRVkiPjxCPkVSUk9SX0tFWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD5UaGUgcmVxdWVzdCBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCB5b3VyIGFjdGlvbiBzaG91bGQgc3RvcmUgYW4KIDxjb2RlPm9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnM8L2NvZGU+IG9iamVjdCwgaWYgeW91CiBhcmUgdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgY3VzdG9tIHRhZyBsaWJyYXJ5IGVsZW1lbnRzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNlcnJvcihvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbikiPjxCPmVycm9yKFNBWFBhcnNlRXhjZXB0aW9uKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPkZvcndhcmQgbm90aWZpY2F0aW9uIG9mIGEgcGFyc2luZyBlcnJvciB0byB0aGUgYXBwbGljYXRpb24gc3VwcGxpZWQKIGVycm9yIGhhbmRsZXIgKGlmIGFueSkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI2Vycm9ySGFuZGxlciI+PEI+ZXJyb3JIYW5kbGVyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5UaGUgYXBwbGljYXRpb24tc3VwcGxpZWQgZXJyb3IgaGFuZGxlciB0aGF0IGlzIG5vdGlmaWVkIHdoZW4gcGFyc2luZwogd2FybmluZ3MsIGVycm9ycywgb3IgZmF0YWwgZXJyb3JzIG9jY3VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9FcnJvck1lc3NhZ2VzLmh0bWwiPjxCPkVycm9yTWVzc2FnZXM8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9FcnJvck1lc3NhZ2VzLmh0bWwiPkVycm9yTWVzc2FnZXM8L0E+LjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2Ugb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycyBpbnN0ZWFkPC9JPjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Vycm9yTWVzc2FnZXMuaHRtbCNFcnJvck1lc3NhZ2VzKCkiPjxCPkVycm9yTWVzc2FnZXMoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRXJyb3JNZXNzYWdlcy5odG1sIj5FcnJvck1lc3NhZ2VzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwjZXJyb3JzIj48Qj5lcnJvcnM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+CjxERD5UaGUgYWNjdW11bGF0ZWQgc2V0IG9mIDxjb2RlPkFjdGlvbkVycm9yPC9jb2RlPiBvYmplY3RzIChyZXByZXNlbnRlZAogYXMgYW4gQXJyYXlMaXN0KSBmb3IgZWFjaCBwcm9wZXJ0eSwga2V5ZWQgYnkgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRXJyb3JNZXNzYWdlcy5odG1sI2Vycm9ycyI+PEI+ZXJyb3JzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Vycm9yTWVzc2FnZXMuaHRtbCI+RXJyb3JNZXNzYWdlczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1RoZSBhY2N1bXVsYXRlZCBzZXQgb2YgZXJyb3IgbWVzc2FnZSBrZXlzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Vycm9yc1RhZy5odG1sIj48Qj5FcnJvcnNUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4uPEREPkN1c3RvbSB0YWcgdGhhdCByZW5kZXJzIGVycm9yIG1lc3NhZ2VzIGlmIGFuIGFwcHJvcHJpYXRlIHJlcXVlc3QgYXR0cmlidXRlCiBoYXMgYmVlbiBjcmVhdGVkLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9FcnJvcnNUYWcuaHRtbCI+PEI+RXJyb3JzVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9FcnJvcnNUYWcuaHRtbCI+RXJyb3JzVGFnPC9BPi48REQ+Q3VzdG9tIHRhZyB0aGF0IHJlbmRlcnMgZXJyb3IgbWVzc2FnZXMgaWYgYW4gYXBwcm9wcmlhdGUgcmVxdWVzdCBhdHRyaWJ1dGUKIGhhcyBiZWVuIGNyZWF0ZWQuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FcnJvcnNUYWcuaHRtbCNFcnJvcnNUYWcoKSI+PEI+RXJyb3JzVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FcnJvcnNUYWcuaHRtbCI+RXJyb3JzVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9FcnJvcnNUYWcuaHRtbCNFcnJvcnNUYWcoKSI+PEI+RXJyb3JzVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI0VYQ0VQVElPTl9LRVkiPjxCPkVYQ0VQVElPTl9LRVk8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+QWN0aW9uPC9BPgo8REQ+VGhlIHJlcXVlc3QgYXR0cmlidXRlcyBrZXkgdW5kZXIgd2hpY2ggU3RydXRzIGN1c3RvbSB0YWdzIG1pZ2h0IHN0b3JlIGEKIDxjb2RlPlRocm93YWJsZTwvY29kZT4gdGhhdCBjYXVzZWQgdGhlbSB0byByZXBvcnQgYSBKc3BFeGNlcHRpb24gYXQKIHJ1bnRpbWUuCjwvREw+CjxIUj4KPEEgTkFNRT0iX0ZfIj48IS0tIC0tPjwvQT48SDI+CjxCPkY8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZmFjdG9yeSI+PEI+ZmFjdG9yeTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXM8L0E+CjxERD5UaGUgPGNvZGU+TWVzc2FnZVJlc291cmNlc0ZhY3Rvcnk8L2NvZGU+IHRoYXQgY3JlYXRlZCB0aGlzIGluc3RhbmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNmYWN0b3J5Q2xhc3MiPjxCPmZhY3RvcnlDbGFzczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+VGhlIEphdmEgY2xhc3MgbmFtZSBvZiB0aGUgPGNvZGU+TWVzc2FnZVJlc291cmNlc0ZhY3Rvcnk8L2NvZGU+CiBjbGFzcyBmb3IgdGhlIGFwcGxpY2F0aW9uIG1lc3NhZ2UgcmVzb3VyY2VzIGJ1bmRsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlc0ZhY3RvcnkuaHRtbCNmYWN0b3J5Q2xhc3MiPjxCPmZhY3RvcnlDbGFzczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlc0ZhY3RvcnkuaHRtbCI+TWVzc2FnZVJlc291cmNlc0ZhY3Rvcnk8L0E+CjxERD5UaGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWUgdG8gYmUgdXNlZCBmb3IKIDxjb2RlPk1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5PC9jb2RlPiBpbnN0YW5jZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwjZmFzdCI+PEI+ZmFzdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sIj5GYXN0SGFzaE1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0FyZSB3ZSBvcGVyYXRpbmcgaW4gImZhc3QiIG1vZGU/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNmYXN0Ij48Qj5mYXN0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0FyZSB3ZSBvcGVyYXRpbmcgaW4gImZhc3QiIG1vZGU/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjZmFzdCI+PEI+ZmFzdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0FyZSB3ZSBvcGVyYXRpbmcgaW4gImZhc3QiIG1vZGU/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+PEI+RmFzdEFycmF5TGlzdDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4uPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPkF0IHNvbWUgcG9pbnQgYWZ0ZXIgU3RydXRzIDEuMCBmaW5hbCwgd2lsbCBiZSByZXBsYWNlZCBieQogIGFuIGVxdWl2YWxlbnQgY2xhc3MgaW4gdGhlIEpha2FydGEgQ29tbW9ucyBDb2xsZWN0aW9ucyBwYWNrYWdlLjwvST48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjRmFzdEFycmF5TGlzdCgpIj48Qj5GYXN0QXJyYXlMaXN0KCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvbnN0cnVjdCBhIGFuIGVtcHR5IGxpc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNGYXN0QXJyYXlMaXN0KGphdmEudXRpbC5Db2xsZWN0aW9uKSI+PEI+RmFzdEFycmF5TGlzdChDb2xsZWN0aW9uKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29uc3RydWN0IGEgbGlzdCBjb250YWluaW5nIHRoZSBlbGVtZW50cyBvZiB0aGUgc3BlY2lmaWVkIGNvbGxlY3Rpb24sCiBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcmV0dXJuZWQgYnkgdGhlIGNvbGxlY3Rpb24ncyBpdGVyYXRvci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sI0Zhc3RBcnJheUxpc3QoaW50KSI+PEI+RmFzdEFycmF5TGlzdChpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwiPkZhc3RBcnJheUxpc3Q8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb25zdHJ1Y3QgYW4gZW1wdHkgbGlzdCB3aXRoIHRoZSBzcGVjaWZpZWQgY2FwYWNpdHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPjxCPkZhc3RIYXNoTWFwPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCI+RmFzdEhhc2hNYXA8L0E+LjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BdCBzb21lIHBvaW50IGFmdGVyIFN0cnV0cyAxLjAgZmluYWwsIHdpbGwgYmUgcmVwbGFjZWQgYnkKICBhbiBlcXVpdmFsZW50IGNsYXNzIGluIHRoZSBKYWthcnRhIENvbW1vbnMgQ29sbGVjdGlvbnMgcGFja2FnZS48L0k+PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCNGYXN0SGFzaE1hcCgpIj48Qj5GYXN0SGFzaE1hcCgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sIj5GYXN0SGFzaE1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvbnN0cnVjdCBhIGFuIGVtcHR5IG1hcC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCNGYXN0SGFzaE1hcChpbnQpIj48Qj5GYXN0SGFzaE1hcChpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sIj5GYXN0SGFzaE1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvbnN0cnVjdCBhbiBlbXB0eSBtYXAgd2l0aCB0aGUgc3BlY2lmaWVkIGNhcGFjaXR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sI0Zhc3RIYXNoTWFwKGludCwgZmxvYXQpIj48Qj5GYXN0SGFzaE1hcChpbnQsIGZsb2F0KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCI+RmFzdEhhc2hNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb25zdHJ1Y3QgYW4gZW1wdHkgbWFwIHdpdGggdGhlIHNwZWNpZmllZCBjYXBhY2l0eSBhbmQgbG9hZCBmYWN0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwjRmFzdEhhc2hNYXAoamF2YS51dGlsLk1hcCkiPjxCPkZhc3RIYXNoTWFwKE1hcCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPkZhc3RIYXNoTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29uc3RydWN0IGEgbmV3IG1hcCB3aXRoIHRoZSBzYW1lIG1hcHBpbmdzIGFzIHRoZSBzcGVjaWZpZWQgbWFwLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj48Qj5GYXN0VHJlZU1hcDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwiPkZhc3RUcmVlTWFwPC9BPi48REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXQgc29tZSBwb2ludCBhZnRlciBTdHJ1dHMgMS4wIGZpbmFsLCB3aWxsIGJlIHJlcGxhY2VkIGJ5CiAgYW4gZXF1aXZhbGVudCBjbGFzcyBpbiB0aGUgSmFrYXJ0YSBDb21tb25zIENvbGxlY3Rpb25zIHBhY2thZ2UuPC9JPjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjRmFzdFRyZWVNYXAoKSI+PEI+RmFzdFRyZWVNYXAoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCI+RmFzdFRyZWVNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb25zdHJ1Y3QgYSBhbiBlbXB0eSBtYXAuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjRmFzdFRyZWVNYXAoamF2YS51dGlsLkNvbXBhcmF0b3IpIj48Qj5GYXN0VHJlZU1hcChDb21wYXJhdG9yKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCI+RmFzdFRyZWVNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb25zdHJ1Y3QgYW4gZW1wdHkgbWFwIHdpdGggdGhlIHNwZWNpZmllZCBjb21wYXJhdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sI0Zhc3RUcmVlTWFwKGphdmEudXRpbC5NYXApIj48Qj5GYXN0VHJlZU1hcChNYXApPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvbnN0cnVjdCBhIG5ldyBtYXAgd2l0aCB0aGUgc2FtZSBtYXBwaW5ncyBhcyB0aGUgc3BlY2lmaWVkIG1hcCwKIHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIGtleXMncyBuYXR1cmFsIG9yZGVyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjRmFzdFRyZWVNYXAoamF2YS51dGlsLlNvcnRlZE1hcCkiPjxCPkZhc3RUcmVlTWFwKFNvcnRlZE1hcCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwiPkZhc3RUcmVlTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29uc3RydWN0IGEgbmV3IG1hcCB3aXRoIHRoZSBzYW1lIG1hcHBpbmdzIGFzIHRoZSBzcGVjaWZpZWQgbWFwLAogc29ydGVkIGFjY29yZGluZyB0byB0aGUgc2FtZSBvcmRlcmluZwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNmYXRhbEVycm9yKG9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uKSI+PEI+ZmF0YWxFcnJvcihTQVhQYXJzZUV4Y2VwdGlvbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5Gb3J3YXJkIG5vdGlmaWNhdGlvbiBvZiBhIGZhdGFsIHBhcnNpbmcgZXJyb3IgdG8gdGhlIGFwcGxpY2F0aW9uCiBzdXBwbGllZCBlcnJvciBoYW5kbGVyIChpZiBhbnkpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCNmaWxlIj48Qj5maWxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwiPk11bHRpcGFydEVsZW1lbnQ8L0E+CjxERD5UaGUgZWxlbWVudCdzIGRhdGEgcmVwcmVzZW50ZWQgaW4gYSAocG9zc2libHkgdGVtcG9yYXJ5KSBmaWxlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwjZmlsZUVsZW1lbnRzIj48Qj5maWxlRWxlbWVudHM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sIj5EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXI8L0E+CjxERD5BIEhhc2h0YWJsZSByZXByZXNlbnRpbmcgdGhlIGZvcm0gZmlsZXMgdXBsb2FkZWQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sI2ZpbGVOYW1lIj48Qj5maWxlTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza0ZpbGUuaHRtbCI+RGlza0ZpbGU8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgZmlsZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCNmaWxlTmFtZSI+PEI+ZmlsZU5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPlRoZSBlbGVtZW50J3MgZmlsZW5hbWUsIG51bGwgZm9yIHRleHQgZWxlbWVudHMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sI2ZpbGVQYXRoIj48Qj5maWxlUGF0aDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza0ZpbGUuaHRtbCI+RGlza0ZpbGU8L0E+CjxERD5UaGUgZmlsZXBhdGggdG8gdGhlIHRlbXBvcmFyeSBmaWxlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza0ZpbGUuaHRtbCNmaWxlU2l6ZSI+PEI+ZmlsZVNpemU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tGaWxlLmh0bWwiPkRpc2tGaWxlPC9BPgo8REQ+VGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGZpbGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9GaWxlVGFnLmh0bWwiPjxCPkZpbGVUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRmlsZVRhZy5odG1sIj5GaWxlVGFnPC9BPi48REQ+Q3VzdG9tIHRhZyBmb3IgaW5wdXQgZmllbGRzIG9mIHR5cGUgImZpbGUiLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9GaWxlVGFnLmh0bWwiPjxCPkZpbGVUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ZpbGVUYWcuaHRtbCI+RmlsZVRhZzwvQT4uPEREPkN1c3RvbSB0YWcgZm9yIGlucHV0IGZpZWxkcyBvZiB0eXBlICJmaWxlIi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0ZpbGVUYWcuaHRtbCNGaWxlVGFnKCkiPjxCPkZpbGVUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0ZpbGVUYWcuaHRtbCI+RmlsZVRhZzwvQT4KPEREPkNvbnN0cnVjdCBhIG5ldyBpbnN0YW5jZSBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ZpbGVUYWcuaHRtbCNGaWxlVGFnKCkiPjxCPkZpbGVUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9GaWxlVGFnLmh0bWwiPkZpbGVUYWc8L0E+CjxERD5Db25zdHJ1Y3QgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sI2ZpbGwoKSI+PEI+ZmlsbCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sIj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtPC9BPgo8REQ+RmlsbHMgdGhlIGJ1ZmZlciB3aXRoIGRhdGEgZnJvbSB0aGUgdW5kZXJseWluZyBpbnB1dFN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwjZmlsdGVyIj48Qj5maWx0ZXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sIj5Xcml0ZVRhZzwvQT4KPEREPkZpbHRlciB0aGUgcmVuZGVyZWQgb3V0cHV0IGZvciBjaGFyYWN0ZXJzIHRoYXQgYXJlIHNlbnNpdGl2ZSBpbiBIVE1MPwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXNwb25zZVV0aWxzLmh0bWwjZmlsdGVyKGphdmEubGFuZy5TdHJpbmcpIj48Qj5maWx0ZXIoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Jlc3BvbnNlVXRpbHMuaHRtbCI+UmVzcG9uc2VVdGlsczwvQT4KPEREPkZpbHRlciB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3IgY2hhcmFjdGVycyB0aGF0IGFyZSBzZW5zdGl2ZSB0bwogSFRNTCBpbnRlcnByZXRlcnMsIHJldHVybmluZyB0aGUgc3RyaW5nIHdpdGggdGhlc2UgY2hhcmFjdGVycyByZXBsYWNlZAogYnkgdGhlIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGVudGl0aWVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFZhbHVlU3RyZWFtLmh0bWwjZmluYWxCb3VuZGFyeVJlYWNoZWQiPjxCPmZpbmFsQm91bmRhcnlSZWFjaGVkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sIj5NdWx0aXBhcnRWYWx1ZVN0cmVhbTwvQT4KPEREPmlzIHRoZSBib3VuZGFyeSBmb3VuZCBhIGZpbmFsIGJvdW5kYXJ5Pwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNmaW5kRGF0YVNvdXJjZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZmluZERhdGFTb3VyY2UoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlJldHVybiBhIEpEQkMgZGF0YSBzb3VyY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYXBwbGljYXRpb24sIGlmIGFueS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjZmluZEZvcm1CZWFuKGphdmEubGFuZy5TdHJpbmcpIj48Qj5maW5kRm9ybUJlYW4oU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlJldHVybiB0aGUgZm9ybSBiZWFuIGRlZmluaXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKIGxvZ2ljYWwgbmFtZSwgaWYgYW55OyBvdGhlcndpc2UgcmV0dXJuIDxjb2RlPm51bGw8L2NvZGU+Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm1CZWFucy5odG1sI2ZpbmRGb3JtQmVhbihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZmluZEZvcm1CZWFuKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbnMuaHRtbCI+QWN0aW9uRm9ybUJlYW5zPC9BPgo8REQ+UmV0dXJuIHRoZSBmb3JtQmVhbiBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBsb2dpY2FsIG5hbWUsCiBpZiBhbnk7IG90aGVyd2lzZSByZXR1cm4gPGNvZGU+bnVsbDwvY29kZT4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW5zLmh0bWwjZmluZEZvcm1CZWFucygpIj48Qj5maW5kRm9ybUJlYW5zKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbnMuaHRtbCI+QWN0aW9uRm9ybUJlYW5zPC9BPgo8REQ+UmV0dXJuIHRoZSBzZXQgb2YgbmFtZXMgZm9yIGZvcm0gYmVhbnMgZGVmaW5lZCBpbiB0aGlzIGNvbGxlY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI2ZpbmRGb3J3YXJkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5maW5kRm9yd2FyZChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+UmV0dXJuIHRoZSA8Y29kZT5BY3Rpb25Gb3J3YXJkPC9jb2RlPiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSwKIGlmIGFueTsgb3RoZXJ3aXNlIHJldHVybiA8Y29kZT5udWxsPC9jb2RlPi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjZmluZEZvcndhcmQoamF2YS5sYW5nLlN0cmluZykiPjxCPmZpbmRGb3J3YXJkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5SZXR1cm4gdGhlIGZvcndhcmRpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgbG9naWNhbCBuYW1lLAogaWYgYW55OyBvdGhlcndpc2UgcmV0dXJuIDxjb2RlPm51bGw8L2NvZGU+Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmRzLmh0bWwjZmluZEZvcndhcmQoamF2YS5sYW5nLlN0cmluZykiPjxCPmZpbmRGb3J3YXJkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkcy5odG1sIj5BY3Rpb25Gb3J3YXJkczwvQT4KPEREPlJldHVybiB0aGUgZm9yd2FyZGluZyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBsb2dpY2FsIG5hbWUsCiBpZiBhbnk7IG90aGVyd2lzZSByZXR1cm4gPGNvZGU+bnVsbDwvY29kZT4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI2ZpbmRGb3J3YXJkcygpIj48Qj5maW5kRm9yd2FyZHMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlJldHVybiB0aGUgbG9naWNhbCBuYW1lcyBvZiBhbGwgbG9jYWxseSBkZWZpbmVkIGZvcndhcmRzIGZvciB0aGlzCiBtYXBwaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmRzLmh0bWwjZmluZEZvcndhcmRzKCkiPjxCPmZpbmRGb3J3YXJkcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZHMuaHRtbCI+QWN0aW9uRm9yd2FyZHM8L0E+CjxERD5SZXR1cm4gdGhlIHNldCBvZiBsb2dpY2FsIG5hbWVzIGZvciBmb3J3YXJkcyBkZWZpbmVkIGluIHRoaXMgY29sbGVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjZmluZE1hcHBpbmcoamF2YS5sYW5nLlN0cmluZykiPjxCPmZpbmRNYXBwaW5nKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5SZXR1cm4gdGhlIG1hcHBpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgcmVxdWVzdCBwYXRoLCBpZiBhbnk7CiBvdGhlcndpc2UgcmV0dXJuIDxjb2RlPm51bGw8L2NvZGU+Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmdzLmh0bWwjZmluZE1hcHBpbmcoamF2YS5sYW5nLlN0cmluZykiPjxCPmZpbmRNYXBwaW5nKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sIj5BY3Rpb25NYXBwaW5nczwvQT4KPEREPlJldHVybiB0aGUgbWFwcGluZyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBsb2dpY2FsIG5hbWUsCiBpZiBhbnk7IG90aGVyd2lzZSByZXR1cm4gPGNvZGU+bnVsbDwvY29kZT4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZ3MuaHRtbCNmaW5kTWFwcGluZ3MoKSI+PEI+ZmluZE1hcHBpbmdzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sIj5BY3Rpb25NYXBwaW5nczwvQT4KPEREPlJldHVybiB0aGUgc2V0IG9mIHBhdGhzIGZvciBtYXBwaW5ncyBkZWZpbmVkIGluIHRoaXMgY29sbGVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1J1bGUuaHRtbCNmaW5pc2goKSI+PEI+ZmluaXNoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvUnVsZS5odG1sIj5SdWxlPC9BPgo8REQ+VGhpcyBtZXRob2QgaXMgY2FsbGVkIGFmdGVyIGFsbCBwYXJzaW5nIG1ldGhvZHMgaGF2ZSBiZWVuCiBjYWxsZWQsIHRvIGFsbG93IFJ1bGVzIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZGF0YS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL09iamVjdENyZWF0ZVJ1bGUuaHRtbCNmaW5pc2goKSI+PEI+ZmluaXNoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvT2JqZWN0Q3JlYXRlUnVsZS5odG1sIj5PYmplY3RDcmVhdGVSdWxlPC9BPgo8REQ+Q2xlYW4gdXAgYWZ0ZXIgcGFyc2luZyBpcyBjb21wbGV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldFRvcFJ1bGUuaHRtbCNmaW5pc2goKSI+PEI+ZmluaXNoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0VG9wUnVsZS5odG1sIj5TZXRUb3BSdWxlPC9BPgo8REQ+Q2xlYW4gdXAgYWZ0ZXIgcGFyc2luZyBpcyBjb21wbGV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldE5leHRSdWxlLmh0bWwjZmluaXNoKCkiPjxCPmZpbmlzaCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldE5leHRSdWxlLmh0bWwiPlNldE5leHRSdWxlPC9BPgo8REQ+Q2xlYW4gdXAgYWZ0ZXIgcGFyc2luZyBpcyBjb21wbGV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxQYXJhbVJ1bGUuaHRtbCNmaW5pc2goKSI+PEI+ZmluaXNoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbFBhcmFtUnVsZS5odG1sIj5DYWxsUGFyYW1SdWxlPC9BPgo8REQ+Q2xlYW4gdXAgYWZ0ZXIgcGFyc2luZyBpcyBjb21wbGV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxNZXRob2RSdWxlLmh0bWwjZmluaXNoKCkiPjxCPmZpbmlzaCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxNZXRob2RSdWxlLmh0bWwiPkNhbGxNZXRob2RSdWxlPC9BPgo8REQ+Q2xlYW4gdXAgYWZ0ZXIgcGFyc2luZyBpcyBjb21wbGV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI2ZpbmlzaCgpIj48Qj5maW5pc2goKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQT4KPEREPlRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB3aGVuIGEgc3VjY2Vzc2Z1bCBmb3JtIHBvc3QKIGhhcyBiZWVuIG1hZGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwjZmluaXNoKCkiPjxCPmZpbmlzaCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwiPkRpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQT4KPEREPkNhbGxzIG9uIDxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCNyb2xsYmFjaygpIj48Q09ERT5yb2xsYmFjaygpPC9DT0RFPjwvQT4gdG8gZGVsZXRlCiB0ZW1wb3JhcnkgZmlsZXMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCNmaXJzdEtleSgpIj48Qj5maXJzdEtleSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiB0aGUgZmlyc3QgKGxvd2VzdCkga2V5IGN1cnJlbnRseSBpbiB0aGlzIHNvcnRlZCBtYXAuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvR2V0VGFnLmh0bWwjZmx1c2giPjxCPmZsdXNoPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9HZXRUYWcuaHRtbCI+R2V0VGFnPC9BPgo8REQ+U2hvdWxkIHdlIGZsdXNoIGJlZm9yZSBpbmNsdWRpbmcgdGhpcyB0ZXh0Pwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sI2ZsdXNoKCkiPjxCPmZsdXNoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+Rmx1c2ggdGhlIHN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjZm9jdXMiPjxCPmZvY3VzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgZmllbGQgdG8gcmVjZWl2ZSBmb2N1cywgaWYgYW55Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI2ZvY3VzIj48Qj5mb2N1czwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBmaWVsZCB0byByZWNlaXZlIGZvY3VzLCBpZiBhbnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjRk9STV9CRUFOU19LRVkiPjxCPkZPUk1fQkVBTlNfS0VZPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwiPkFjdGlvbjwvQT4KPEREPlRoZSBjb250ZXh0IGF0dHJpYnV0ZXMga2V5IHVuZGVyIHdoaWNoIG91cgogPGNvZGU+b3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm1CZWFuczwvY29kZT4gY29sbGVjdGlvbgogaXMgbm9ybWFsbHkgc3RvcmVkLCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aGVuIGluaXRpYWxpemluZyBvdXIKIEFjdGlvblNlcnZsZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ29uc3RhbnRzLmh0bWwjRk9STV9LRVkiPjxCPkZPUk1fS0VZPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ29uc3RhbnRzLmh0bWwiPkNvbnN0YW50czwvQT4KPEREPlRoZSBhdHRyaWJ1dGUga2V5IGZvciB0aGUgZm9ybSB0YWcgaXRzZWxmLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ29uc3RhbnRzLmh0bWwjRk9STV9LRVkiPjxCPkZPUk1fS0VZPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NvbnN0YW50cy5odG1sIj5Db25zdGFudHM8L0E+CjxERD5UaGUgYXR0cmlidXRlIGtleSBmb3IgdGhlIGZvcm0gdGFnIGl0c2VsZi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sI2Zvcm1hdHMiPjxCPmZvcm1hdHM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+VGhlIHNldCBvZiBwcmV2aW91c2x5IGNyZWF0ZWQgTWVzc2FnZUZvcm1hdCBvYmplY3RzLCBrZXllZCBieSB0aGUKIGtleSBjb21wdXRlZCBpbiA8Y29kZT5tZXNzYWdlS2V5KCk8L2NvZGU+Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwjZm9ybUJlYW4iPjxCPmZvcm1CZWFuPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwiPlN0cnV0c1RhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSA8Y29kZT5BY3Rpb25Gb3JtQmVhbjwvY29kZT4gb2JqZWN0IHRvIGJlIGV4cG9zZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2Zvcm1CZWFuQ2xhc3MiPjxCPmZvcm1CZWFuQ2xhc3M8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSBKYXZhIGNsYXNzIG5hbWUgb2YgdGhlIEFjdGlvbkZvcm1CZWFuIGltcGxlbWVudGF0aW9uIGNsYXNzIHRvIHVzZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjZm9ybUJlYW5zIj48Qj5mb3JtQmVhbnM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSBnbG9iYWwgQWN0aW9uRm9ybUJlYW4gY29sbGVjdGlvbiBmb3IgdGhpcyBjb250cm9sbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm1CZWFucy5odG1sI2Zvcm1CZWFucyI+PEI+Zm9ybUJlYW5zPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbnMuaHRtbCI+QWN0aW9uRm9ybUJlYW5zPC9BPgo8REQ+VGhlIGNvbGxlY3Rpb24gb2YgQWN0aW9uRm9ybUJlYW4gaW5zdGFuY2VzLCBrZXllZCBieSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Zvcm1GaWxlLmh0bWwiPjxCPkZvcm1GaWxlPC9CPjwvQT4gLSBpbnRlcmZhY2Ugb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9Gb3JtRmlsZS5odG1sIj5Gb3JtRmlsZTwvQT4uPEREPlRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZGVmaW5lIGEgZmlsZSB1cGxvYWRlZCBieSBhIGNsaWVudC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+PEI+Rm9ybVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+LjxERD5DdXN0b20gdGFnIHRoYXQgcmVwcmVzZW50cyBhbiBpbnB1dCBmb3JtLCBhc3NvY2lhdGVkIHdpdGggYSBiZWFuIHdob3NlCiBwcm9wZXJ0aWVzIGNvcnJlc3BvbmQgdG8gdGhlIHZhcmlvdXMgZmllbGRzIG9mIHRoZSBmb3JtLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPjxCPkZvcm1UYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4uPEREPkN1c3RvbSB0YWcgdGhhdCByZXByZXNlbnRzIGFuIGlucHV0IGZvcm0sIGFzc29jaWF0ZWQgd2l0aCBhIGJlYW4gd2hvc2UKIHByb3BlcnRpZXMgY29ycmVzcG9uZCB0byB0aGUgdmFyaW91cyBmaWVsZHMgb2YgdGhlIGZvcm0uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjRm9ybVRhZygpIj48Qj5Gb3JtVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNGb3JtVGFnKCkiPjxCPkZvcm1UYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjZm9yd2FyZCI+PEI+Zm9yd2FyZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+VGhlIGNvbnRleHQgcmVsYXRpdmUgcGF0aCBvZiB0aGUgc2VydmxldCBvciBKU1AgcmVzb3VyY2UgKHRvIGJlIGNhbGxlZAogdmlhIDxjb2RlPlJlcXVlc3REaXNwYXRjaGVyLmZvcndhcmQoKTwvY29kZT4pIHRoYXQgd2lsbCBwcm9jZXNzIHRoaXMKIHJlcXVlc3QsIHJhdGhlciB0aGFuIGluc3RhbnRpYXRpbmcgYW5kIGNhbGxpbmcgdGhlIEFjdGlvbiBjbGFzcyB0aGF0IGlzCiBzcGVjaWZpZWQgYnkgdGhlIDxjb2RlPnR5cGU8L2NvZGU+IGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwjZm9yd2FyZCI+PEI+Zm9yd2FyZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+VGhlIGxvZ2ljYWwgZm9yd2FyZCBuYW1lIGZyb20gd2hpY2ggdG8gcmV0cmlldmUgdGhlIGh5cGVybGluayBVUkkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGluazFUYWcuaHRtbCNmb3J3YXJkIj48Qj5mb3J3YXJkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sIj5MaW5rMVRhZzwvQT4KPEREPlRoZSBsb2dpY2FsIGZvcndhcmQgbmFtZSBmcm9tIHdoaWNoIHRvIHJldHJpZXZlIHRoZSBoeXBlcmxpbmsgVVJJLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sI2ZvcndhcmQiPjxCPmZvcndhcmQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgZ2xvYmFsIDxjb2RlPkFjdGlvbkZvcndhcmQ8L2NvZGU+IHRoYXQgY29udGFpbnMgYQogcGF0aCB0byBvdXIgcmVxdWVzdGVkIHJlc291cmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwjZm9yd2FyZCI+PEI+Zm9yd2FyZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1N0cnV0c1RhZy5odG1sIj5TdHJ1dHNUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgPGNvZGU+QWN0aW9uRm9yd2FyZDwvY29kZT4gb2JqZWN0IHRvIGJlIGV4cG9zZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjZm9yd2FyZCI+PEI+Zm9yd2FyZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPlRoZSBsb2dpY2FsIGZvcndhcmQgbmFtZSBmcm9tIHdoaWNoIHRvIHJldHJpZXZlIHRoZSBoeXBlcmxpbmsgVVJJLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwjZm9yd2FyZCI+PEI+Zm9yd2FyZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD5UaGUgbG9naWNhbCBmb3J3YXJkIG5hbWUgZnJvbSB3aGljaCB0byByZXRyaWV2ZSB0aGUgcmVkaXJlY3QgVVJJLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9Gb3J3YXJkQWN0aW9uLmh0bWwiPjxCPkZvcndhcmRBY3Rpb248L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9Gb3J3YXJkQWN0aW9uLmh0bWwiPkZvcndhcmRBY3Rpb248L0E+LjxERD5BbiA8c3Ryb25nPkFjdGlvbjwvc3Ryb25nPiB0aGF0IGZvcndhcmRzIHRvIHRoZSBjb250ZXh0LXJlbGF0aXZlCiBVUkkgc3BlY2lmaWVkIGJ5IHRoZSA8Y29kZT5wYXJhbWV0ZXI8L2NvZGU+IHByb3BlcnR5IG9mIG91ciBhc3NvY2lhdGVkCiA8Y29kZT5BY3Rpb25NYXBwaW5nPC9jb2RlPi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9Gb3J3YXJkQWN0aW9uLmh0bWwjRm9yd2FyZEFjdGlvbigpIj48Qj5Gb3J3YXJkQWN0aW9uKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0ZvcndhcmRBY3Rpb24uaHRtbCI+Rm9yd2FyZEFjdGlvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNmb3J3YXJkQ2xhc3MiPjxCPmZvcndhcmRDbGFzczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+VGhlIEphdmEgY2xhc3MgbmFtZSBvZiB0aGUgQWN0aW9uRm9yd2FyZCBpbXBsZW1lbnRhdGlvbiBjbGFzcyB0byB1c2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vRm9yd2FyZGluZ0FjdGlvbkZvcndhcmQuaHRtbCI+PEI+Rm9yd2FyZGluZ0FjdGlvbkZvcndhcmQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vRm9yd2FyZGluZ0FjdGlvbkZvcndhcmQuaHRtbCI+Rm9yd2FyZGluZ0FjdGlvbkZvcndhcmQ8L0E+LjxERD5BIHN1YmNsYXNzIG9mIDxzdHJvbmc+QWN0aW9uRm9yd2FyZDwvc3Ryb25nPiB0aGF0IGRlZmF1bHRzIHRoZQogPGNvZGU+cmVkaXJlY3Q8L2NvZGU+IGF0dHJpYnV0ZSB0byA8Y29kZT5mYWxzZTwvY29kZT4uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9Gb3J3YXJkaW5nQWN0aW9uRm9yd2FyZC5odG1sI0ZvcndhcmRpbmdBY3Rpb25Gb3J3YXJkKCkiPjxCPkZvcndhcmRpbmdBY3Rpb25Gb3J3YXJkKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9Gb3J3YXJkaW5nQWN0aW9uRm9yd2FyZC5odG1sIj5Gb3J3YXJkaW5nQWN0aW9uRm9yd2FyZDwvQT4KPEREPkNvbnN0cnVjdCBhIG5ldyBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgdmFsdWVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0ZvcndhcmRpbmdBY3Rpb25Gb3J3YXJkLmh0bWwjRm9yd2FyZGluZ0FjdGlvbkZvcndhcmQoamF2YS5sYW5nLlN0cmluZykiPjxCPkZvcndhcmRpbmdBY3Rpb25Gb3J3YXJkKFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9Gb3J3YXJkaW5nQWN0aW9uRm9yd2FyZC5odG1sIj5Gb3J3YXJkaW5nQWN0aW9uRm9yd2FyZDwvQT4KPEREPkNvbnN0cnVjdCBhIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjZm9yd2FyZHMiPjxCPmZvcndhcmRzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5UaGUgc2V0IG9mIEFjdGlvbkZvcndhcmQgb2JqZWN0cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBtYXBwaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNmb3J3YXJkcyI+PEI+Zm9yd2FyZHM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSBnbG9iYWwgQWN0aW9uRm9yd2FyZCBjb2xsZWN0aW9uIGZvciB0aGlzIGNvbnRyb2xsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZHMuaHRtbCNmb3J3YXJkcyI+PEI+Zm9yd2FyZHM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmRzLmh0bWwiPkFjdGlvbkZvcndhcmRzPC9BPgo8REQ+VGhlIGNvbGxlY3Rpb24gb2YgQWN0aW9uRm9yd2FyZCBpbnN0YW5jZXMsIGtleWVkIGJ5IGxvZ2ljYWwgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNGT1JXQVJEU19LRVkiPjxCPkZPUldBUkRTX0tFWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD5UaGUgY29udGV4dCBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCBvdXIKIDxjb2RlPm9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3J3YXJkczwvY29kZT4gY29sbGVjdGlvbgogaXMgbm9ybWFsbHkgc3RvcmVkLCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aGVuIGluaXRpYWxpemluZyBvdXIKIEFjdGlvblNlcnZsZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9yd2FyZFRhZy5odG1sIj48Qj5Gb3J3YXJkVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0ZvcndhcmRUYWcuaHRtbCI+Rm9yd2FyZFRhZzwvQT4uPEREPlBlcmZvcm0gYSBmb3J3YXJkIG9yIHJlZGlyZWN0IHRvIGEgcGFnZSB0aGF0IGlzIGxvb2tlZCB1cCBpbiB0aGUgZ2xvYmFsCiBBY3Rpb25Gb3J3YXJkcyBjb2xsZWN0aW9uIGFzc29jaWF0ZWQgd2l0aCBvdXIgYXBwbGljYXRpb24uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Gb3J3YXJkVGFnLmh0bWwiPjxCPkZvcndhcmRUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvRm9yd2FyZFRhZy5odG1sIj5Gb3J3YXJkVGFnPC9BPi48REQ+UGVyZm9ybSBhIGZvcndhcmQgb3IgcmVkaXJlY3QgdG8gYSBwYWdlIHRoYXQgaXMgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwKIEFjdGlvbkZvcndhcmRzIGNvbGxlY3Rpb24gYXNzb2NpYXRlZCB3aXRoIG91ciBhcHBsaWNhdGlvbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0ZvcndhcmRUYWcuaHRtbCNGb3J3YXJkVGFnKCkiPjxCPkZvcndhcmRUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0ZvcndhcmRUYWcuaHRtbCI+Rm9yd2FyZFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0ZvcndhcmRUYWcuaHRtbCNGb3J3YXJkVGFnKCkiPjxCPkZvcndhcmRUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0ZvcndhcmRUYWcuaHRtbCI+Rm9yd2FyZFRhZzwvQT4KPEREPiZuYnNwOwo8L0RMPgo8SFI+CjxBIE5BTUU9Il9HXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5HPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNnZW5lcmF0ZVRva2VuKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Qj5nZW5lcmF0ZVRva2VuKEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+QWN0aW9uPC9BPgo8REQ+R2VuZXJhdGUgYSBuZXcgdHJhbnNhY3Rpb24gdG9rZW4sIHRvIGJlIHVzZWQgZm9yIGVuZm9yY2luZyBhIHNpbmdsZQogcmVxdWVzdCBmb3IgYSBwYXJ0aWN1bGFyIHRyYW5zYWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sIj48Qj5HZW5lcmljQ29ubmVjdGlvbjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwiPkdlbmVyaWNDb25uZWN0aW9uPC9BPi48REQ+R2VuZXJpYyB3cmFwcGVyIGltcGxlbWVudGF0aW9uIG9mIGEgPHN0cm9uZz5Db25uZWN0aW9uPC9zdHJvbmc+IHRoYXQKIHdvcmtzIHdpdGggPGNvZGU+R2VuZXJpY0RhdGFTb3VyY2U8L2NvZGU+IHRvIHdyYXAgY29ubmVjdGlvbnMgZm9yIGFueQogSkRCQyBkcml2ZXIuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCNHZW5lcmljQ29ubmVjdGlvbihvcmcuYXBhY2hlLnN0cnV0cy51dGlsLkdlbmVyaWNEYXRhU291cmNlLCBqYXZhLnNxbC5Db25uZWN0aW9uLCBib29sZWFuLCBib29sZWFuKSI+PEI+R2VuZXJpY0Nvbm5lY3Rpb24oR2VuZXJpY0RhdGFTb3VyY2UsIENvbm5lY3Rpb24sIGJvb2xlYW4sIGJvb2xlYW4pPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sIj5HZW5lcmljQ29ubmVjdGlvbjwvQT4KPEREPkNvbnN0cnVjdCBhIG5ldyBHZW5lcmljQ29ubmVjdGlvbiB3cmFwcGluZyB0aGUgc3BlY2lmaWVkIGNvbm5lY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPjxCPkdlbmVyaWNEYXRhU291cmNlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+LjxERD5HZW5lcmljIGRhdGEgc291cmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSA8Y29kZT5EYXRhU291cmNlPC9jb2RlPgogaW50ZXJmYWNlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjR2VuZXJpY0RhdGFTb3VyY2UoKSI+PEI+R2VuZXJpY0RhdGFTb3VyY2UoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCNnZXQoKSI+PEI+Z2V0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPgo8REQ+UmV0dXJuIHRoZSBzZXQgb2YgYWxsIHJlY29yZGVkIGVycm9yIG1lc3NhZ2VzLCB3aXRob3V0IGRpc3RpbmN0aW9uCiBieSB3aGljaCBwcm9wZXJ0eSB0aGUgbWVzc2FnZXMgYXJlIGFzc29jaWF0ZWQgd2l0aC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sI2dldChpbnQpIj48Qj5nZXQoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSBlbGVtZW50IGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gdGhlIGxpc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwjZ2V0KGphdmEubGFuZy5PYmplY3QpIj48Qj5nZXQoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCI+RmFzdEhhc2hNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gdGhlIHZhbHVlIHRvIHdoaWNoIHRoaXMgbWFwIG1hcHMgdGhlIHNwZWNpZmllZCBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjZ2V0KGphdmEubGFuZy5PYmplY3QpIj48Qj5nZXQoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCI+RmFzdFRyZWVNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gdGhlIHZhbHVlIHRvIHdoaWNoIHRoaXMgbWFwIG1hcHMgdGhlIHNwZWNpZmllZCBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwjZ2V0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+CjxERD5SZXR1cm4gdGhlIHNldCBvZiBlcnJvciBtZXNzYWdlcyByZWxhdGVkIHRvIGEgc3BlY2lmaWMgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50TWFwLmh0bWwjZ2V0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50TWFwLmh0bWwiPkNvbnRlbnRNYXA8L0E+CjxERD5SZXR1cm5zIHRoZSBjb250ZW50IGFzc29jaWF0ZWQgd2l0aCBuYW1lCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUZpZWxkVGFnLmh0bWwjZ2V0QWNjZXB0KCkiPjxCPmdldEFjY2VwdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUZpZWxkVGFnLmh0bWwiPkJhc2VGaWVsZFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwjZ2V0QWNjZXB0KCkiPjxCPmdldEFjY2VwdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VGaWVsZFRhZy5odG1sIj5CYXNlRmllbGRUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI2dldEFjY2Vzc2libGVNZXRob2QoamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kKSI+PEI+Z2V0QWNjZXNzaWJsZU1ldGhvZChNZXRob2QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIGFuIGFjY2Vzc2libGUgbWV0aG9kICh0aGF0IGlzLCBvbmUgdGhhdCBjYW4gYmUgaW52b2tlZCB2aWEKIHJlZmxlY3Rpb24pIHRoYXQgaW1wbGVtZW50cyB0aGUgc3BlY2lmaWVkIE1ldGhvZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI2dldEFjY2Vzc2libGVNZXRob2RGcm9tSW50ZXJmYWNlTmVzdChqYXZhLmxhbmcuQ2xhc3MsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzc1tdKSI+PEI+Z2V0QWNjZXNzaWJsZU1ldGhvZEZyb21JbnRlcmZhY2VOZXN0KENsYXNzLCBTdHJpbmcsIENsYXNzW10pPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIGFuIGFjY2Vzc2libGUgbWV0aG9kICh0aGF0IGlzLCBvbmUgdGhhdCBjYW4gYmUgaW52b2tlZCB2aWEKIHJlZmxlY3Rpb24pIHRoYXQgaW1wbGVtZW50cyB0aGUgc3BlY2lmaWVkIG1ldGhvZCwgYnkgc2Nhbm5pbmcgdGhyb3VnaAogYWxsIGltcGxlbWVudGVkIGludGVyZmFjZXMgYW5kIHN1YmludGVyZmFjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI2dldEFjY2Vzc2tleSgpIj48Qj5nZXRBY2Nlc3NrZXkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIGFjY2Vzc0tleSBjaGFyYWN0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRBY2Nlc3NLZXkoKSI+PEI+Z2V0QWNjZXNzS2V5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIGFjY2Vzc0tleSBjaGFyYWN0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI2dldEFjdGlvbigpIj48Qj5nZXRBY3Rpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJldHVybiB0aGUgYWN0aW9uIFVSTCB0byB3aGljaCB0aGlzIGZvcm0gc2hvdWxkIGJlIHN1Ym1pdHRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNnZXRBY3Rpb24oKSI+PEI+Z2V0QWN0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBhY3Rpb24gVVJMIHRvIHdoaWNoIHRoaXMgZm9ybSBzaG91bGQgYmUgc3VibWl0dGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNnZXRBY3Rpb25DbGFzcygpIj48Qj5nZXRBY3Rpb25DbGFzcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIGdldFR5cGUoKSBpbnN0ZWFkPC9JPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI2dldEFjdGlvbk1hcHBpbmdOYW1lKCkiPjxCPmdldEFjdGlvbk1hcHBpbmdOYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBmb3JtIGFjdGlvbiBjb252ZXJ0ZWQgaW50byBhbiBhY3Rpb24gbWFwcGluZyBwYXRoLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI2dldEFjdGlvbk1hcHBpbmdVUkwoKSI+PEI+Z2V0QWN0aW9uTWFwcGluZ1VSTCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJldHVybiB0aGUgZm9ybSBhY3Rpb24gY29udmVydGVkIGludG8gYSBzZXJ2ZXItcmVsYXRpdmUgVVJMLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI2dldEFjdGl2ZUNvdW50KCkiPjxCPmdldEFjdGl2ZUNvdW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwjZ2V0QWN0dWFsQ29udGVudCgpIj48Qj5nZXRBY3R1YWxDb250ZW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9QdXRUYWcuaHRtbCI+UHV0VGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgY29udGVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNnZXRBbGlnbigpIj48Qj5nZXRBbGlnbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI2dldEFsbEVsZW1lbnRzKCkiPjxCPmdldEFsbEVsZW1lbnRzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXI8L0E+CjxERD5UaGlzIG1ldGhvZCByZXR1cm5zIGFsbCBlbGVtZW50cyBvZiBhIG11bHRpcGFydCByZXF1ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI2dldEFsbEVsZW1lbnRzKCkiPjxCPmdldEFsbEVsZW1lbnRzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+RGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNnZXRBbHQoKSI+PEI+Z2V0QWx0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNnZXRBbHQoKSI+PEI+Z2V0QWx0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+SW1hZ2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2dldEFsdEtleSgpIj48Qj5nZXRBbHRLZXkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sI2dldEFsdEtleSgpIj48Qj5nZXRBbHRLZXkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sIj5JbWFnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL1B1dFRhZy5odG1sI2dldEFuY2VzdG9yKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRBbmNlc3RvcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwiPlB1dFRhZzwvQT4KPEREPkNvbnZlbmllbmNlIG1ldGhvZCBmb3IgbG9jYXRpbmcgYW5jZXN0b3IgdGFncyBieSBjbGFzcyBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sI2dldEFuY2hvcigpIj48Qj5nZXRBbmNob3IoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNnZXRBbmNob3IoKSI+PEI+Z2V0QW5jaG9yKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNnZXRBbmNob3IoKSI+PEI+Z2V0QW5jaG9yKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sIj5SZWRpcmVjdFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCNnZXRBcmcwKCkiPjxCPmdldEFyZzAoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlJldHVybiB0aGUgZmlyc3Qgb3B0aW9uYWwgYXJndW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjZ2V0QXJnMCgpIj48Qj5nZXRBcmcwKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI2dldEFyZzEoKSI+PEI+Z2V0QXJnMSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBzZWNvbmQgb3B0aW9uYWwgYXJndW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjZ2V0QXJnMSgpIj48Qj5nZXRBcmcxKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI2dldEFyZzIoKSI+PEI+Z2V0QXJnMigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSB0aGlyZCBvcHRpb25hbCBhcmd1bWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCNnZXRBcmcyKCkiPjxCPmdldEFyZzIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwjZ2V0QXJnMygpIj48Qj5nZXRBcmczKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGZvdXJ0aCBvcHRpb25hbCBhcmd1bWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCNnZXRBcmczKCkiPjxCPmdldEFyZzMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwjZ2V0QXJnNCgpIj48Qj5nZXRBcmc0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGZpZnRoIG9wdGlvbmFsIGFyZ3VtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sI2dldEFyZzQoKSI+PEI+Z2V0QXJnNCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9CZWFuVXRpbHMuaHRtbCNnZXRBcnJheVByb3BlcnR5KGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRBcnJheVByb3BlcnR5KE9iamVjdCwgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0JlYW5VdGlscy5odG1sIj5CZWFuVXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgYXJyYXkgcHJvcGVydHkgb2YgdGhlIHNwZWNpZmllZAogYmVhbiwgYXMgYSBTdHJpbmcgYXJyYXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI2dldEF0dHJpYnV0ZSgpIj48Qj5nZXRBdHRyaWJ1dGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlJldHVybiB0aGUgYXR0cmlidXRlIG5hbWUgZm9yIG91ciBmb3JtIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRBdHRyaWJ1dGUoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEF0dHJpYnV0ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldEF0dHJpYnV0ZU5hbWVzKCkiPjxCPmdldEF0dHJpYnV0ZU5hbWVzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0QXV0aFR5cGUoKSI+PEI+Z2V0QXV0aFR5cGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjZ2V0QXV0b0NvbW1pdCgpIj48Qj5nZXRBdXRvQ29tbWl0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwiPkdlbmVyaWNDb25uZWN0aW9uPC9BPgo8REQ+UmV0dXJuIHRoZSBjdXJyZW50IGF1dG8tY29tbWl0IHN0YXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI2dldEF1dG9Db21taXQoKSI+PEI+Z2V0QXV0b0NvbW1pdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjZ2V0Qm9yZGVyKCkiPjxCPmdldEJvcmRlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjZ2V0Qm9yZGVyKCkiPjxCPmdldEJvcmRlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2dldEJ1ZmZlclNpemUoKSI+PEI+Z2V0QnVmZmVyU2l6ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+R2V0IHRoZSBidWZmZXIgc2l6ZSAoaG93IGxhcmdlIG9mIGEgY2h1bmsgb2YgZGF0YSBpcwogcmVjaWV2ZWQgYnkgdGhlIGlucHV0IHN0cmVhbSBhdCBvbmNlKSB1c2VkIGZvciBmaWxlCiB1cGxvYWRpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNnZXRCdWZmZXJTaXplKCkiPjxCPmdldEJ1ZmZlclNpemUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwiPk11bHRpcGFydEl0ZXJhdG9yPC9BPgo8REQ+R2V0IHRoZSBtYXhpbXVtIGFtb3VudCBvZiBieXRlcyByZWFkIGZyb20gYSBsaW5lIGF0IG9uZSB0aW1lCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI2dldEJ1bmRsZSgpIj48Qj5nZXRCdW5kbGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlJldHVybiB0aGUgYnVuZGxlIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCNnZXRCdW5kbGUoKSI+PEI+Z2V0QnVuZGxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNnZXRCdW5kbGUoKSI+PEI+Z2V0QnVuZGxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwjZ2V0QnVuZGxlKCkiPjxCPmdldEJ1bmRsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sIj5FcnJvcnNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjZ2V0QnVuZGxlKCkiPjxCPmdldEJ1bmRsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCNnZXRCdW5kbGUoKSI+PEI+Z2V0QnVuZGxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwiPk9wdGlvblRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI2dldENhdGFsb2coKSI+PEI+Z2V0Q2F0YWxvZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sIj5HZW5lcmljQ29ubmVjdGlvbjwvQT4KPEREPlJldHVybiB0aGUgY3VycmVudCBjYXRhbG9nIG5hbWUgZm9yIHRoaXMgQ29ubmVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldENoYXJhY3RlckVuY29kaW5nKCkiPjxCPmdldENoYXJhY3RlckVuY29kaW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sI2dldENvbGxlY3Rpb24oKSI+PEI+Z2V0Q29sbGVjdGlvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPlJldHVybiB0aGUgY29sbGVjdGlvbiBvdmVyIHdoaWNoIHdlIHdpbGwgYmUgZW51bWVyYXRpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI2dldENvbGxlY3Rpb24oKSI+PEI+Z2V0Q29sbGVjdGlvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBjb2xsZWN0aW9uIG92ZXIgd2hpY2ggd2Ugd2lsbCBiZSBpdGVyYXRpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwjZ2V0Q29sbGVjdGlvbigpIj48Qj5nZXRDb2xsZWN0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sIj5TaXplVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwjZ2V0Q29sbGVjdGlvbigpIj48Qj5nZXRDb2xsZWN0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sIj5PcHRpb25zVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI2dldENvbGxlY3Rpb24oKSI+PEI+Z2V0Q29sbGVjdGlvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwjZ2V0Q29scygpIj48Qj5nZXRDb2xzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBudW1iZXIgb2YgY29sdW1ucyBmb3IgdGhpcyBmaWVsZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sI2dldENvbHMoKSI+PEI+Z2V0Q29scygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5SZXR1cm4gdGhlIG51bWJlciBvZiBjb2x1bW5zIGZvciB0aGlzIGZpZWxkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZ2V0Q29uZmlnKCkiPjxCPmdldENvbmZpZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCNnZXRDb25uZWN0aW9uKCkiPjxCPmdldENvbm5lY3Rpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5SZXR1cm4gdGhlIGFjdHVhbCBjb25uZWN0aW9uIHRoYXQgd2UgYXJlIHdyYXBwaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI2dldENvbm5lY3Rpb24oKSI+PEI+Z2V0Q29ubmVjdGlvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPkF0dGVtcHQgdG8gZXN0YWJsaXNoIGEgZGF0YWJhc2UgY29ubmVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNnZXRDb25uZWN0aW9uKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRDb25uZWN0aW9uKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD5BdHRlbXB0IHRvIGVzdGFibGlzaCBhIGRhdGFiYXNlIGNvbm5lY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwjZ2V0Q29udGVudCgpIj48Qj5nZXRDb250ZW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9QdXRUYWcuaHRtbCI+UHV0VGFnPC9BPgo8REQ+R2V0IHRoZSBjb250ZW50IGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnQuaHRtbCNnZXRDb250ZW50KCkiPjxCPmdldENvbnRlbnQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50Lmh0bWwiPkNvbnRlbnQ8L0E+CjxERD5SZXR1cm4gY29udGVudAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0Q29udGVudExlbmd0aCgpIj48Qj5nZXRDb250ZW50TGVuZ3RoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0luc2VydFRhZy5odG1sI2dldENvbnRlbnRNYXAoKSI+PEI+Z2V0Q29udGVudE1hcCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvSW5zZXJ0VGFnLmh0bWwiPkluc2VydFRhZzwvQT4KPEREPkdldCB0aGUgbWFwIGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sI2dldENvbnRlbnRUeXBlKCkiPjxCPmdldENvbnRlbnRUeXBlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sIj5EaXNrRmlsZTwvQT4KPEREPkdldCB0aGUgY29udGVudCB0eXBlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRDb250ZW50VHlwZSgpIj48Qj5nZXRDb250ZW50VHlwZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9Gb3JtRmlsZS5odG1sI2dldENvbnRlbnRUeXBlKCkiPjxCPmdldENvbnRlbnRUeXBlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRm9ybUZpbGUuaHRtbCI+Rm9ybUZpbGU8L0E+CjxERD5HZXQgdGhlIGNvbnRlbnQgdHlwZSBmb3IgdGhpcyBmaWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCNnZXRDb250ZW50VHlwZSgpIj48Qj5nZXRDb250ZW50VHlwZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sIj5NdWx0aXBhcnRFbGVtZW50PC9BPgo8REQ+UmV0cmlldmUgdGhlIGNvbnRlbnQgdHlwZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0Q29udGV4dFBhdGgoKSI+PEI+Z2V0Q29udGV4dFBhdGgoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjZ2V0Q29va2llKCkiPjxCPmdldENvb2tpZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPkNvbmRpdGlvbmFsVGFnQmFzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0Q29va2llcygpIj48Qj5nZXRDb29raWVzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNnZXRDb3VudCgpIj48Qj5nZXRDb3VudCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+UmV0dXJuIHRoZSBjdXJyZW50IGRlcHRoIG9mIHRoZSBlbGVtZW50IHN0YWNrLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCNnZXREYXRhKCkiPjxCPmdldERhdGEoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSB0aGUgZ2V0RmlsZSBtZXRob2QgdG8gZ2V0IGEgRmlsZSByZXByZXNlbnRpbmcgdGhlCiAgICAgICAgICAgICBkYXRhIGZvciB0aGlzIGVsZW1lbnQ8L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjZ2V0RGF0YVNvdXJjZSgpIj48Qj5nZXREYXRhU291cmNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwiPkdlbmVyaWNDb25uZWN0aW9uPC9BPgo8REQ+UmV0dXJuIHRoZSBkYXRhIHNvdXJjZSB0aGF0IG93bnMgdGhpcyBjb25uZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0RGF0ZUhlYWRlcihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0RGF0ZUhlYWRlcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjZ2V0RGVidWcoKSI+PEI+Z2V0RGVidWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlJldHVybiB0aGUgZGVidWdnaW5nIGRldGFpbCBsZXZlbCBmb3IgdGhpcyBzZXJ2bGV0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNnZXREZWJ1ZygpIj48Qj5nZXREZWJ1ZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+UmV0dXJuIHRoZSBkZWJ1Z2dpbmcgZGV0YWlsIGxldmVsIG9mIHRoaXMgRGlnZXN0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCNnZXREZWJ1ZygpIj48Qj5nZXREZWJ1ZygpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0JlYW5VdGlscy5odG1sI2dldERlYnVnKCkiPjxCPmdldERlYnVnKCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9CZWFuVXRpbHMuaHRtbCI+QmVhblV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZ2V0RGVidWcoKSI+PEI+Z2V0RGVidWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwjZ2V0RGVmYXVsdEJvb2xlYW4oKSI+PEI+Z2V0RGVmYXVsdEJvb2xlYW4oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwiPkNvbnZlcnRVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOyZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNnZXREZWZhdWx0Qnl0ZSgpIj48Qj5nZXREZWZhdWx0Qnl0ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2dldERlZmF1bHRDaGFyYWN0ZXIoKSI+PEI+Z2V0RGVmYXVsdENoYXJhY3RlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2dldERlZmF1bHREb3VibGUoKSI+PEI+Z2V0RGVmYXVsdERvdWJsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2dldERlZmF1bHRGbG9hdCgpIj48Qj5nZXREZWZhdWx0RmxvYXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwiPkNvbnZlcnRVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOyZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNnZXREZWZhdWx0SW50ZWdlcigpIj48Qj5nZXREZWZhdWx0SW50ZWdlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI2dldERlZmF1bHRMb25nKCkiPjxCPmdldERlZmF1bHRMb25nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwjZ2V0RGVmYXVsdFNob3J0KCkiPjxCPmdldERlZmF1bHRTaG9ydCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZ2V0RGVzY3JpcHRpb24oKSI+PEI+Z2V0RGVzY3JpcHRpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9QdXRUYWcuaHRtbCNnZXREaXJlY3QoKSI+PEI+Z2V0RGlyZWN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9QdXRUYWcuaHRtbCI+UHV0VGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgZGlyZWN0IGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI2dldERpc2FibGVkKCkiPjxCPmdldERpc2FibGVkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBkaXNhYmxlZCBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwjZ2V0RGlzYWJsZWQoKSI+PEI+Z2V0RGlzYWJsZWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZ2V0RHJpdmVyQ2xhc3MoKSI+PEI+Z2V0RHJpdmVyQ2xhc3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjZ2V0RW5jdHlwZSgpIj48Qj5nZXRFbmN0eXBlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNnZXRFbmN0eXBlKCkiPjxCPmdldEVuY3R5cGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sI2dldEVudW1lcmF0aW9uKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRFbnVtZXJhdGlvbihTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sIj5PcHRpb25zMVRhZzwvQT4KPEREPlJldHVybiBhbiBlbnVtZXJhdGlvbiBmb3IgdGhlIG9wdGlvbiBsYWJlbHMgb3IgdmFsdWVzLCBiYXNlZCBvbiBvdXIKIGNvbmZpZ3VyZWQgcHJvcGVydGllcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRXJyb3JNZXNzYWdlcy5odG1sI2dldEVycm9yKGludCkiPjxCPmdldEVycm9yKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Vycm9yTWVzc2FnZXMuaHRtbCI+RXJyb3JNZXNzYWdlczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiB0aGUgZXJyb3IgbWVzc2FnZSBrZXkgYXQgdGhlIHNwZWNpZmllZCB6ZXJvLXJlbGF0aXZlIGluZGV4Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNnZXRFcnJvckhhbmRsZXIoKSI+PEI+Z2V0RXJyb3JIYW5kbGVyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5SZXR1cm4gdGhlIGVycm9yIGhhbmRsZXIgZm9yIHRoaXMgRGlnZXN0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Vycm9yTWVzc2FnZXMuaHRtbCNnZXRFcnJvcnMoKSI+PEI+Z2V0RXJyb3JzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Vycm9yTWVzc2FnZXMuaHRtbCI+RXJyb3JNZXNzYWdlczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiB0aGUgc2V0IG9mIGVycm9yIG1lc3NhZ2Uga2V5cyB3ZSBoYXZlIGFjY3VtdWxhdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZ2V0RmFjdG9yeSgpIj48Qj5nZXRGYWN0b3J5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeS5odG1sI2dldEZhY3RvcnlDbGFzcygpIj48Qj5nZXRGYWN0b3J5Q2xhc3MoKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZHMuaHRtbCNnZXRGYXN0KCkiPjxCPmdldEZhc3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmRzLmh0bWwiPkFjdGlvbkZvcndhcmRzPC9BPgo8REQ+UmV0dXJuIHRoZSAiZmFzdCIgbW9kZSBmbGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm1CZWFucy5odG1sI2dldEZhc3QoKSI+PEI+Z2V0RmFzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW5zLmh0bWwiPkFjdGlvbkZvcm1CZWFuczwvQT4KPEREPlJldHVybiB0aGUgImZhc3QiIG1vZGUgZmxhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sI2dldEZhc3QoKSI+PEI+Z2V0RmFzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZ3MuaHRtbCI+QWN0aW9uTWFwcGluZ3M8L0E+CjxERD5SZXR1cm4gdGhlICJmYXN0IiBtb2RlIGZsYWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwjZ2V0RmFzdCgpIj48Qj5nZXRGYXN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPkZhc3RIYXNoTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNnZXRGYXN0KCkiPjxCPmdldEZhc3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjZ2V0RmFzdCgpIj48Qj5nZXRGYXN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwiPkZhc3RUcmVlTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sI2dldEZpbGUoKSI+PEI+Z2V0RmlsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sIj5NdWx0aXBhcnRFbGVtZW50PC9BPgo8REQ+R2V0IHRoZSBGaWxlIHRoYXQgaG9sZHMgdGhlIGRhdGEgZm9yIHRoaXMgZWxlbWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sI2dldEZpbGVEYXRhKCkiPjxCPmdldEZpbGVEYXRhKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sIj5EaXNrRmlsZTwvQT4KPEREPkF0dGVtcHQgdG8gcmVhZCB0aGUgdGVtcG9yYXJ5IGZpbGUgYW5kIGdldCBpdCdzIGRhdGEgaW4gYnl0ZQogYXJyYXkgZm9ybS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9Gb3JtRmlsZS5odG1sI2dldEZpbGVEYXRhKCkiPjxCPmdldEZpbGVEYXRhKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRm9ybUZpbGUuaHRtbCI+Rm9ybUZpbGU8L0E+CjxERD5HZXQgdGhlIGRhdGEgaW4gYnl0ZSBhcnJheSBmb3IgZm9yIHRoaXMgZmlsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sI2dldEZpbGVEYXRhKGludCkiPjxCPmdldEZpbGVEYXRhKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sIj5EaXNrRmlsZTwvQT4KPEREPkF0dGVtcHRzIHRvIHJlYWQgYSBmaWxlIG4gYnl0ZXMgYXQgYSB0aW1lLCBuIGJlaW5nIGVxdWFsIHRvICJidWZmZXJTaXplIi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI2dldEZpbGVFbGVtZW50cygpIj48Qj5nZXRGaWxlRWxlbWVudHMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQT4KPEREPlRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0byByZXRyaWV2ZSBhbGwgdGhlIEZvcm1GaWxlCiBpbnB1dCBlbGVtZW50cyBvZiB0aGUgcmVxdWVzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCNnZXRGaWxlRWxlbWVudHMoKSI+PEI+Z2V0RmlsZUVsZW1lbnRzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+RGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza0ZpbGUuaHRtbCNnZXRGaWxlTmFtZSgpIj48Qj5nZXRGaWxlTmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza0ZpbGUuaHRtbCI+RGlza0ZpbGU8L0E+CjxERD5HZXQgdGhlIGZpbGUgbmFtZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Zvcm1GaWxlLmh0bWwjZ2V0RmlsZU5hbWUoKSI+PEI+Z2V0RmlsZU5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9Gb3JtRmlsZS5odG1sIj5Gb3JtRmlsZTwvQT4KPEREPkdldCB0aGUgZmlsZSBuYW1lIG9mIHRoaXMgZmlsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwjZ2V0RmlsZU5hbWUoKSI+PEI+Z2V0RmlsZU5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPlJldHJpZXZlIHRoZSBmaWxlbmFtZSwgY2FuIHJldHVybiA8Y29kZT5udWxsPC9jb2RlPgogZm9yIHRleHQgZWxlbWVudHMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sI2dldEZpbGVQYXRoKCkiPjxCPmdldEZpbGVQYXRoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sIj5EaXNrRmlsZTwvQT4KPEREPkdldCB0aGUgdGVtcG9yYXJ5IGZpbGUgcGF0aCBmb3IgdGhpcyBmb3JtIGZpbGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sI2dldEZpbGVTaXplKCkiPjxCPmdldEZpbGVTaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sIj5EaXNrRmlsZTwvQT4KPEREPkdldCB0aGUgZmlsZSBzaXplCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRm9ybUZpbGUuaHRtbCNnZXRGaWxlU2l6ZSgpIj48Qj5nZXRGaWxlU2l6ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Zvcm1GaWxlLmh0bWwiPkZvcm1GaWxlPC9BPgo8REQ+R2V0IHRoZSBzaXplIG9mIHRoaXMgZmlsZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCNnZXRGaWx0ZXIoKSI+PEI+Z2V0RmlsdGVyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCI+V3JpdGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9HZXRUYWcuaHRtbCNnZXRGbHVzaCgpIj48Qj5nZXRGbHVzaCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvR2V0VGFnLmh0bWwiPkdldFRhZzwvQT4KPEREPkdldCB0aGUgZmx1c2gtYmVmb3JlLWluY2x1ZGUgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNnZXRGb2N1cygpIj48Qj5nZXRGb2N1cygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBmb2N1cyBmaWVsZCBuYW1lIGZvciB0aGlzIGZvcm0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwjZ2V0Rm9jdXMoKSI+PEI+Z2V0Rm9jdXMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZXR1cm4gdGhlIGZvY3VzIGZpZWxkIG5hbWUgZm9yIHRoaXMgZm9ybS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjZ2V0Rm9ybUF0dHJpYnV0ZSgpIj48Qj5nZXRGb3JtQXR0cmlidXRlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2UgZ2V0QXR0cmlidXRlKCkgaW5zdGVhZDwvST4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1N0cnV0c1RhZy5odG1sI2dldEZvcm1CZWFuKCkiPjxCPmdldEZvcm1CZWFuKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwiPlN0cnV0c1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNnZXRGb3JtQmVhbkNsYXNzKCkiPjxCPmdldEZvcm1CZWFuQ2xhc3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlJldHVybiB0aGUgSmF2YSBjbGFzcyBuYW1lIG9mIHRoZSBjbGFzcyB1c2VkIHRvIGluc3RhbnRpYXRlCiA8Y29kZT5BY3Rpb25Gb3JtQmVhbjwvY29kZT4gb2JqZWN0cy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjZ2V0Rm9ybUNsYXNzKCkiPjxCPmdldEZvcm1DbGFzcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIHRoZSBiZWFuIG5hbWUgdG8gbG9vayB1cCB0aGUgY29ycmVzcG9uZGluZwogIEFjdGlvbkZvcm1CZWFuIGluc3RlYWQ8L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI2dldEZvcm1QcmVmaXgoKSI+PEI+Z2V0Rm9ybVByZWZpeCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIGdldFByZWZpeCgpIGluc3RlYWQ8L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI2dldEZvcm1TY29wZSgpIj48Qj5nZXRGb3JtU2NvcGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSBnZXRTY29wZSgpIGluc3RlYWQ8L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI2dldEZvcm1TdWZmaXgoKSI+PEI+Z2V0Rm9ybVN1ZmZpeCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIGdldFN1ZmZpeCgpIGluc3RlYWQ8L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI2dldEZvcndhcmQoKSI+PEI+Z2V0Rm9yd2FyZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+UmV0dXJuIHRoZSBmb3J3YXJkIHBhdGggZm9yIHRoaXMgbWFwcGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwjZ2V0Rm9yd2FyZCgpIj48Qj5nZXRGb3J3YXJkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGxvZ2ljYWwgZm9yd2FyZCBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwjZ2V0Rm9yd2FyZCgpIj48Qj5nZXRGb3J3YXJkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sIj5MaW5rMVRhZzwvQT4KPEREPlJldHVybiB0aGUgbG9naWNhbCBmb3J3YXJkIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwjZ2V0Rm9yd2FyZCgpIj48Qj5nZXRGb3J3YXJkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sIj5JbmNsdWRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCNnZXRGb3J3YXJkKCkiPjxCPmdldEZvcndhcmQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCI+U3RydXRzVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjZ2V0Rm9yd2FyZCgpIj48Qj5nZXRGb3J3YXJkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNnZXRGb3J3YXJkKCkiPjxCPmdldEZvcndhcmQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2dldEZvcndhcmRDbGFzcygpIj48Qj5nZXRGb3J3YXJkQ2xhc3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlJldHVybiB0aGUgSmF2YSBjbGFzcyBuYW1lIG9mIHRoZSBjbGFzcyB1c2VkIHRvIGluc3RhbnRpYXRlCiA8Y29kZT5BY3Rpb25Gb3J3YXJkPC9jb2RlPiBvYmplY3RzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sI2dldEhlYWRlcigpIj48Qj5nZXRIZWFkZXIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sIj5Db25kaXRpb25hbFRhZ0Jhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldEhlYWRlcihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0SGVhZGVyKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0SGVhZGVyTmFtZXMoKSI+PEI+Z2V0SGVhZGVyTmFtZXMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRIZWFkZXJzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRIZWFkZXJzKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjZ2V0SGVpZ2h0KCkiPjxCPmdldEhlaWdodCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwjZ2V0SHJlZigpIj48Qj5nZXRIcmVmKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGh5cGVybGluayBVUkkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVkaXJlY3RUYWcuaHRtbCNnZXRIcmVmKCkiPjxCPmdldEhyZWYoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBoeXBlcmxpbmsgVVJJLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwjZ2V0SHJlZigpIj48Qj5nZXRIcmVmKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sIj5MaW5rMVRhZzwvQT4KPEREPlJldHVybiB0aGUgaHlwZXJsaW5rIFVSSS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCNnZXRIcmVmKCkiPjxCPmdldEhyZWYoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNnZXRIcmVmKCkiPjxCPmdldEhyZWYoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI2dldEhyZWYoKSI+PEI+Z2V0SHJlZigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2dldEhzcGFjZSgpIj48Qj5nZXRIc3BhY2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwjZ2V0SWQoKSI+PEI+Z2V0SWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sIj5FbnVtZXJhdGVUYWc8L0E+CjxERD5SZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHNjcmlwdGluZyB2YXJpYWJsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sI2dldElkKCkiPjxCPmdldElkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sIj5HZXRQcm9wZXJ0eVRhZzwvQT4KPEREPlJldHVybiB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0aW5nIHZhcmlhYmxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCNnZXRJZCgpIj48Qj5nZXRJZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBzY3JpcHRpbmcgdmFyaWFibGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9IZWFkZXJUYWcuaHRtbCNnZXRJZCgpIj48Qj5nZXRJZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sIj5IZWFkZXJUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sI2dldElkKCkiPjxCPmdldElkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwiPkRlZmluZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sI2dldElkKCkiPjxCPmdldElkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sIj5TaXplVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCNnZXRJZCgpIj48Qj5nZXRJZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sIj5Db29raWVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sI2dldElkKCkiPjxCPmdldElkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFyYW1ldGVyVGFnLmh0bWwiPlBhcmFtZXRlclRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCNnZXRJZCgpIj48Qj5nZXRJZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1Jlc291cmNlVGFnLmh0bWwiPlJlc291cmNlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwjZ2V0SWQoKSI+PEI+Z2V0SWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1N0cnV0c1RhZy5odG1sI2dldElkKCkiPjxCPmdldElkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwiPlN0cnV0c1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFnZVRhZy5odG1sI2dldElkKCkiPjxCPmdldElkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFnZVRhZy5odG1sIj5QYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI2dldElkKCkiPjxCPmdldElkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwjZ2V0SWdub3JlKCkiPjxCPmdldElnbm9yZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwiPldyaXRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNnZXRJbWFnZU5hbWUoKSI+PEI+Z2V0SW1hZ2VOYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNnZXRJbmNsdWRlKCkiPjxCPmdldEluY2x1ZGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlJldHVybiB0aGUgaW5jbHVkZSBwYXRoIGZvciB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI2dldEluZGV4KCkiPjxCPmdldEluZGV4KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD5SZXR1cm4gdGhlIHplcm8tcmVsYXRpdmUgaW5kZXggb2YgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlCiBsb29wLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwjZ2V0SW5kZXhlZFByb3BlcnR5KGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRJbmRleGVkUHJvcGVydHkoT2JqZWN0LCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGluZGV4ZWQgcHJvcGVydHkgb2YgdGhlIHNwZWNpZmllZAogYmVhbiwgd2l0aCBubyB0eXBlIGNvbnZlcnNpb25zLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9CZWFuVXRpbHMuaHRtbCNnZXRJbmRleGVkUHJvcGVydHkoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEluZGV4ZWRQcm9wZXJ0eShPYmplY3QsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9CZWFuVXRpbHMuaHRtbCI+QmVhblV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGluZGV4ZWQgcHJvcGVydHkgb2YgdGhlIHNwZWNpZmllZAogYmVhbiwgYXMgYSBTdHJpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCNnZXRJbmRleGVkUHJvcGVydHkoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+Z2V0SW5kZXhlZFByb3BlcnR5KE9iamVjdCwgU3RyaW5nLCBpbnQpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGluZGV4ZWQgcHJvcGVydHkgb2YgdGhlIHNwZWNpZmllZAogYmVhbiwgd2l0aCBubyB0eXBlIGNvbnZlcnNpb25zLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9CZWFuVXRpbHMuaHRtbCNnZXRJbmRleGVkUHJvcGVydHkoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+Z2V0SW5kZXhlZFByb3BlcnR5KE9iamVjdCwgU3RyaW5nLCBpbnQpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQmVhblV0aWxzLmh0bWwiPkJlYW5VdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBpbmRleGVkIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpZWQKIGJlYW4sIGFzIGEgU3RyaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNnZXRJbmRleElkKCkiPjxCPmdldEluZGV4SWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNnZXRJbnB1dCgpIj48Qj5nZXRJbnB1dCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+UmV0dXJuIHRoZSBpbnB1dCBmb3JtIHBhdGggZm9yIHRoaXMgbWFwcGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1Jlc291cmNlVGFnLmh0bWwjZ2V0SW5wdXQoKSI+PEI+Z2V0SW5wdXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9SZXNvdXJjZVRhZy5odG1sIj5SZXNvdXJjZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNnZXRJbnB1dEZvcm0oKSI+PEI+Z2V0SW5wdXRGb3JtKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2UgZ2V0SW5wdXQoKSBpbnN0ZWFkPC9JPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tGaWxlLmh0bWwjZ2V0SW5wdXRTdHJlYW0oKSI+PEI+Z2V0SW5wdXRTdHJlYW0oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tGaWxlLmh0bWwiPkRpc2tGaWxlPC9BPgo8REQ+UmV0dXJucyBhIEZpbGVJbnB1dFN0cmVhbSB0byB0aGUgZmlsZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0SW5wdXRTdHJlYW0oKSI+PEI+Z2V0SW5wdXRTdHJlYW0oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRm9ybUZpbGUuaHRtbCNnZXRJbnB1dFN0cmVhbSgpIj48Qj5nZXRJbnB1dFN0cmVhbSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Zvcm1GaWxlLmh0bWwiPkZvcm1GaWxlPC9BPgo8REQ+R2V0IGFuIElucHV0U3RyZWFtIHRoYXQgcmVwcmVzZW50cyB0aGlzIGZpbGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRJbnRIZWFkZXIoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEludEhlYWRlcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2dldElzbWFwKCkiPjxCPmdldElzbWFwKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnNUYWcuaHRtbCNnZXRJdGVyYXRvcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0SXRlcmF0b3IoU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uc1RhZy5odG1sIj5PcHRpb25zVGFnPC9BPgo8REQ+UmV0dXJuIGFuIGl0ZXJhdG9yIGZvciB0aGUgb3B0aW9uIGxhYmVscyBvciB2YWx1ZXMsIGJhc2VkIG9uIG91cgogY29uZmlndXJlZCBwcm9wZXJ0aWVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sI2dldEl0ZXJhdG9yKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRJdGVyYXRvcihTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sIj5PcHRpb25zVGFnPC9BPgo8REQ+UmV0dXJuIGFuIGl0ZXJhdG9yIGZvciB0aGUgb3B0aW9uIGxhYmVscyBvciB2YWx1ZXMsIGJhc2VkIG9uIG91cgogY29uZmlndXJlZCBwcm9wZXJ0aWVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9yLmh0bWwjZ2V0S2V5KCkiPjxCPmdldEtleSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3IuaHRtbCI+QWN0aW9uRXJyb3I8L0E+CjxERD5HZXQgdGhlIG1lc3NhZ2Uga2V5IGZvciB0aGlzIGVycm9yIG1lc3NhZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI2dldEtleSgpIj48Qj5nZXRLZXkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlJldHVybiB0aGUgbWVzc2FnZSBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjZ2V0S2V5KCkiPjxCPmdldEtleSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwjZ2V0S2V5KCkiPjxCPmdldEtleSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvblRhZy5odG1sIj5PcHRpb25UYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sI2dldExhYmVsTmFtZSgpIj48Qj5nZXRMYWJlbE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwiPk9wdGlvbnMxVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uc1RhZy5odG1sI2dldExhYmVsTmFtZSgpIj48Qj5nZXRMYWJlbE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sI2dldExhYmVsTmFtZSgpIj48Qj5nZXRMYWJlbE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sI2dldExhYmVsUHJvcGVydHkoKSI+PEI+Z2V0TGFiZWxQcm9wZXJ0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCI+T3B0aW9uczFUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwjZ2V0TGFiZWxQcm9wZXJ0eSgpIj48Qj5nZXRMYWJlbFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCNnZXRMYWJlbFByb3BlcnR5KCkiPjxCPmdldExhYmVsUHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCNnZXRMZW5ndGgoKSI+PEI+Z2V0TGVuZ3RoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCI+RW51bWVyYXRlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBsZW5ndGguCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI2dldExlbmd0aCgpIj48Qj5nZXRMZW5ndGgoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlJldHVybiB0aGUgbGVuZ3RoLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNnZXRMZW5ndGgoKSI+PEI+Z2V0TGVuZ3RoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNnZXRMaW5rTmFtZSgpIj48Qj5nZXRMaW5rTmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCNnZXRMb2NhbGUoKSI+PEI+Z2V0TG9jYWxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGxvY2FsZSBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjZ2V0TG9jYWxlKCkiPjxCPmdldExvY2FsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSHRtbFRhZy5odG1sI2dldExvY2FsZSgpIj48Qj5nZXRMb2NhbGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9IdG1sVGFnLmh0bWwiPkh0bWxUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2dldExvY2FsZSgpIj48Qj5nZXRMb2NhbGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9FcnJvcnNUYWcuaHRtbCNnZXRMb2NhbGUoKSI+PEI+Z2V0TG9jYWxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNnZXRMb2NhbGUoKSI+PEI+Z2V0TG9jYWxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+SW1hZ2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvblRhZy5odG1sI2dldExvY2FsZSgpIj48Qj5nZXRMb2NhbGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRMb2NhbGUoKSI+PEI+Z2V0TG9jYWxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI2dldExvY2FsZShqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+Z2V0TG9jYWxlKEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+QWN0aW9uPC9BPgo8REQ+UmV0dXJuIHRoZSB1c2VyJ3MgY3VycmVudGx5IHNlbGVjdGVkIExvY2FsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldExvY2FsZXMoKSI+PEI+Z2V0TG9jYWxlcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9NYXRjaFRhZy5odG1sI2dldExvY2F0aW9uKCkiPjxCPmdldExvY2F0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9NYXRjaFRhZy5odG1sIj5NYXRjaFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI2dldExvZ2luVGltZW91dCgpIj48Qj5nZXRMb2dpblRpbWVvdXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD5SZXR1cm4gdGhlIGxvZ2luIHRpbWVvdXQgZm9yIHRoaXMgZGF0YSBzb3VyY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZ2V0TG9nV3JpdGVyKCkiPjxCPmdldExvZ1dyaXRlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPlJldHVybiB0aGUgbG9nIHdyaXRlciBmb3IgdGhpcyBkYXRhIHNvdXJjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2dldExvd3NyYygpIj48Qj5nZXRMb3dzcmMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCNnZXRNYXBwaW5nKCkiPjxCPmdldE1hcHBpbmcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCI+U3RydXRzVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCNnZXRNYXBwaW5nKCkiPjxCPmdldE1hcHBpbmcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQT4KPEREPkdldCB0aGUgQWN0aW9uTWFwcGluZyBpbnN0YW5jZSBmb3IgdGhpcyByZXF1ZXN0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwjZ2V0TWFwcGluZygpIj48Qj5nZXRNYXBwaW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+RGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2dldE1hcHBpbmdDbGFzcygpIj48Qj5nZXRNYXBwaW5nQ2xhc3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlJldHVybiB0aGUgSmF2YSBjbGFzcyBuYW1lIG9mIHRoZSBjbGFzcyB1c2VkIHRvIGluc3RhbnRpYXRlCiA8Y29kZT5BY3Rpb25NYXBwaW5nPC9jb2RlPiBvYmplY3RzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNnZXRNYXBwaW5ncygpIj48Qj5nZXRNYXBwaW5ncygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+UmV0dXJuIHRoZSA8Y29kZT5BY3Rpb25NYXBwaW5nczwvY29kZT4gY29sbGVjdGlvbiBvZiB3aGljaAogd2UgYXJlIGEgcGFydC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCNnZXRNYXRjaCgpIj48Qj5nZXRNYXRjaCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPlJldHVybiB0aGUgYWN0dWFsIG1hdGNoIHZhbHVlIChvbmx5IHZhbGlkIGZyb20gbmVzdGVkIHRhZ3MpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI2dldE1heENvdW50KCkiPjxCPmdldE1heENvdW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2dldE1heEZpbGVTaXplKCkiPjxCPmdldE1heEZpbGVTaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5HZXQgdGhlIG1heGltdW0gZmlsZSBzaXplLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sI2dldE1heGxlbmd0aCgpIj48Qj5nZXRNYXhsZW5ndGgoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5SZXR1cm4gdGhlIG1heGltdW0gbGVuZ3RoIGFsbG93ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCNnZXRNYXhsZW5ndGgoKSI+PEI+Z2V0TWF4bGVuZ3RoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwiPkJhc2VJbnB1dFRhZzwvQT4KPEREPlJldHVybiB0aGUgbWF4aW11bSBsZW5ndGggYWxsb3dlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sI2dldE1heFNpemUoKSI+PEI+Z2V0TWF4U2l6ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCI+TXVsdGlwYXJ0SXRlcmF0b3I8L0E+CjxERD5HZXQgdGhlIG1heGltdW0gcG9zdCBkYXRhIHNpemUgYWxsb3dlZCBmb3IgYSBtdWx0aXBhcnQgcmVxdWVzdAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI2dldE1heFNpemVGcm9tU2VydmxldCgpIj48Qj5nZXRNYXhTaXplRnJvbVNlcnZsZXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sIj5EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXI8L0E+CjxERD5HZXRzIHRoZSBtYXhpbXVtIHBvc3QgZGF0YSBzaXplIGluIGJ5dGVzIGZyb20gdGhlIHN0cmluZwogcmVwcmVzZW50YXRpb24gaW4gQWN0aW9uU2VydmxldAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL01heExlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uLmh0bWwjZ2V0TWVzc2FnZSgpIj48Qj5nZXRNZXNzYWdlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NYXhMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbi5odG1sIj5NYXhMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0NvbnRlbnRMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbi5odG1sI2dldE1lc3NhZ2UoKSI+PEI+Z2V0TWVzc2FnZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQ29udGVudExlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uLmh0bWwiPkNvbnRlbnRMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZ2V0TWVzc2FnZShqYXZhLnV0aWwuTG9jYWxlLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0TWVzc2FnZShMb2NhbGUsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPlJldHVybnMgYSB0ZXh0IG1lc3NhZ2UgZm9yIHRoZSBzcGVjaWZpZWQga2V5LCBmb3IgdGhlIGRlZmF1bHQgTG9jYWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXMuaHRtbCNnZXRNZXNzYWdlKGphdmEudXRpbC5Mb2NhbGUsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRNZXNzYWdlKExvY2FsZSwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzLmh0bWwiPlByb3BlcnR5TWVzc2FnZVJlc291cmNlczwvQT4KPEREPlJldHVybnMgYSB0ZXh0IG1lc3NhZ2UgZm9yIHRoZSBzcGVjaWZpZWQga2V5LCBmb3IgdGhlIGRlZmF1bHQgTG9jYWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZ2V0TWVzc2FnZShqYXZhLnV0aWwuTG9jYWxlLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+Z2V0TWVzc2FnZShMb2NhbGUsIFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+UmV0dXJucyBhIHRleHQgbWVzc2FnZSBhZnRlciBwYXJhbWV0cmljIHJlcGxhY2VtZW50IG9mIHRoZSBzcGVjaWZpZWQKIHBhcmFtZXRlciBwbGFjZWhvbGRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCNnZXRNZXNzYWdlKGphdmEudXRpbC5Mb2NhbGUsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3RbXSkiPjxCPmdldE1lc3NhZ2UoTG9jYWxlLCBTdHJpbmcsIE9iamVjdFtdKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+UmV0dXJucyBhIHRleHQgbWVzc2FnZSBhZnRlciBwYXJhbWV0cmljIHJlcGxhY2VtZW50IG9mIHRoZSBzcGVjaWZpZWQKIHBhcmFtZXRlciBwbGFjZWhvbGRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCNnZXRNZXNzYWdlKGphdmEudXRpbC5Mb2NhbGUsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3QpIj48Qj5nZXRNZXNzYWdlKExvY2FsZSwgU3RyaW5nLCBPYmplY3QsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPlJldHVybnMgYSB0ZXh0IG1lc3NhZ2UgYWZ0ZXIgcGFyYW1ldHJpYyByZXBsYWNlbWVudCBvZiB0aGUgc3BlY2lmaWVkCiBwYXJhbWV0ZXIgcGxhY2Vob2xkZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZ2V0TWVzc2FnZShqYXZhLnV0aWwuTG9jYWxlLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+Z2V0TWVzc2FnZShMb2NhbGUsIFN0cmluZywgT2JqZWN0LCBPYmplY3QsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPlJldHVybnMgYSB0ZXh0IG1lc3NhZ2UgYWZ0ZXIgcGFyYW1ldHJpYyByZXBsYWNlbWVudCBvZiB0aGUgc3BlY2lmaWVkCiBwYXJhbWV0ZXIgcGxhY2Vob2xkZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZ2V0TWVzc2FnZShqYXZhLnV0aWwuTG9jYWxlLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+Z2V0TWVzc2FnZShMb2NhbGUsIFN0cmluZywgT2JqZWN0LCBPYmplY3QsIE9iamVjdCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+UmV0dXJucyBhIHRleHQgbWVzc2FnZSBhZnRlciBwYXJhbWV0cmljIHJlcGxhY2VtZW50IG9mIHRoZSBzcGVjaWZpZWQKIHBhcmFtZXRlciBwbGFjZWhvbGRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCNnZXRNZXNzYWdlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRNZXNzYWdlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPlJldHVybnMgYSB0ZXh0IG1lc3NhZ2UgZm9yIHRoZSBzcGVjaWZpZWQga2V5LCBmb3IgdGhlIGRlZmF1bHQgTG9jYWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZ2V0TWVzc2FnZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+Z2V0TWVzc2FnZShTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPlJldHVybnMgYSB0ZXh0IG1lc3NhZ2UgYWZ0ZXIgcGFyYW1ldHJpYyByZXBsYWNlbWVudCBvZiB0aGUgc3BlY2lmaWVkCiBwYXJhbWV0ZXIgcGxhY2Vob2xkZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZ2V0TWVzc2FnZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0W10pIj48Qj5nZXRNZXNzYWdlKFN0cmluZywgT2JqZWN0W10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXM8L0E+CjxERD5SZXR1cm5zIGEgdGV4dCBtZXNzYWdlIGFmdGVyIHBhcmFtZXRyaWMgcmVwbGFjZW1lbnQgb2YgdGhlIHNwZWNpZmllZAogcGFyYW1ldGVyIHBsYWNlaG9sZGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sI2dldE1lc3NhZ2UoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmdldE1lc3NhZ2UoU3RyaW5nLCBPYmplY3QsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPlJldHVybnMgYSB0ZXh0IG1lc3NhZ2UgYWZ0ZXIgcGFyYW1ldHJpYyByZXBsYWNlbWVudCBvZiB0aGUgc3BlY2lmaWVkCiBwYXJhbWV0ZXIgcGxhY2Vob2xkZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjZ2V0TWVzc2FnZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+Z2V0TWVzc2FnZShTdHJpbmcsIE9iamVjdCwgT2JqZWN0LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXM8L0E+CjxERD5SZXR1cm5zIGEgdGV4dCBtZXNzYWdlIGFmdGVyIHBhcmFtZXRyaWMgcmVwbGFjZW1lbnQgb2YgdGhlIHNwZWNpZmllZAogcGFyYW1ldGVyIHBsYWNlaG9sZGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sI2dldE1lc3NhZ2UoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPmdldE1lc3NhZ2UoU3RyaW5nLCBPYmplY3QsIE9iamVjdCwgT2JqZWN0LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXM8L0E+CjxERD5SZXR1cm5zIGEgdGV4dCBtZXNzYWdlIGFmdGVyIHBhcmFtZXRyaWMgcmVwbGFjZW1lbnQgb2YgdGhlIHNwZWNpZmllZAogcGFyYW1ldGVyIHBsYWNlaG9sZGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sI2dldE1lc3NhZ2VSZXNvdXJjZXMoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldE1lc3NhZ2VSZXNvdXJjZXMoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPkNyZWF0ZSBhbmQgcmV0dXJuIGFuIGluc3RhbmNlIG9mIDxjb2RlPk1lc3NhZ2VSZXNvdXJjZXM8L2NvZGU+IGZvciB0aGUKIGNyZWF0ZWQgYnkgdGhlIGRlZmF1bHQgPGNvZGU+TWVzc2FnZVJlc291cmNlc0ZhY3Rvcnk8L2NvZGU+Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI2dldE1ldGFEYXRhKCkiPjxCPmdldE1ldGFEYXRhKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwiPkdlbmVyaWNDb25uZWN0aW9uPC9BPgo8REQ+R2V0IHRoZSBtZXRhZGF0YSByZWdhcmRpbmcgdGhpcyBjb25uZWN0aW9uJ3MgZGF0YWJhc2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI2dldE1ldGhvZCgpIj48Qj5nZXRNZXRob2QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJldHVybiB0aGUgcmVxdWVzdCBtZXRob2QgdXNlZCB3aGVuIHN1Ym1pdHRpbmcgdGhpcyBmb3JtLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI2dldE1ldGhvZCgpIj48Qj5nZXRNZXRob2QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZXR1cm4gdGhlIHJlcXVlc3QgbWV0aG9kIHVzZWQgd2hlbiBzdWJtaXR0aW5nIHRoaXMgZm9ybS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldE1ldGhvZCgpIj48Qj5nZXRNZXRob2QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0Rpc3BhdGNoQWN0aW9uLmh0bWwjZ2V0TWV0aG9kKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRNZXRob2QoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvRGlzcGF0Y2hBY3Rpb24uaHRtbCI+RGlzcGF0Y2hBY3Rpb248L0E+CjxERD5JbnRyb3NwZWN0IHRoZSBjdXJyZW50IGNsYXNzIHRvIGlkZW50aWZ5IGEgbWV0aG9kIG9mIHRoZSBzcGVjaWZpZWQKIG5hbWUgdGhhdCBhY2NlcHRzIHRoZSBzYW1lIHBhcmFtZXRlciB0eXBlcyBhcyB0aGUgPGNvZGU+cGVyZm9ybSgpPC9jb2RlPgogbWV0aG9kIGRvZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZ2V0TWluQ291bnQoKSI+PEI+Z2V0TWluQ291bnQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjZ2V0TXVsdGlwYXJ0Q2xhc3MoKSI+PEI+Z2V0TXVsdGlwYXJ0Q2xhc3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPkdldCB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgdXNlZCB0byBoYW5kbGUgbXVsdGlwYXJ0IHJlcXVlc3QgZGF0YQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNnZXRNdWx0aXBhcnRDbGFzcygpIj48Qj5nZXRNdWx0aXBhcnRDbGFzcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+R2V0IHRoZSBjbGFzcyBuYW1lIG9mIHRoZSBNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlciBpbXBsZW1lbnRhdGlvbgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm0uaHRtbCNnZXRNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcigpIj48Qj5nZXRNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sIj5BY3Rpb25Gb3JtPC9BPgo8REQ+UmV0dXJuIHRoZSBNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlciBmb3IgdGhpcyBmb3JtCiBUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGlzIHRvIGdpdmUgZm9ybSBiZWFuIGRldmVsb3BlcnMKIGNvbnRyb2wgb3ZlciB0aGUgbGlmZWN5Y2xlIG9mIHRoZWlyIG11bHRpcGFydCByZXF1ZXN0cwogdGhyb3VnaCB0aGUgdXNlIG9mIHRoZSBmaW5pc2goKSBhbmQvb3Igcm9sbGJhY2soKSBtZXRob2RzCiBvZiBNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCNnZXRNdWx0aXBsZSgpIj48Qj5nZXRNdWx0aXBsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwjZ2V0TXVsdGlwbGUoKSI+PEI+Z2V0TXVsdGlwbGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9IZWFkZXJUYWcuaHRtbCI+SGVhZGVyVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCNnZXRNdWx0aXBsZSgpIj48Qj5nZXRNdWx0aXBsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sIj5Db29raWVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sI2dldE11bHRpcGxlKCkiPjxCPmdldE11bHRpcGxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFyYW1ldGVyVGFnLmh0bWwiPlBhcmFtZXRlclRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwjZ2V0TXVsdGlwbGUoKSI+PEI+Z2V0TXVsdGlwbGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+UmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmb3JtIGJlYW4gZm9yIHRoaXMgbWFwcGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbi5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW4uaHRtbCI+QWN0aW9uRm9ybUJlYW48L0E+CjxERD5SZXR1cm4gdGhlIGJlYW4gbmFtZSBvZiB0aGlzIGFjdGlvbiBmb3JtIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sIj5BY3Rpb25Gb3J3YXJkPC9BPgo8REQ+UmV0dXJuIHRoZSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPlJldHVybiB0aGUgYmVhbiBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0h0bWxQcm9wZXJ0eVRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSHRtbFByb3BlcnR5VGFnLmh0bWwiPkh0bWxQcm9wZXJ0eVRhZzwvQT4KPEREPlJldHVybiB0aGUgb2JqZWN0IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJFcXVhbHNUYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyRXF1YWxzVGFnLmh0bWwiPklmUGFyYW1ldGVyRXF1YWxzVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBwYXJhbWV0ZXIgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZXR1cm4gdGhlIGF0dHJpYnV0ZSBrZXkgbmFtZSBvZiBvdXIgYmVhbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTXVsdGlib3hUYWcuaHRtbCI+TXVsdGlib3hUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9QYXJhbWV0ZXJUYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1BhcmFtZXRlclRhZy5odG1sIj5QYXJhbWV0ZXJUYWc8L0E+CjxERD5SZXR1cm4gdGhlIHBhcmFtZXRlciBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sIj5PcHRpb25zMVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Vycm9yc1RhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPlJldHVybiB0aGUgZXJyb3JzIGF0dHJpYnV0ZSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY29sbGVjdGlvbiBvciBvd25pbmcgYmVhbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvR2V0UHJvcGVydHlUYWcuaHRtbCI+R2V0UHJvcGVydHlUYWc8L0E+CjxERD5SZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOdWxsVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck51bGxUYWcuaHRtbCI+SWZQYXJhbWV0ZXJOdWxsVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBwYXJhbWV0ZXIgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmFkaW9UYWcuaHRtbCI+UmFkaW9UYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZXNldFRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVzZXRUYWcuaHRtbCI+UmVzZXRUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGZpZWxkIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSW5jbHVkZVRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSW5jbHVkZVRhZy5odG1sIj5JbmNsdWRlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBsb2dpY2FsIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUZpZWxkVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlRmllbGRUYWcuaHRtbCI+QmFzZUZpZWxkVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUF0dHJpYnV0ZVRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUF0dHJpYnV0ZVRhZy5odG1sIj5CYXNlQXR0cmlidXRlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBhdHRyaWJ1dGUgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3J3YXJkVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3J3YXJkVGFnLmh0bWwiPkZvcndhcmRUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGxvZ2ljYWwgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdEVxdWFsc1RhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOb3RFcXVhbHNUYWcuaHRtbCI+SWZQYXJhbWV0ZXJOb3RFcXVhbHNUYWc8L0E+CjxERD5SZXR1cm4gdGhlIHBhcmFtZXRlciBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1RleHRhcmVhVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9UZXh0YXJlYVRhZy5odG1sIj5UZXh0YXJlYVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NoZWNrYm94VGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sIj5DaGVja2JveFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTm90TnVsbFRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOb3ROdWxsVGFnLmh0bWwiPklmUGFyYW1ldGVyTm90TnVsbFRhZzwvQT4KPEREPlJldHVybiB0aGUgcGFyYW1ldGVyIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGluazFUYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwiPkxpbmsxVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBiZWFuIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUHJvcGVydHlUYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Byb3BlcnR5VGFnLmh0bWwiPlByb3BlcnR5VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjb2xsZWN0aW9uIG9yIG93bmluZyBiZWFuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwiPkhlYWRlclRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sIj5Xcml0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwiPkRlZmluZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1NpemVUYWcuaHRtbCI+U2l6ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGFnLmh0bWwiPkNvb2tpZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFyYW1ldGVyVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFyYW1ldGVyVGFnLmh0bWwiPlBhcmFtZXRlclRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9SZXNvdXJjZVRhZy5odG1sIj5SZXNvdXJjZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwiPkJhc2VGaWVsZFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SZXNldFRhZy5odG1sIj5SZXNldFRhZzwvQT4KPEREPlJldHVybiB0aGUgZmllbGQgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2hlY2tib3hUYWcuaHRtbCI+Q2hlY2tib3hUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZXR1cm4gdGhlIGF0dHJpYnV0ZSBrZXkgbmFtZSBvZiBvdXIgYmVhbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1RleHRhcmVhVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvVGV4dGFyZWFUYWcuaHRtbCI+VGV4dGFyZWFUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sIj5Db25kaXRpb25hbFRhZ0Jhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Gb3J3YXJkVGFnLmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Gb3J3YXJkVGFnLmh0bWwiPkZvcndhcmRUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9QdXRUYWcuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL1B1dFRhZy5odG1sIj5QdXRUYWc8L0E+CjxERD5HZXQgdGhlIG5hbWUgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0dldFRhZy5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvR2V0VGFnLmh0bWwiPkdldFRhZzwvQT4KPEREPkdldCB0aGUgbmFtZSBhdHRyaWJ1dGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sIj5NdWx0aXBhcnRFbGVtZW50PC9BPgo8REQ+UmV0cmlldmUgdGhlIG5hbWUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI2dldE5lc3RlZFByb3BlcnR5KGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXROZXN0ZWRQcm9wZXJ0eShPYmplY3QsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPlByb3BlcnR5VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAocG9zc2libHkgbmVzdGVkKSBwcm9wZXJ0eSBvZiB0aGUgc3BlY2lmaWVkCiBuYW1lLCBmb3IgdGhlIHNwZWNpZmllZCBiZWFuLCB3aXRoIG5vIHR5cGUgY29udmVyc2lvbnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0JlYW5VdGlscy5odG1sI2dldE5lc3RlZFByb3BlcnR5KGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXROZXN0ZWRQcm9wZXJ0eShPYmplY3QsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9CZWFuVXRpbHMuaHRtbCI+QmVhblV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgKHBvc3NpYmx5IG5lc3RlZCkgcHJvcGVydHkgb2YgdGhlIHNwZWNpZmllZAogbmFtZSwgZm9yIHRoZSBzcGVjaWZpZWQgYmVhbiwgYXMgYSBTdHJpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNnZXROZXh0RWxlbWVudCgpIj48Qj5nZXROZXh0RWxlbWVudCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCI+TXVsdGlwYXJ0SXRlcmF0b3I8L0E+CjxERD5SZXRyaWV2ZXMgdGhlIG5leHQgZWxlbWVudCBpbiB0aGUgaXRlcmF0b3IgaWYgb25lIGV4aXN0cy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCNnZXRPZmZzZXQoKSI+PEI+Z2V0T2Zmc2V0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCI+RW51bWVyYXRlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBvZmZzZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI2dldE9mZnNldCgpIj48Qj5nZXRPZmZzZXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlJldHVybiB0aGUgb2Zmc2V0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNnZXRPZmZzZXQoKSI+PEI+Z2V0T2Zmc2V0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjZ2V0T25ibHVyKCkiPjxCPmdldE9uYmx1cigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgb25CbHVyIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRPbkJsdXIoKSI+PEI+Z2V0T25CbHVyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIG9uQmx1ciBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRPbmNoYW5nZSgpIj48Qj5nZXRPbmNoYW5nZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgb25DaGFuZ2UgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI2dldE9uQ2hhbmdlKCkiPjxCPmdldE9uQ2hhbmdlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIG9uQ2hhbmdlIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI2dldE9uY2xpY2soKSI+PEI+Z2V0T25jbGljaygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgb25DbGljayBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjZ2V0T25DbGljaygpIj48Qj5nZXRPbkNsaWNrKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIG9uQ2xpY2sgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjZ2V0T25kYmxjbGljaygpIj48Qj5nZXRPbmRibGNsaWNrKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBvbkRibENsaWNrIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRPbkRibENsaWNrKCkiPjxCPmdldE9uRGJsQ2xpY2soKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgb25EYmxDbGljayBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRPbmZvY3VzKCkiPjxCPmdldE9uZm9jdXMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIG9uRm9jdXMgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI2dldE9uRm9jdXMoKSI+PEI+Z2V0T25Gb2N1cygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBvbkZvY3VzIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI2dldE9ua2V5ZG93bigpIj48Qj5nZXRPbmtleWRvd24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIG9uS2V5RG93biBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjZ2V0T25LZXlEb3duKCkiPjxCPmdldE9uS2V5RG93bigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBvbktleURvd24gZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjZ2V0T25rZXlwcmVzcygpIj48Qj5nZXRPbmtleXByZXNzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBvbktleVByZXNzIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRPbktleVByZXNzKCkiPjxCPmdldE9uS2V5UHJlc3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgb25LZXlQcmVzcyBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRPbmtleXVwKCkiPjxCPmdldE9ua2V5dXAoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIG9uS2V5VXAgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI2dldE9uS2V5VXAoKSI+PEI+Z2V0T25LZXlVcCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBvbktleVVwIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI2dldE9ubW91c2Vkb3duKCkiPjxCPmdldE9ubW91c2Vkb3duKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBvbk1vdXNlRG93biBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjZ2V0T25Nb3VzZURvd24oKSI+PEI+Z2V0T25Nb3VzZURvd24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgb25Nb3VzZURvd24gZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjZ2V0T25tb3VzZW1vdmUoKSI+PEI+Z2V0T25tb3VzZW1vdmUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIG9uTW91c2VNb3ZlIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRPbk1vdXNlTW92ZSgpIj48Qj5nZXRPbk1vdXNlTW92ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBvbk1vdXNlTW92ZSBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRPbm1vdXNlb3V0KCkiPjxCPmdldE9ubW91c2VvdXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIG9uTW91c2VPdXQgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI2dldE9uTW91c2VPdXQoKSI+PEI+Z2V0T25Nb3VzZU91dCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBvbk1vdXNlT3V0IGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI2dldE9ubW91c2VvdmVyKCkiPjxCPmdldE9ubW91c2VvdmVyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBvbk1vdXNlT3ZlciBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjZ2V0T25Nb3VzZU92ZXIoKSI+PEI+Z2V0T25Nb3VzZU92ZXIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgb25Nb3VzZU92ZXIgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjZ2V0T25tb3VzZXVwKCkiPjxCPmdldE9ubW91c2V1cCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgb25Nb3VzZVVwIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRPbk1vdXNlVXAoKSI+PEI+Z2V0T25Nb3VzZVVwKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIG9uTW91c2VVcCBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI2dldE9ucmVzZXQoKSI+PEI+Z2V0T25yZXNldCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJldHVybiB0aGUgb25SZXNldCBldmVudCBzY3JpcHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI2dldE9uUmVzZXQoKSI+PEI+Z2V0T25SZXNldCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBvblJlc2V0IGV2ZW50IHNjcmlwdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjZ2V0T25zZWxlY3QoKSI+PEI+Z2V0T25zZWxlY3QoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIG9uU2VsZWN0IGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRPblNlbGVjdCgpIj48Qj5nZXRPblNlbGVjdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBvblNlbGVjdCBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI2dldE9uc3VibWl0KCkiPjxCPmdldE9uc3VibWl0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBvblN1Ym1pdCBldmVudCBzY3JpcHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI2dldE9uU3VibWl0KCkiPjxCPmdldE9uU3VibWl0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZXR1cm4gdGhlIG9uU3VibWl0IGV2ZW50IHNjcmlwdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCNnZXRQYWdlKCkiPjxCPmdldFBhZ2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2dldFBhZ2UoKSI+PEI+Z2V0UGFnZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjZ2V0UGFnZSgpIj48Qj5nZXRQYWdlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+SW1hZ2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNnZXRQYWdlKCkiPjxCPmdldFBhZ2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI2dldFBhZ2UoKSI+PEI+Z2V0UGFnZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2dldFBhZ2VLZXkoKSI+PEI+Z2V0UGFnZUtleSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjZ2V0UGFnZUtleSgpIj48Qj5nZXRQYWdlS2V5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+SW1hZ2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjZ2V0UGFyYW1ldGVyKCkiPjxCPmdldFBhcmFtZXRlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+UmV0dXJuIHRoZSBnZW5lcmFsIHB1cnBvc2UgY29uZmlndWF0aW9uIHBhcmFtZXRlciBmb3IgdGhpcyBtYXBwaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sI2dldFBhcmFtZXRlcigpIj48Qj5nZXRQYXJhbWV0ZXIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sIj5Db25kaXRpb25hbFRhZ0Jhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldFBhcmFtZXRlcihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0UGFyYW1ldGVyKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPkF0dGVtcHRzIHRvIGdldCBhIHBhcmFtZXRlciBmb3IgdGhpcyByZXF1ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0UGFyYW1ldGVyTWFwKCkiPjxCPmdldFBhcmFtZXRlck1hcCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD5UaGlzIG1ldGhvZCByZXR1cm5zIG51bGwuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRQYXJhbWV0ZXJOYW1lcygpIj48Qj5nZXRQYXJhbWV0ZXJOYW1lcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD5SZXR1cm5zIHRoZSBuYW1lcyBvZiB0aGUgcGFyYW1ldGVycyBmb3IgdGhpcyByZXF1ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0UGFyYW1ldGVyVmFsdWVzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNnZXRQYXJhbUlkKCkiPjxCPmdldFBhcmFtSWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjZ2V0UGFyYW1JZCgpIj48Qj5nZXRQYXJhbUlkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNnZXRQYXJhbUlkKCkiPjxCPmdldFBhcmFtSWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNnZXRQYXJhbU5hbWUoKSI+PEI+Z2V0UGFyYW1OYW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI2dldFBhcmFtTmFtZSgpIj48Qj5nZXRQYXJhbU5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI2dldFBhcmFtTmFtZSgpIj48Qj5nZXRQYXJhbU5hbWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNnZXRQYXJhbVByb3BlcnR5KCkiPjxCPmdldFBhcmFtUHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjZ2V0UGFyYW1Qcm9wZXJ0eSgpIj48Qj5nZXRQYXJhbVByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNnZXRQYXJhbVByb3BlcnR5KCkiPjxCPmdldFBhcmFtUHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNnZXRQYXJhbVNjb3BlKCkiPjxCPmdldFBhcmFtU2NvcGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjZ2V0UGFyYW1TY29wZSgpIj48Qj5nZXRQYXJhbVNjb3BlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNnZXRQYXJhbVNjb3BlKCkiPjxCPmdldFBhcmFtU2NvcGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI2dldFBhcnNlcigpIj48Qj5nZXRQYXJzZXIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPlJldHVybiB0aGUgU0FYUGFyc2VyIHdlIHdpbGwgdXNlIHRvIHBhcnNlIHRoZSBpbnB1dCBzdHJlYW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZ2V0UGFzc3dvcmQoKSI+PEI+Z2V0UGFzc3dvcmQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjZ2V0UGF0aCgpIj48Qj5nZXRQYXRoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5SZXR1cm4gdGhlIHJlcXVlc3QgVVJJIHBhdGggdXNlZCB0byBzZWxlY3QgdGhpcyBtYXBwaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCNnZXRQYXRoKCkiPjxCPmdldFBhdGgoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCI+QWN0aW9uRm9yd2FyZDwvQT4KPEREPlJldHVybiB0aGUgcGF0aC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldFBhdGhJbmZvKCkiPjxCPmdldFBhdGhJbmZvKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0UGF0aFRyYW5zbGF0ZWQoKSI+PEI+Z2V0UGF0aFRyYW5zbGF0ZWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZ2V0UGluZ0NvbW1hbmQoKSI+PEI+Z2V0UGluZ0NvbW1hbmQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNnZXRQaW5nUXVlcnkoKSI+PEI+Z2V0UGluZ1F1ZXJ5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI2dldFByZWZpeCgpIj48Qj5nZXRQcmVmaXgoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlJldHVybiB0aGUgcGFyYW1ldGVyIG5hbWUgcHJlZml4IGZvciB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sI2dldFByb3BlcnR5KCkiPjxCPmdldFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5SZXR1cm4gdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSHRtbFByb3BlcnR5VGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0h0bWxQcm9wZXJ0eVRhZy5odG1sIj5IdG1sUHJvcGVydHlUYWc8L0E+CjxERD5SZXR1cm4gdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTXVsdGlib3hUYWcuaHRtbCNnZXRQcm9wZXJ0eSgpIj48Qj5nZXRQcm9wZXJ0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTXVsdGlib3hUYWcuaHRtbCI+TXVsdGlib3hUYWc8L0E+CjxERD5SZXR1cm4gdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCNnZXRQcm9wZXJ0eSgpIj48Qj5nZXRQcm9wZXJ0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCI+T3B0aW9uczFUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCNnZXRQcm9wZXJ0eSgpIj48Qj5nZXRQcm9wZXJ0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0dldFByb3BlcnR5VGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0dldFByb3BlcnR5VGFnLmh0bWwiPkdldFByb3BlcnR5VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JhZGlvVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JhZGlvVGFnLmh0bWwiPlJhZGlvVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sI2dldFByb3BlcnR5KCkiPjxCPmdldFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1N1Ym1pdFRhZy5odG1sI2dldFByb3BlcnR5KCkiPjxCPmdldFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sI2dldFByb3BlcnR5KCkiPjxCPmdldFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sIj5DaGVja2JveFRhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCNnZXRQcm9wZXJ0eSgpIj48Qj5nZXRQcm9wZXJ0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQnV0dG9uVGFnLmh0bWwiPkJ1dHRvblRhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DYW5jZWxUYWcuaHRtbCNnZXRQcm9wZXJ0eSgpIj48Qj5nZXRQcm9wZXJ0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2FuY2VsVGFnLmh0bWwiPkNhbmNlbFRhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sI2dldFByb3BlcnR5KCkiPjxCPmdldFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sIj5MaW5rMVRhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5RXF1YWxzVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlFcXVhbHNUYWcuaHRtbCI+SWZQcm9wZXJ0eUVxdWFsc1RhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlOb3RFcXVhbHNUYWcuaHRtbCI+SWZQcm9wZXJ0eU5vdEVxdWFsc1RhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCNnZXRQcm9wZXJ0eSgpIj48Qj5nZXRQcm9wZXJ0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sIj5Xcml0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCI+RGVmaW5lVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwiPlNpemVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhZ2VUYWcuaHRtbCNnZXRQcm9wZXJ0eSgpIj48Qj5nZXRQcm9wZXJ0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhZ2VUYWcuaHRtbCI+UGFnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sI2dldFByb3BlcnR5KCkiPjxCPmdldFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwiPkJhc2VJbnB1dFRhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NhbmNlbFRhZy5odG1sI2dldFByb3BlcnR5KCkiPjxCPmdldFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2FuY2VsVGFnLmh0bWwiPkNhbmNlbFRhZzwvQT4KPEREPlJldHVybiB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sI2dldFByb3BlcnR5KCkiPjxCPmdldFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCNnZXRQcm9wZXJ0eSgpIj48Qj5nZXRQcm9wZXJ0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL011bHRpYm94VGFnLmh0bWwiPk11bHRpYm94VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQnV0dG9uVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CdXR0b25UYWcuaHRtbCI+QnV0dG9uVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU3VibWl0VGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sIj5JbWFnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI2dldFByb3BlcnR5KCkiPjxCPmdldFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCNnZXRQcm9wZXJ0eSgpIj48Qj5nZXRQcm9wZXJ0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5SZXR1cm4gdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sI2dldFByb3BlcnR5KCkiPjxCPmdldFByb3BlcnR5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2hlY2tib3hUYWcuaHRtbCI+Q2hlY2tib3hUYWc8L0E+CjxERD5SZXR1cm4gdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sIj5Db25kaXRpb25hbFRhZ0Jhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwjZ2V0UHJvcGVydHkoKSI+PEI+Z2V0UHJvcGVydHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCNnZXRQcm9wZXJ0eShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0UHJvcGVydHkoT2JqZWN0LCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpZWQgYmVhbiwKIG5vIG1hdHRlciB3aGljaCBwcm9wZXJ0eSByZWZlcmVuY2UgZm9ybWF0IGlzIHVzZWQsIHdpdGggbm8KIHR5cGUgY29udmVyc2lvbnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0JlYW5VdGlscy5odG1sI2dldFByb3BlcnR5KGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRQcm9wZXJ0eShPYmplY3QsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9CZWFuVXRpbHMuaHRtbCI+QmVhblV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpZWQgYmVhbiwKIG5vIG1hdHRlciB3aGljaCBwcm9wZXJ0eSByZWZlcmVuY2UgZm9ybWF0IGlzIHVzZWQsIGFzIGEgU3RyaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwjZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0cmlldmUgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgb2YgdGhlCiBzcGVjaWZpZWQgYmVhbiwgb3IgcmV0dXJuIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZXJlIGlzIG5vIHN1Y2gKIGRlc2NyaXB0b3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCNnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKGphdmEubGFuZy5PYmplY3QpIj48Qj5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPlByb3BlcnR5VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXRyaWV2ZSB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBzcGVjaWZpZWQgYmVhbiwgaW50cm9zcGVjdGluZwogYW5kIGNhY2hpbmcgdGhlbSB0aGUgZmlyc3QgdGltZSBhIHBhcnRpY3VsYXIgYmVhbiBjbGFzcyBpcyBlbmNvdW50ZXJlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI2dldFByb3BlcnR5RWRpdG9yQ2xhc3MoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFByb3BlcnR5RWRpdG9yQ2xhc3MoT2JqZWN0LCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSBKYXZhIENsYXNzIHJlcGVzZW50aW5nIHRoZSBwcm9wZXJ0eSBlZGl0b3IgY2xhc3MgdGhhdCBoYXMKIGJlZW4gcmVnaXN0ZXJlZCBmb3IgdGhpcyBwcm9wZXJ0eSAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sIj48Qj5HZXRQcm9wZXJ0eVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sIj5HZXRQcm9wZXJ0eVRhZzwvQT4uPEREPkV4cG9zZSB0aGUgdmFsdWUgb2YgYSBiZWFuIHByb3BlcnR5IGFzIGEgc2NyaXB0aW5nIHZhcmlhYmxlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvR2V0UHJvcGVydHlUYWcuaHRtbCNHZXRQcm9wZXJ0eVRhZygpIj48Qj5HZXRQcm9wZXJ0eVRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvR2V0UHJvcGVydHlUYWcuaHRtbCI+R2V0UHJvcGVydHlUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRlaS5odG1sIj48Qj5HZXRQcm9wZXJ0eVRlaTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRlaS5odG1sIj5HZXRQcm9wZXJ0eVRlaTwvQT4uPEREPkltcGxlbWVudGF0aW9uIG9mIDxjb2RlPlRhZ0V4dHJhSW5mbzwvY29kZT4gZm9yIHRoZSA8Yj5nZXRQcm9wZXJ0eTwvYj4KIHRhZywgaWRlbnRpZnlpbmcgdGhlIHNjcmlwdGluZyBvYmplY3QocykgdG8gYmUgbWFkZSB2aXNpYmxlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvR2V0UHJvcGVydHlUZWkuaHRtbCNHZXRQcm9wZXJ0eVRlaSgpIj48Qj5HZXRQcm9wZXJ0eVRlaSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvR2V0UHJvcGVydHlUZWkuaHRtbCI+R2V0UHJvcGVydHlUZWk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI2dldFByb3BlcnR5VHlwZShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0UHJvcGVydHlUeXBlKE9iamVjdCwgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCI+UHJvcGVydHlVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiB0aGUgSmF2YSBDbGFzcyByZXByZXNlbnRpbmcgdGhlIHByb3BlcnR5IHR5cGUgb2YgdGhlIHNwZWNpZmllZAogcHJvcGVydHksIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZXJlIGlzIG5vIHN1Y2ggcHJvcGVydHkgZm9yIHRoZQogc3BlY2lmaWVkIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRQcm90b2NvbCgpIj48Qj5nZXRQcm90b2NvbCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldFF1ZXJ5U3RyaW5nKCkiPjxCPmdldFF1ZXJ5U3RyaW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0UmVhZGVyKCkiPjxCPmdldFJlYWRlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI2dldFJlYWRNZXRob2QoamF2YS5iZWFucy5Qcm9wZXJ0eURlc2NyaXB0b3IpIj48Qj5nZXRSZWFkTWV0aG9kKFByb3BlcnR5RGVzY3JpcHRvcik8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPlByb3BlcnR5VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gYW4gYWNjZXNzaWJsZSBwcm9wZXJ0eSBnZXR0ZXIgbWV0aG9kIGZvciB0aGlzIHByb3BlcnR5LAogaWYgdGhlcmUgaXMgb25lOyBvdGhlcndpc2UgcmV0dXJuIDxjb2RlPm51bGw8L2NvZGU+Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRSZWFkb25seSgpIj48Qj5nZXRSZWFkb25seSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgcmVhZG9ubHkgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNnZXRSZWFkT25seSgpIj48Qj5nZXRSZWFkT25seSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0UmVhbFBhdGgoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFJlYWxQYXRoKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCNnZXRSZWRpcmVjdCgpIj48Qj5nZXRSZWRpcmVjdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sIj5BY3Rpb25Gb3J3YXJkPC9BPgo8REQ+UmV0dXJuIHRoZSByZWRpcmVjdCBmbGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwjZ2V0UmVkaXNwbGF5KCkiPjxCPmdldFJlZGlzcGxheSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VGaWVsZFRhZy5odG1sIj5CYXNlRmllbGRUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldFJlbW90ZUFkZHIoKSI+PEI+Z2V0UmVtb3RlQWRkcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldFJlbW90ZUhvc3QoKSI+PEI+Z2V0UmVtb3RlSG9zdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldFJlbW90ZVVzZXIoKSI+PEI+Z2V0UmVtb3RlVXNlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldFJlcXVlc3QoKSI+PEI+Z2V0UmVxdWVzdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD5SZXR1cm5zIHRoZSB1bmRlcmx5aW5nIEh0dHBTZXJ2bGV0UmVxdWVzdCBmb3IgdGhpcyB3cmFwcGVyCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRSZXF1ZXN0RGlzcGF0Y2hlcihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0UmVxdWVzdERpc3BhdGNoZXIoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRSZXF1ZXN0ZWRTZXNzaW9uSWQoKSI+PEI+Z2V0UmVxdWVzdGVkU2Vzc2lvbklkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0UmVxdWVzdFVSSSgpIj48Qj5nZXRSZXF1ZXN0VVJJKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0UmVxdWVzdFVSTCgpIj48Qj5nZXRSZXF1ZXN0VVJMKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPlRoaXMgbWV0aG9kIHJldHVybnMgbnVsbC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNnZXRSZXNvdXJjZXMoKSI+PEI+Z2V0UmVzb3VyY2VzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+QWN0aW9uPC9BPgo8REQ+UmV0dXJuIHRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBhcHBsaWNhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjZ2V0UmVzb3VyY2VzKCkiPjxCPmdldFJlc291cmNlcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+UmV0dXJuIHRoZSBhcHBsaWNhdGlvbiByZXNvdXJjZXMgZm9yIHRoaXMgd2ViIGFwcGxpY2F0aW9uLCBpZiBhbnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCNnZXRSZXR1cm5OdWxsKCkiPjxCPmdldFJldHVybk51bGwoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwjZ2V0UmV0dXJuTnVsbCgpIj48Qj5nZXRSZXR1cm5OdWxsKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjZ2V0Um9sZSgpIj48Qj5nZXRSb2xlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCI+Q29uZGl0aW9uYWxUYWdCYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwjZ2V0Um9sZSgpIj48Qj5nZXRSb2xlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9QdXRUYWcuaHRtbCI+UHV0VGFnPC9BPgo8REQ+R2V0IHRoZSByb2xlIGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9HZXRUYWcuaHRtbCNnZXRSb2xlKCkiPjxCPmdldFJvbGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0dldFRhZy5odG1sIj5HZXRUYWc8L0E+CjxERD5HZXQgdGhlIHJvbGUgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sI2dldFJvd3MoKSI+PEI+Z2V0Um93cygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwiPkJhc2VJbnB1dFRhZzwvQT4KPEREPlJldHVybiB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoaXMgZmllbGQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCNnZXRSb3dzKCkiPjxCPmdldFJvd3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhpcyBmaWVsZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjZ2V0UnVsZXMoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFJ1bGVzKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5SZXR1cm4gdGhlIHNldCBvZiBydWxlcyB0aGF0IGFwcGx5IHRvIHRoZSBzcGVjaWZpZWQgbWF0Y2ggcG9zaXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRTY2hlbWUoKSI+PEI+Z2V0U2NoZW1lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNnZXRTY29wZSgpIj48Qj5nZXRTY29wZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+UmV0dXJuIHRoZSBhdHRyaWJ1dGUgc2NvcGUgZm9yIHRoaXMgbWFwcGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjZ2V0U2NvcGUoKSI+PEI+Z2V0U2NvcGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJldHVybiB0aGUgYXR0cmlidXRlIHNjb3BlIG9mIG91ciBiZWFuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VBdHRyaWJ1dGVUYWcuaHRtbCNnZXRTY29wZSgpIj48Qj5nZXRTY29wZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUF0dHJpYnV0ZVRhZy5odG1sIj5CYXNlQXR0cmlidXRlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBhdHRyaWJ1dGUgc2NvcGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sI2dldFNjb3BlKCkiPjxCPmdldFNjb3BlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCI+V3JpdGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sI2dldFNjb3BlKCkiPjxCPmdldFNjb3BlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwiPkRlZmluZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sI2dldFNjb3BlKCkiPjxCPmdldFNjb3BlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sIj5TaXplVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNnZXRTY29wZSgpIj48Qj5nZXRTY29wZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNnZXRTY29wZSgpIj48Qj5nZXRTY29wZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI2dldFNjb3BlKCkiPjxCPmdldFNjb3BlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBhdHRyaWJ1dGUgc2NvcGUgb2Ygb3VyIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjZ2V0U2NvcGUoKSI+PEI+Z2V0U2NvcGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sIj5Db25kaXRpb25hbFRhZ0Jhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwjZ2V0U2NvcGUoKSI+PEI+Z2V0U2NvcGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwjZ2V0U2NvcGUoKSI+PEI+Z2V0U2NvcGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUF0dHJpYnV0ZVRhZy5odG1sI2dldFNjb3BlSWQoKSI+PEI+Z2V0U2NvcGVJZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUF0dHJpYnV0ZVRhZy5odG1sIj5CYXNlQXR0cmlidXRlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBzY29wZSBpZGVudGlmaWVyIG9mIHRoZSBzY29wZSB3ZSBhcmUgcmVxdWVzdGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldFNlcnZlck5hbWUoKSI+PEI+Z2V0U2VydmVyTmFtZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2dldFNlcnZlclBvcnQoKSI+PEI+Z2V0U2VydmVyUG9ydCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNnZXRTZXJ2bGV0KCkiPjxCPmdldFNlcnZsZXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD5SZXR1cm4gdGhlIGNvbnRyb2xsZXIgc2VydmxldCBpbnN0YW5jZSB0byB3aGljaCB3ZSBhcmUgYXR0YWNoZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sI2dldFNlcnZsZXQoKSI+PEI+Z2V0U2VydmxldCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sIj5BY3Rpb25Gb3JtPC9BPgo8REQ+UmV0dXJuIHRoZSBjb250cm9sbGVyIHNlcnZsZXQgaW5zdGFuY2UgdG8gd2hpY2ggd2UgYXJlIGF0dGFjaGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmdzLmh0bWwjZ2V0U2VydmxldCgpIj48Qj5nZXRTZXJ2bGV0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sIj5BY3Rpb25NYXBwaW5nczwvQT4KPEREPlJldHVybiB0aGUgPGNvZGU+QWN0aW9uU2VydmxldDwvY29kZT4gaW5zdGFuY2Ugb2Ygb3VyIG93bmluZwogYXBwbGljYXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCNnZXRTZXJ2bGV0KCkiPjxCPmdldFNlcnZsZXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQT4KPEREPkdldCB0aGUgQWN0aW9uU2VydmxldCBpbnN0YW5jZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI2dldFNlcnZsZXQoKSI+PEI+Z2V0U2VydmxldCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwiPkRpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0U2VydmxldFBhdGgoKSI+PEI+Z2V0U2VydmxldFBhdGgoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRTZXNzaW9uKCkiPjxCPmdldFNlc3Npb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNnZXRTZXNzaW9uKGJvb2xlYW4pIj48Qj5nZXRTZXNzaW9uKGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI2dldFNpbXBsZVByb3BlcnR5KGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRTaW1wbGVQcm9wZXJ0eShPYmplY3QsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPlByb3BlcnR5VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgc2ltcGxlIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpZWQKIGJlYW4sIHdpdGggbm8gdHlwZSBjb252ZXJzaW9ucy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQmVhblV0aWxzLmh0bWwjZ2V0U2ltcGxlUHJvcGVydHkoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFNpbXBsZVByb3BlcnR5KE9iamVjdCwgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0JlYW5VdGlscy5odG1sIj5CZWFuVXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgc2ltcGxlIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpZWQKIGJlYW4sIGNvbnZlcnRlZCB0byBhIFN0cmluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCNnZXRTaXplKCkiPjxCPmdldFNpemUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5SZXR1cm4gdGhlIHNpemUgb2YgdGhpcyBmaWVsZCAoc3lub255bSBmb3IgPGNvZGU+Z2V0Q29scygpPC9jb2RlPikuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwjZ2V0U2l6ZSgpIj48Qj5nZXRTaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCNnZXRTaXplKCkiPjxCPmdldFNpemUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBzaXplIG9mIHRoaXMgZmllbGQgKHN5bm9ueW0gZm9yIDxjb2RlPmdldENvbHMoKTwvY29kZT4pLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwjZ2V0U2l6ZSgpIj48Qj5nZXRTaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9FcnJvck1lc3NhZ2VzLmh0bWwjZ2V0U2l6ZSgpIj48Qj5nZXRTaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Vycm9yTWVzc2FnZXMuaHRtbCI+RXJyb3JNZXNzYWdlczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiB0aGUgbnVtYmVyIG9mIGVycm9yIG1lc3NhZ2Uga2V5cyB3ZSBoYXZlIGFjY3VtdWxhdGVkIHNvIGZhci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2dldFNyYygpIj48Qj5nZXRTcmMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sI2dldFNyYygpIj48Qj5nZXRTcmMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sIj5JbWFnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjZ2V0U3JjS2V5KCkiPjxCPmdldFNyY0tleSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjZ2V0U3JjS2V5KCkiPjxCPmdldFNyY0tleSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50TWFwU3RhY2suaHRtbCNnZXRTdGFjayhqYXZheC5zZXJ2bGV0LmpzcC5QYWdlQ29udGV4dCkiPjxCPmdldFN0YWNrKFBhZ2VDb250ZXh0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL3V0aWwvQ29udGVudE1hcFN0YWNrLmh0bWwiPkNvbnRlbnRNYXBTdGFjazwvQT4KPEREPlJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgc3RhY2suCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI2dldFN0eWxlKCkiPjxCPmdldFN0eWxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZXR1cm4gdGhlIHN0eWxlIGF0dHJpYnV0ZSBmb3IgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRTdHlsZSgpIj48Qj5nZXRTdHlsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBzdHlsZSBhdHRyaWJ1dGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI2dldFN0eWxlKCkiPjxCPmdldFN0eWxlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBzdHlsZSBhdHRyaWJ1dGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwjZ2V0U3R5bGUoKSI+PEI+Z2V0U3R5bGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZXR1cm4gdGhlIHN0eWxlIGF0dHJpYnV0ZSBmb3IgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI2dldFN0eWxlQ2xhc3MoKSI+PEI+Z2V0U3R5bGVDbGFzcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBzdHlsZSBjbGFzcyBmb3IgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRTdHlsZUNsYXNzKCkiPjxCPmdldFN0eWxlQ2xhc3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgc3R5bGUgY2xhc3MgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRTdHlsZUNsYXNzKCkiPjxCPmdldFN0eWxlQ2xhc3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIHN0eWxlIGNsYXNzIGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNnZXRTdHlsZUNsYXNzKCkiPjxCPmdldFN0eWxlQ2xhc3MoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZXR1cm4gdGhlIHN0eWxlIGNsYXNzIGZvciB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjZ2V0U3R5bGVJZCgpIj48Qj5nZXRTdHlsZUlkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZXR1cm4gdGhlIHN0eWxlIGlkIGZvciB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI2dldFN0eWxlSWQoKSI+PEI+Z2V0U3R5bGVJZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSBzdHlsZSBpZCBhdHRyaWJ1dGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI2dldFN0eWxlSWQoKSI+PEI+Z2V0U3R5bGVJZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgc3R5bGUgaWQgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI2dldFN0eWxlSWQoKSI+PEI+Z2V0U3R5bGVJZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJldHVybiB0aGUgc3R5bGUgaWRlbnRpZmllciBmb3IgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI2dldFN1ZmZpeCgpIj48Qj5nZXRTdWZmaXgoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlJldHVybiB0aGUgcGFyYW1ldGVyIG5hbWUgc3VmZml4IGZvciB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI2dldFRhYmluZGV4KCkiPjxCPmdldFRhYmluZGV4KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZXR1cm5zIHRoZSB0YWJJbmRleCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI2dldFRhYkluZGV4KCkiPjxCPmdldFRhYkluZGV4KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlJldHVybnMgdGhlIHRhYkluZGV4IHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0dldFRhZy5odG1sIj48Qj5HZXRUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvR2V0VGFnLmh0bWwiPkdldFRhZzwvQT4uPEREPlRoaXMgaXMgdGhlIHRhZyBoYW5kbGVyIGZvciAmbHQ7dGVtcGxhdGU6Z2V0Jmd0Oywgd2hpY2ggZ2V0cyAKIGNvbnRlbnQgZnJvbSB0aGUgcmVxdWVzdCBzY29wZSBhbmQgZWl0aGVyIGluY2x1ZGVzIHRoZSBjb250ZW50IG9yIHByaW50cyAKIGl0LCBkZXBlbmRpbmcgdXBvbiB0aGUgdmFsdWUgb2YgdGhlIGNvbnRlbnQncyBkaXJlY3QgYXR0cmlidXRlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvR2V0VGFnLmh0bWwjR2V0VGFnKCkiPjxCPkdldFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvR2V0VGFnLmh0bWwiPkdldFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCNnZXRUYXJnZXQoKSI+PEI+Z2V0VGFyZ2V0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5SZXR1cm4gdGhlIHdpbmRvdyB0YXJnZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI2dldFRhcmdldCgpIj48Qj5nZXRUYXJnZXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJldHVybiB0aGUgd2luZG93IHRhcmdldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sI2dldFRhcmdldCgpIj48Qj5nZXRUYXJnZXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwiPkxpbmsxVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSB3aW5kb3cgdGFyZ2V0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZVRhZy5odG1sI2dldFRhcmdldCgpIj48Qj5nZXRUYXJnZXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlVGFnLmh0bWwiPkJhc2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNnZXRUYXJnZXQoKSI+PEI+Z2V0VGFyZ2V0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwjZ2V0VGFyZ2V0KCkiPjxCPmdldFRhcmdldCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJldHVybiB0aGUgd2luZG93IHRhcmdldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjZ2V0VGVtcERpcigpIj48Qj5nZXRUZW1wRGlyKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5HZXQgdGhlIGRpcmVjdG9yeSB1c2VkIHRvIHRlbXBvcmFyaWx5IHN0b3JlIGZvcm0gZmlsZXMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9JbnNlcnRUYWcuaHRtbCNnZXRUZW1wbGF0ZSgpIj48Qj5nZXRUZW1wbGF0ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvSW5zZXJ0VGFnLmh0bWwiPkluc2VydFRhZzwvQT4KPEREPkdldCB0aGUgdGVtcGxhdGUgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwjZ2V0VGV4dEVsZW1lbnRzKCkiPjxCPmdldFRleHRFbGVtZW50cygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPgo8REQ+VGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRvIHJldHJpZXZlIGFsbCB0aGUgdGV4dAogaW5wdXQgZWxlbWVudHMgb2YgdGhlIHJlcXVlc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwjZ2V0VGV4dEVsZW1lbnRzKCkiPjxCPmdldFRleHRFbGVtZW50cygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwiPkRpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNnZXRUaXRsZSgpIj48Qj5nZXRUaXRsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmV0dXJucyB0aGUgYWR2aXNvcnkgdGl0bGUgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwjZ2V0VG9TY29wZSgpIj48Qj5nZXRUb1Njb3BlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwiPkRlZmluZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sI2dldFRyYW5zYWN0aW9uKCkiPjxCPmdldFRyYW5zYWN0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sIj5JbmNsdWRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjZ2V0VHJhbnNhY3Rpb24oKSI+PEI+Z2V0VHJhbnNhY3Rpb24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI2dldFRyYW5zYWN0aW9uKCkiPjxCPmdldFRyYW5zYWN0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sIj5SZWRpcmVjdFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI2dldFRyYW5zYWN0aW9uSXNvbGF0aW9uKCkiPjxCPmdldFRyYW5zYWN0aW9uSXNvbGF0aW9uKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwiPkdlbmVyaWNDb25uZWN0aW9uPC9BPgo8REQ+UmV0dXJuIHRoaXMgQ29ubmVjdGlvbidzIGN1cnJlbnQgdHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNnZXRUeXBlKCkiPjxCPmdldFR5cGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlJldHVybiB0aGUgZnVsbHkgcXVhbGlmaWVkIEFjdGlvbiBjbGFzcyBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm1CZWFuLmh0bWwjZ2V0VHlwZSgpIj48Qj5nZXRUeXBlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbi5odG1sIj5BY3Rpb25Gb3JtQmVhbjwvQT4KPEREPlJldHVybiB0aGUgSmF2YSBjbGFzcyBuYW1lIG9mIHRoaXMgYWN0aW9uIGZvcm0gYmVhbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjZ2V0VHlwZSgpIj48Qj5nZXRUeXBlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZXR1cm4gdGhlIEphdmEgY2xhc3Mgb2Ygb3VyIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCNnZXRUeXBlKCkiPjxCPmdldFR5cGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCI+RGVmaW5lVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwjZ2V0VHlwZSgpIj48Qj5nZXRUeXBlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBKYXZhIGNsYXNzIG9mIG91ciBiZWFuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNnZXRUeXBlKCkiPjxCPmdldFR5cGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI2dldFR5cGVNYXAoKSI+PEI+Z2V0VHlwZU1hcCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sIj5HZW5lcmljQ29ubmVjdGlvbjwvQT4KPEREPihKREJDIDIuMCkgUmV0dXJuIHRoZSB0eXBlIG1hcCBmb3IgdGhpcyBjb25uZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNnZXRVbmtub3duKCkiPjxCPmdldFVua25vd24oKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlJldHVybiB0aGUgdW5rbm93biBmbGFnIGZvciB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZ3MuaHRtbCNnZXRVbmtub3duKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Qj5nZXRVbmtub3duKEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sIj5BY3Rpb25NYXBwaW5nczwvQT4KPEREPlJldHVybiB0aGUgQWN0aW9uIHRoYXQgc2hvdWxkIGhhbmRsZSB1bmtub3duIHJlcXVlc3QgcGF0aHMsIGlmIGFueS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sI2dldFVua25vd24oamF2YXguc2VydmxldC5TZXJ2bGV0UmVxdWVzdCkiPjxCPmdldFVua25vd24oU2VydmxldFJlcXVlc3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZ3MuaHRtbCI+QWN0aW9uTWFwcGluZ3M8L0E+CjxERD5SZXR1cm4gdGhlIEFjdGlvbiB0aGF0IHNob3VsZCBoYW5kbGUgdW5rbm93biByZXF1ZXN0IHBhdGhzLCBpZiBhbnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlUmVkaXJlY3RVUkxUYWcuaHRtbCNnZXRVcmwoKSI+PEI+Z2V0VXJsKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbmNvZGVSZWRpcmVjdFVSTFRhZy5odG1sIj5FbmNvZGVSZWRpcmVjdFVSTFRhZzwvQT4KPEREPlJldHVybiB0aGUgVVJMIHRvIGJlIGVuY29kZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlVVJMVGFnLmh0bWwjZ2V0VXJsKCkiPjxCPmdldFVybCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlVVJMVGFnLmh0bWwiPkVuY29kZVVSTFRhZzwvQT4KPEREPlJldHVybiB0aGUgVVJMIHRvIGJlIGVuY29kZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjZ2V0VXJsKCkiPjxCPmdldFVybCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI2dldFVzZUNvdW50KCkiPjxCPmdldFVzZUNvdW50KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNnZXRVc2VtYXAoKSI+PEI+Z2V0VXNlbWFwKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sI2dldFVzZXIoKSI+PEI+Z2V0VXNlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPkNvbmRpdGlvbmFsVGFnQmFzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI2dldFVzZXIoKSI+PEI+Z2V0VXNlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjZ2V0VXNlclByaW5jaXBhbCgpIj48Qj5nZXRVc2VyUHJpbmNpcGFsKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNnZXRWYWxpZGF0ZSgpIj48Qj5nZXRWYWxpZGF0ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+UmV0dXJuIHRoZSB2YWxpZGF0ZSBmbGFnIGZvciB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI2dldFZhbGlkYXRpbmcoKSI+PEI+Z2V0VmFsaWRhdGluZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+UmV0dXJuIHRoZSB2YWxpZGF0aW5nIHBhcnNlciBmbGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyRXF1YWxzVGFnLmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyRXF1YWxzVGFnLmh0bWwiPklmUGFyYW1ldGVyRXF1YWxzVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBjb21wYXJpc29uIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL011bHRpYm94VGFnLmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL011bHRpYm94VGFnLmh0bWwiPk11bHRpYm94VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBzZXJ2ZXIgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmFkaW9UYWcuaHRtbCNnZXRWYWx1ZSgpIj48Qj5nZXRWYWx1ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmFkaW9UYWcuaHRtbCI+UmFkaW9UYWc8L0E+CjxERD5SZXR1cm4gdGhlIHNlcnZlciB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZXNldFRhZy5odG1sI2dldFZhbHVlKCkiPjxCPmdldFZhbHVlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZXNldFRhZy5odG1sIj5SZXNldFRhZzwvQT4KPEREPlJldHVybiB0aGUgbGFiZWwgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGZpZWxkIHZhbHVlIChpZiBhbnkpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTm90RXF1YWxzVGFnLmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTm90RXF1YWxzVGFnLmh0bWwiPklmUGFyYW1ldGVyTm90RXF1YWxzVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBjb21wYXJpc29uIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1N1Ym1pdFRhZy5odG1sI2dldFZhbHVlKCkiPjxCPmdldFZhbHVlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBsYWJlbCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sI2dldFZhbHVlKCkiPjxCPmdldFZhbHVlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sIj5DaGVja2JveFRhZzwvQT4KPEREPlJldHVybiB0aGUgc2VydmVyIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0J1dHRvblRhZy5odG1sI2dldFZhbHVlKCkiPjxCPmdldFZhbHVlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCI+QnV0dG9uVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBsYWJlbCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DYW5jZWxUYWcuaHRtbCNnZXRWYWx1ZSgpIj48Qj5nZXRWYWx1ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2FuY2VsVGFnLmh0bWwiPkNhbmNlbFRhZzwvQT4KPEREPlJldHVybiB0aGUgbGFiZWwgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uVGFnLmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvblRhZy5odG1sIj5PcHRpb25UYWc8L0E+CjxERD5SZXR1cm4gdGhlIHNlcnZlciB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5RXF1YWxzVGFnLmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlFcXVhbHNUYWcuaHRtbCI+SWZQcm9wZXJ0eUVxdWFsc1RhZzwvQT4KPEREPlJldHVybiB0aGUgbWF0Y2hpbmcgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQcm9wZXJ0eU5vdEVxdWFsc1RhZy5odG1sI2dldFZhbHVlKCkiPjxCPmdldFZhbHVlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwiPklmUHJvcGVydHlOb3RFcXVhbHNUYWc8L0E+CjxERD5SZXR1cm4gdGhlIG1hdGNoaW5nIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sI2dldFZhbHVlKCkiPjxCPmdldFZhbHVlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBjb21wYXJpc29uIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9IZWFkZXJUYWcuaHRtbCI+SGVhZGVyVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCNnZXRWYWx1ZSgpIj48Qj5nZXRWYWx1ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sIj5EZWZpbmVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sI2dldFZhbHVlKCkiPjxCPmdldFZhbHVlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGFnLmh0bWwiPkNvb2tpZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFyYW1ldGVyVGFnLmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCI+UGFyYW1ldGVyVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCNnZXRWYWx1ZSgpIj48Qj5nZXRWYWx1ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGZpZWxkIHZhbHVlIChpZiBhbnkpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCNnZXRWYWx1ZSgpIj48Qj5nZXRWYWx1ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwiPlJhZGlvVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBzZXJ2ZXIgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DYW5jZWxUYWcuaHRtbCNnZXRWYWx1ZSgpIj48Qj5nZXRWYWx1ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NhbmNlbFRhZy5odG1sIj5DYW5jZWxUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGxhYmVsIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCNnZXRWYWx1ZSgpIj48Qj5nZXRWYWx1ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL011bHRpYm94VGFnLmh0bWwiPk11bHRpYm94VGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBzZXJ2ZXIgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SZXNldFRhZy5odG1sI2dldFZhbHVlKCkiPjxCPmdldFZhbHVlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCI+UmVzZXRUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGxhYmVsIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQnV0dG9uVGFnLmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CdXR0b25UYWcuaHRtbCI+QnV0dG9uVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBsYWJlbCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1N1Ym1pdFRhZy5odG1sI2dldFZhbHVlKCkiPjxCPmdldFZhbHVlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU3VibWl0VGFnLmh0bWwiPlN1Ym1pdFRhZzwvQT4KPEREPlJldHVybiB0aGUgbGFiZWwgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCNnZXRWYWx1ZSgpIj48Qj5nZXRWYWx1ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5SZXR1cm4gdGhlIGNvbXBhcmlzb24gdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCNnZXRWYWx1ZSgpIj48Qj5nZXRWYWx1ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvblRhZy5odG1sIj5PcHRpb25UYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sIj5DaGVja2JveFRhZzwvQT4KPEREPlJldHVybiB0aGUgc2VydmVyIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL01hdGNoVGFnLmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL01hdGNoVGFnLmh0bWwiPk1hdGNoVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29tcGFyZVRhZ0Jhc2UuaHRtbCNnZXRWYWx1ZSgpIj48Qj5nZXRWYWx1ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29tcGFyZVRhZ0Jhc2UuaHRtbCI+Q29tcGFyZVRhZ0Jhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwjZ2V0VmFsdWUoKSI+PEI+Z2V0VmFsdWUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoaXMgbXVsdGlwYXJ0IGVsZW1lbnQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvci5odG1sI2dldFZhbHVlcygpIj48Qj5nZXRWYWx1ZXMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9yLmh0bWwiPkFjdGlvbkVycm9yPC9BPgo8REQ+R2V0IHRoZSByZXBsYWNlbWVudCB2YWx1ZXMgZm9yIHRoaXMgZXJyb3IgbWVzc2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUZWkuaHRtbCNnZXRWYXJpYWJsZUluZm8oamF2YXguc2VydmxldC5qc3AudGFnZXh0LlRhZ0RhdGEpIj48Qj5nZXRWYXJpYWJsZUluZm8oVGFnRGF0YSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUZWkuaHRtbCI+RW51bWVyYXRlVGVpPC9BPgo8REQ+UmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzY3JpcHRpbmcgdmFyaWFibGVzIHRvIGJlIGNyZWF0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvR2V0UHJvcGVydHlUZWkuaHRtbCNnZXRWYXJpYWJsZUluZm8oamF2YXguc2VydmxldC5qc3AudGFnZXh0LlRhZ0RhdGEpIj48Qj5nZXRWYXJpYWJsZUluZm8oVGFnRGF0YSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRlaS5odG1sIj5HZXRQcm9wZXJ0eVRlaTwvQT4KPEREPlJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2NyaXB0aW5nIHZhcmlhYmxlcyB0byBiZSBjcmVhdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUZWkuaHRtbCNnZXRWYXJpYWJsZUluZm8oamF2YXguc2VydmxldC5qc3AudGFnZXh0LlRhZ0RhdGEpIj48Qj5nZXRWYXJpYWJsZUluZm8oVGFnRGF0YSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGVpLmh0bWwiPkl0ZXJhdGVUZWk8L0E+CjxERD5SZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNjcmlwdGluZyB2YXJpYWJsZXMgdG8gYmUgY3JlYXRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1NpemVUZWkuaHRtbCNnZXRWYXJpYWJsZUluZm8oamF2YXguc2VydmxldC5qc3AudGFnZXh0LlRhZ0RhdGEpIj48Qj5nZXRWYXJpYWJsZUluZm8oVGFnRGF0YSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRlaS5odG1sIj5TaXplVGVpPC9BPgo8REQ+UmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzY3JpcHRpbmcgdmFyaWFibGVzIHRvIGJlIGNyZWF0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUZWkuaHRtbCNnZXRWYXJpYWJsZUluZm8oamF2YXguc2VydmxldC5qc3AudGFnZXh0LlRhZ0RhdGEpIj48Qj5nZXRWYXJpYWJsZUluZm8oVGFnRGF0YSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGVpLmh0bWwiPkNvb2tpZVRlaTwvQT4KPEREPlJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2NyaXB0aW5nIHZhcmlhYmxlcyB0byBiZSBjcmVhdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFyYW1ldGVyVGVpLmh0bWwjZ2V0VmFyaWFibGVJbmZvKGphdmF4LnNlcnZsZXQuanNwLnRhZ2V4dC5UYWdEYXRhKSI+PEI+Z2V0VmFyaWFibGVJbmZvKFRhZ0RhdGEpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRlaS5odG1sIj5QYXJhbWV0ZXJUZWk8L0E+CjxERD5SZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNjcmlwdGluZyB2YXJpYWJsZXMgdG8gYmUgY3JlYXRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhZ2VUZWkuaHRtbCNnZXRWYXJpYWJsZUluZm8oamF2YXguc2VydmxldC5qc3AudGFnZXh0LlRhZ0RhdGEpIj48Qj5nZXRWYXJpYWJsZUluZm8oVGFnRGF0YSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFnZVRlaS5odG1sIj5QYWdlVGVpPC9BPgo8REQ+UmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzY3JpcHRpbmcgdmFyaWFibGVzIHRvIGJlIGNyZWF0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9SZXNvdXJjZVRlaS5odG1sI2dldFZhcmlhYmxlSW5mbyhqYXZheC5zZXJ2bGV0LmpzcC50YWdleHQuVGFnRGF0YSkiPjxCPmdldFZhcmlhYmxlSW5mbyhUYWdEYXRhKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9SZXNvdXJjZVRlaS5odG1sIj5SZXNvdXJjZVRlaTwvQT4KPEREPlJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2NyaXB0aW5nIHZhcmlhYmxlcyB0byBiZSBjcmVhdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRlaS5odG1sI2dldFZhcmlhYmxlSW5mbyhqYXZheC5zZXJ2bGV0LmpzcC50YWdleHQuVGFnRGF0YSkiPjxCPmdldFZhcmlhYmxlSW5mbyhUYWdEYXRhKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGVpLmh0bWwiPkluY2x1ZGVUZWk8L0E+CjxERD5SZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNjcmlwdGluZyB2YXJpYWJsZXMgdG8gYmUgY3JlYXRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRlaS5odG1sI2dldFZhcmlhYmxlSW5mbyhqYXZheC5zZXJ2bGV0LmpzcC50YWdleHQuVGFnRGF0YSkiPjxCPmdldFZhcmlhYmxlSW5mbyhUYWdEYXRhKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUZWkuaHRtbCI+RGVmaW5lVGVpPC9BPgo8REQ+UmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzY3JpcHRpbmcgdmFyaWFibGVzIHRvIGJlIGNyZWF0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUZWkuaHRtbCNnZXRWYXJpYWJsZUluZm8oamF2YXguc2VydmxldC5qc3AudGFnZXh0LlRhZ0RhdGEpIj48Qj5nZXRWYXJpYWJsZUluZm8oVGFnRGF0YSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGVpLmh0bWwiPlN0cnV0c1RlaTwvQT4KPEREPlJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2NyaXB0aW5nIHZhcmlhYmxlcyB0byBiZSBjcmVhdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGVpLmh0bWwjZ2V0VmFyaWFibGVJbmZvKGphdmF4LnNlcnZsZXQuanNwLnRhZ2V4dC5UYWdEYXRhKSI+PEI+Z2V0VmFyaWFibGVJbmZvKFRhZ0RhdGEpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRlaS5odG1sIj5IZWFkZXJUZWk8L0E+CjxERD5SZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNjcmlwdGluZyB2YXJpYWJsZXMgdG8gYmUgY3JlYXRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGVpLmh0bWwjZ2V0VmFyaWFibGVJbmZvKGphdmF4LnNlcnZsZXQuanNwLnRhZ2V4dC5UYWdEYXRhKSI+PEI+Z2V0VmFyaWFibGVJbmZvKFRhZ0RhdGEpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRlaS5odG1sIj5JdGVyYXRlVGVpPC9BPgo8REQ+UmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzY3JpcHRpbmcgdmFyaWFibGVzIHRvIGJlIGNyZWF0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNnZXRWc3BhY2UoKSI+PEI+Z2V0VnNwYWNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI2dldFdhcm5pbmdzKCkiPjxCPmdldFdhcm5pbmdzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwiPkdlbmVyaWNDb25uZWN0aW9uPC9BPgo8REQ+UmV0dXJuIHRoZSBmaXJzdCB3YXJuaW5nIHJlcG9ydGVkIGJ5IGNhbGxzIHRvIHRoaXMgQ29ubmVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2dldFdpZHRoKCkiPjxCPmdldFdpZHRoKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwjZ2V0V3JpdGVNZXRob2QoamF2YS5iZWFucy5Qcm9wZXJ0eURlc2NyaXB0b3IpIj48Qj5nZXRXcml0ZU1ldGhvZChQcm9wZXJ0eURlc2NyaXB0b3IpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIGFuIGFjY2Vzc2libGUgcHJvcGVydHkgc2V0dGVyIG1ldGhvZCBmb3IgdGhpcyBwcm9wZXJ0eSwKIGlmIHRoZXJlIGlzIG9uZTsgb3RoZXJ3aXNlIHJldHVybiA8Y29kZT5udWxsPC9jb2RlPi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0h0bWxUYWcuaHRtbCNnZXRYaHRtbCgpIj48Qj5nZXRYaHRtbCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0h0bWxUYWcuaHRtbCI+SHRtbFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sI0dMT0JBTF9FUlJPUiI+PEI+R0xPQkFMX0VSUk9SPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPkFjdGlvbkVycm9yczwvQT4KPEREPlRoZSAicHJvcGVydHkgbmFtZSIgbWFya2VyIHRvIHVzZSBmb3IgZ2xvYmFsIGVycm9ycywgYXMgb3Bwb3NlZCB0bwogdGhvc2UgcmVsYXRlZCB0byBhIHNwZWNpZmljIHByb3BlcnR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0dyZWF0ZXJFcXVhbFRhZy5odG1sIj48Qj5HcmVhdGVyRXF1YWxUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvR3JlYXRlckVxdWFsVGFnLmh0bWwiPkdyZWF0ZXJFcXVhbFRhZzwvQT4uPEREPkV2YWx1YXRlIHRoZSBuZXN0ZWQgYm9keSBjb250ZW50IG9mIHRoaXMgdGFnIGlmIHRoZSBzcGVjaWZpZWQgdmFyaWFibGUKIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvR3JlYXRlckVxdWFsVGFnLmh0bWwjR3JlYXRlckVxdWFsVGFnKCkiPjxCPkdyZWF0ZXJFcXVhbFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvR3JlYXRlckVxdWFsVGFnLmh0bWwiPkdyZWF0ZXJFcXVhbFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0dyZWF0ZXJUaGFuVGFnLmh0bWwiPjxCPkdyZWF0ZXJUaGFuVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0dyZWF0ZXJUaGFuVGFnLmh0bWwiPkdyZWF0ZXJUaGFuVGFnPC9BPi48REQ+RXZhbHVhdGUgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCB2YXJpYWJsZQogaXMgZ3JlYXRlciB0aGFuIHRoZSBzcGVjaWZpZWQgdmFsdWUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9HcmVhdGVyVGhhblRhZy5odG1sI0dyZWF0ZXJUaGFuVGFnKCkiPjxCPkdyZWF0ZXJUaGFuVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9HcmVhdGVyVGhhblRhZy5odG1sIj5HcmVhdGVyVGhhblRhZzwvQT4KPEREPiZuYnNwOwo8L0RMPgo8SFI+CjxBIE5BTUU9Il9IXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5IPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI2hhbmRsZVJlcXVlc3QoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxCPmhhbmRsZVJlcXVlc3QoSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQT4KPEREPkFmdGVyIGNvbnN0cnVjdGVkLCB0aGlzIGlzIHRoZSBmaXJzdCBtZXRob2QgY2FsbGVkIG9uCiBieSBBY3Rpb25TZXJ2bGV0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI2hhbmRsZVJlcXVlc3QoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxCPmhhbmRsZVJlcXVlc3QoSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sIj5EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXI8L0E+CjxERD5UaGlzIG1ldGhvZCBwb3B1bGF0ZXMgdGhlIGludGVybmFsIGhhc2h0YWJsZXMgd2l0aCBtdWx0aXBhcnQgcmVxdWVzdCBkYXRhLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL1B1dFRhZy5odG1sI2hhc0JvZHkoKSI+PEI+aGFzQm9keSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwiPlB1dFRhZzwvQT4KPEREPlJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGlzIHRhZyBoYXMgYSBib2R5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sI2hhc2hDb2RlKCkiPjxCPmhhc2hDb2RlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPkZhc3RIYXNoTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSBoYXNoIGNvZGUgdmFsdWUgZm9yIHRoaXMgbWFwLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjaGFzaENvZGUoKSI+PEI+aGFzaENvZGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSBoYXNoIGNvZGUgdmFsdWUgZm9yIHRoaXMgbGlzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCNoYXNoQ29kZSgpIj48Qj5oYXNoQ29kZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiB0aGUgaGFzaCBjb2RlIHZhbHVlIGZvciB0aGlzIG1hcC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvSXRlcmF0b3JBZGFwdGVyLmh0bWwjaGFzTmV4dCgpIj48Qj5oYXNOZXh0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0l0ZXJhdG9yQWRhcHRlci5odG1sIj5JdGVyYXRvckFkYXB0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCNoZWFkZXIiPjxCPmhlYWRlcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPkNvbmRpdGlvbmFsVGFnQmFzZTwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBIVFRQIHJlcXVlc3QgaGVhZGVyIHRvIGJlIHVzZWQgYXMgYSB2YXJpYWJsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sI0hFQURFUl9FTkNPRElORyI+PEI+SEVBREVSX0VOQ09ESU5HPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0VmFsdWVTdHJlYW0uaHRtbCI+TXVsdGlwYXJ0VmFsdWVTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sIj48Qj5IZWFkZXJUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sIj5IZWFkZXJUYWc8L0E+LjxERD5EZWZpbmUgYSBzY3JpcHRpbmcgdmFyaWFibGUgYmFzZWQgb24gdGhlIHZhbHVlKHMpIG9mIHRoZSBzcGVjaWZpZWQKIGhlYWRlciByZWNlaXZlZCB3aXRoIHRoaXMgcmVxdWVzdC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwjSGVhZGVyVGFnKCkiPjxCPkhlYWRlclRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sIj5IZWFkZXJUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRlaS5odG1sIj48Qj5IZWFkZXJUZWk8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRlaS5odG1sIj5IZWFkZXJUZWk8L0E+LjxERD5JbXBsZW1lbnRhdGlvbiBvZiA8Y29kZT5UYWdFeHRyYUluZm88L2NvZGU+IGZvciB0aGUgPGI+aGVhZGVyPC9iPgogdGFnLCBpZGVudGlmeWluZyB0aGUgc2NyaXB0aW5nIG9iamVjdChzKSB0byBiZSBtYWRlIHZpc2libGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRlaS5odG1sI0hlYWRlclRlaSgpIj48Qj5IZWFkZXJUZWkoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9IZWFkZXJUZWkuaHRtbCI+SGVhZGVyVGVpPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjaGVhZE1hcChqYXZhLmxhbmcuT2JqZWN0KSI+PEI+aGVhZE1hcChPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiBhIHZpZXcgb2YgdGhlIHBvcnRpb24gb2YgdGhpcyBtYXAgd2hvc2Uga2V5cyBhcmUgc3RyaWN0bHkKIGxlc3MgdGhhbiB0aGUgc3BlY2lmaWVkIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2hlaWdodCI+PEI+aGVpZ2h0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlRoZSBpbWFnZSBoZWlnaHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSGlkZGVuVGFnLmh0bWwiPjxCPkhpZGRlblRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9IaWRkZW5UYWcuaHRtbCI+SGlkZGVuVGFnPC9BPi48REQ+Q3VzdG9tIHRhZyBmb3IgaW5wdXQgZmllbGRzIG9mIHR5cGUgInRleHQiLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9IaWRkZW5UYWcuaHRtbCI+PEI+SGlkZGVuVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9IaWRkZW5UYWcuaHRtbCI+SGlkZGVuVGFnPC9BPi48REQ+Q3VzdG9tIHRhZyBmb3IgaW5wdXQgZmllbGRzIG9mIHR5cGUgInRleHQiLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSGlkZGVuVGFnLmh0bWwjSGlkZGVuVGFnKCkiPjxCPkhpZGRlblRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSGlkZGVuVGFnLmh0bWwiPkhpZGRlblRhZzwvQT4KPEREPkNvbnN0cnVjdCBhIG5ldyBpbnN0YW5jZSBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0hpZGRlblRhZy5odG1sI0hpZGRlblRhZygpIj48Qj5IaWRkZW5UYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9IaWRkZW5UYWcuaHRtbCI+SGlkZGVuVGFnPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCNocmVmIj48Qj5ocmVmPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5UaGUgaHlwZXJsaW5rIFVSSS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZWRpcmVjdFRhZy5odG1sI2hyZWYiPjxCPmhyZWY8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+VGhlIGh5cGVybGluayBVUkkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGluazFUYWcuaHRtbCNocmVmIj48Qj5ocmVmPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sIj5MaW5rMVRhZzwvQT4KPEREPlRoZSBoeXBlcmxpbmsgVVJJLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sI2hyZWYiPjxCPmhyZWY8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+CjxERD5UaGUgYWJzb2x1dGUgVVJMIHRvIHRoZSByZXNvdXJjZSB0byBiZSBpbmNsdWRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNocmVmIj48Qj5ocmVmPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+VGhlIGh5cGVybGluayBVUkkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNocmVmIj48Qj5ocmVmPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sIj5SZWRpcmVjdFRhZzwvQT4KPEREPlRoZSByZWRpcmVjdCBVUkkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNoc3BhY2UiPjxCPmhzcGFjZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5UaGUgaG9yaXpvbnRhbCBzcGFjaW5nIGFyb3VuZCB0aGUgaW1hZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSHRtbFByb3BlcnR5VGFnLmh0bWwiPjxCPkh0bWxQcm9wZXJ0eVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9IdG1sUHJvcGVydHlUYWcuaHRtbCI+SHRtbFByb3BlcnR5VGFnPC9BPi48REQ+Q3VzdG9tIHRhZyBpbXBsZW1lbnRhdGlvbiB0aGF0IGFjdHMgbGlrZQogPGNvZGU+Jmx0O2pzcDpnZXRQcm9wZXJ0eSZndDs8L2NvZGU+IGJ1dCBlbmNvZGVzIHRoZSBvdXRwdXQgc3RyZWFtIHNvIHRoYXQKIEhUTUwtcmVsYXRlZCBjaGFyYWN0ZXJzIGRvIG5vdCBjYXVzZSBkaWZmaWN1bHRpZXMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9IdG1sUHJvcGVydHlUYWcuaHRtbCNIdG1sUHJvcGVydHlUYWcoKSI+PEI+SHRtbFByb3BlcnR5VGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9IdG1sUHJvcGVydHlUYWcuaHRtbCI+SHRtbFByb3BlcnR5VGFnPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSHRtbFRhZy5odG1sIj48Qj5IdG1sVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9IdG1sVGFnLmh0bWwiPkh0bWxUYWc8L0E+LjxERD5SZW5kZXJzIGFuIEhUTUwgPGh0bWw+IGVsZW1lbnQgd2l0aCBhcHByb3ByaWF0ZSBsYW5ndWFnZSBhdHRyaWJ1dGVzIGlmCiB0aGVyZSBpcyBhIGN1cnJlbnQgTG9jYWxlIGF2YWlsYWJsZSBpbiB0aGUgdXNlcidzIHNlc3Npb24uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0h0bWxUYWcuaHRtbCNIdG1sVGFnKCkiPjxCPkh0bWxUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9IdG1sVGFnLmh0bWwiPkh0bWxUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwjaHlwZXJsaW5rKCkiPjxCPmh5cGVybGluaygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBzcGVjaWZpZWQgaHlwZXJsaW5rLCBtb2RpZmllZCBhcyBuZWNlc3Nhcnkgd2l0aCBvcHRpb25hbAogcmVxdWVzdCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwjaHlwZXJsaW5rKCkiPjxCPmh5cGVybGluaygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGluazFUYWcuaHRtbCI+TGluazFUYWc8L0E+CjxERD5SZXR1cm4gdGhlIHNwZWNpZmllZCBoeXBlcmxpbmssIG1vZGlmaWVkIGFzIG5lY2Vzc2FyeSB3aXRoIG9wdGlvbmFsCiByZXF1ZXN0IHBhcmFtZXRlcnMuCjwvREw+CjxIUj4KPEEgTkFNRT0iX0lfIj48IS0tIC0tPjwvQT48SDI+CjxCPkk8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sI2lkIj48Qj5pZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBzY3JpcHRpbmcgdmFyaWFibGUgdG8gYmUgZXhwb3NlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sI2lkIj48Qj5pZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvR2V0UHJvcGVydHlUYWcuaHRtbCI+R2V0UHJvcGVydHlUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgc2NyaXB0aW5nIHZhcmlhYmxlIHRvIGJlIGV4cG9zZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI2lkIj48Qj5pZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHNjcmlwdGluZyB2YXJpYWJsZSB0byBiZSBleHBvc2VkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwjaWQiPjxCPmlkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwiPkhlYWRlclRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBzY3JpcHRpbmcgdmFyaWFibGUgdGhhdCB3aWxsIGJlIGV4cG9zZWQgYXMgYSBwYWdlCiBzY29wZSBhdHRyaWJ1dGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCNpZCI+PEI+aWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCI+RGVmaW5lVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHNjcmlwdGluZyB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgZXhwb3NlZCBhcyBhIHBhZ2UKIHNjb3BlIGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1NpemVUYWcuaHRtbCNpZCI+PEI+aWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwiPlNpemVUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgc2NyaXB0aW5nIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBleHBvc2VkIGFzIGEgcGFnZQogc2NvcGUgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGFnLmh0bWwjaWQiPjxCPmlkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGFnLmh0bWwiPkNvb2tpZVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBzY3JpcHRpbmcgdmFyaWFibGUgdGhhdCB3aWxsIGJlIGV4cG9zZWQgYXMgYSBwYWdlCiBzY29wZSBhdHRyaWJ1dGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCNpZCI+PEI+aWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCI+UGFyYW1ldGVyVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHNjcmlwdGluZyB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgZXhwb3NlZCBhcyBhIHBhZ2UKIHNjb3BlIGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1Jlc291cmNlVGFnLmh0bWwjaWQiPjxCPmlkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCI+UmVzb3VyY2VUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgc2NyaXB0aW5nIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBleHBvc2VkIGFzIGEgcGFnZQogc2NvcGUgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sI2lkIj48Qj5pZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCI+SW5jbHVkZVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBzY3JpcHRpbmcgdmFyaWFibGUgdGhhdCB3aWxsIGJlIGV4cG9zZWQgYXMgYSBwYWdlCiBzY29wZSBhdHRyaWJ1dGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCNpZCI+PEI+aWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCI+U3RydXRzVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHNjcmlwdGluZyB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgZXhwb3NlZCBhcyBhIHBhZ2UKIHNjb3BlIGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhZ2VUYWcuaHRtbCNpZCI+PEI+aWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYWdlVGFnLmh0bWwiPlBhZ2VUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgc2NyaXB0aW5nIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBleHBvc2VkIGFzIGEgcGFnZQogc2NvcGUgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNpZCI+PEI+aWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBzY3JpcHRpbmcgdmFyaWFibGUgdG8gYmUgZXhwb3NlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZkF0dHJpYnV0ZUV4aXN0c1RhZy5odG1sIj48Qj5JZkF0dHJpYnV0ZUV4aXN0c1RhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZkF0dHJpYnV0ZUV4aXN0c1RhZy5odG1sIj5JZkF0dHJpYnV0ZUV4aXN0c1RhZzwvQT4uPEREPkNvbmRpdGlvbmFsbHkgaW5jbHVkZSB0aGUgYm9keSBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZQogZXhpc3RzIGluIHRoZSBzcGVjaWZpZWQgc2NvcGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZkF0dHJpYnV0ZUV4aXN0c1RhZy5odG1sI0lmQXR0cmlidXRlRXhpc3RzVGFnKCkiPjxCPklmQXR0cmlidXRlRXhpc3RzVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZkF0dHJpYnV0ZUV4aXN0c1RhZy5odG1sIj5JZkF0dHJpYnV0ZUV4aXN0c1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmQXR0cmlidXRlTWlzc2luZ1RhZy5odG1sIj48Qj5JZkF0dHJpYnV0ZU1pc3NpbmdUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZBdHRyaWJ1dGVNaXNzaW5nVGFnLmh0bWwiPklmQXR0cmlidXRlTWlzc2luZ1RhZzwvQT4uPEREPkNvbmRpdGlvbmFsbHkgaW5jbHVkZSB0aGUgYm9keSBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZQogZG9lcyBub3QgZXhpc3QgaW4gdGhlIHNwZWNpZmllZCBzY29wZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmQXR0cmlidXRlTWlzc2luZ1RhZy5odG1sI0lmQXR0cmlidXRlTWlzc2luZ1RhZygpIj48Qj5JZkF0dHJpYnV0ZU1pc3NpbmdUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmQXR0cmlidXRlTWlzc2luZ1RhZy5odG1sIj5JZkF0dHJpYnV0ZU1pc3NpbmdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlckVxdWFsc1RhZy5odG1sIj48Qj5JZlBhcmFtZXRlckVxdWFsc1RhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlckVxdWFsc1RhZy5odG1sIj5JZlBhcmFtZXRlckVxdWFsc1RhZzwvQT4uPEREPkNvbmRpdGlvbmFsbHkgaW5jbHVkZSB0aGUgYm9keSBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcgogbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHZhbHVlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJFcXVhbHNUYWcuaHRtbCNJZlBhcmFtZXRlckVxdWFsc1RhZygpIj48Qj5JZlBhcmFtZXRlckVxdWFsc1RhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJFcXVhbHNUYWcuaHRtbCI+SWZQYXJhbWV0ZXJFcXVhbHNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdEVxdWFsc1RhZy5odG1sIj48Qj5JZlBhcmFtZXRlck5vdEVxdWFsc1RhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdEVxdWFsc1RhZy5odG1sIj5JZlBhcmFtZXRlck5vdEVxdWFsc1RhZzwvQT4uPEREPkNvbmRpdGlvbmFsbHkgaW5jbHVkZSB0aGUgYm9keSBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcgogZG9lcyBub3QgbWF0Y2ggdGhlIHNwZWNpZmllZCB2YWx1ZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTm90RXF1YWxzVGFnLmh0bWwjSWZQYXJhbWV0ZXJOb3RFcXVhbHNUYWcoKSI+PEI+SWZQYXJhbWV0ZXJOb3RFcXVhbHNUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTm90RXF1YWxzVGFnLmh0bWwiPklmUGFyYW1ldGVyTm90RXF1YWxzVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOb3ROdWxsVGFnLmh0bWwiPjxCPklmUGFyYW1ldGVyTm90TnVsbFRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdE51bGxUYWcuaHRtbCI+SWZQYXJhbWV0ZXJOb3ROdWxsVGFnPC9BPi48REQ+Q29uZGl0aW9uYWxseSBpbmNsdWRlIHRoZSBib2R5IG9mIHRoaXMgdGFnIGlmIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVyCiBpcyBwcmVzZW50IGluIHRoZSBjdXJyZW50IHJlcXVlc3QsIGFuZCBoYXMgYSBsZW5ndGggZ3JlYXRoZXIgdGhhbiB6ZXJvLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOb3ROdWxsVGFnLmh0bWwjSWZQYXJhbWV0ZXJOb3ROdWxsVGFnKCkiPjxCPklmUGFyYW1ldGVyTm90TnVsbFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOb3ROdWxsVGFnLmh0bWwiPklmUGFyYW1ldGVyTm90TnVsbFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTnVsbFRhZy5odG1sIj48Qj5JZlBhcmFtZXRlck51bGxUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOdWxsVGFnLmh0bWwiPklmUGFyYW1ldGVyTnVsbFRhZzwvQT4uPEREPkNvbmRpdGlvbmFsbHkgaW5jbHVkZSB0aGUgYm9keSBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcgogaXMgbm90IHByZXNlbnQgaW4gdGhlIGN1cnJlbnQgcmVxdWVzdCwgb3IgaXQgaXMgcHJlc2VudCBhcyBhIHplcm8gbGVuZ3RoCiBzdHJpbmcuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck51bGxUYWcuaHRtbCNJZlBhcmFtZXRlck51bGxUYWcoKSI+PEI+SWZQYXJhbWV0ZXJOdWxsVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck51bGxUYWcuaHRtbCI+SWZQYXJhbWV0ZXJOdWxsVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQcm9wZXJ0eUVxdWFsc1RhZy5odG1sIj48Qj5JZlByb3BlcnR5RXF1YWxzVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlFcXVhbHNUYWcuaHRtbCI+SWZQcm9wZXJ0eUVxdWFsc1RhZzwvQT4uPEREPkNvbmRpdGlvbmFsbHkgaW5jbHVkZSB0aGUgYm9keSBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5CiBvZiB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZSAoaW4gYW55IHNjb3BlKSBoYXMgdGhlIHNwZWNpZmllZCB2YWx1ZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlFcXVhbHNUYWcuaHRtbCNJZlByb3BlcnR5RXF1YWxzVGFnKCkiPjxCPklmUHJvcGVydHlFcXVhbHNUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlFcXVhbHNUYWcuaHRtbCI+SWZQcm9wZXJ0eUVxdWFsc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlOb3RFcXVhbHNUYWcuaHRtbCI+PEI+SWZQcm9wZXJ0eU5vdEVxdWFsc1RhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwiPklmUHJvcGVydHlOb3RFcXVhbHNUYWc8L0E+LjxERD5Db25kaXRpb25hbGx5IGluY2x1ZGUgdGhlIGJvZHkgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eQogb2YgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUgKGluIGFueSBzY29wZSkgaGFzIHRoZSBzcGVjaWZpZWQgdmFsdWUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwjSWZQcm9wZXJ0eU5vdEVxdWFsc1RhZygpIj48Qj5JZlByb3BlcnR5Tm90RXF1YWxzVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwiPklmUHJvcGVydHlOb3RFcXVhbHNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjaWdub3JhYmxlV2hpdGVzcGFjZShjaGFyW10sIGludCwgaW50KSI+PEI+aWdub3JhYmxlV2hpdGVzcGFjZShjaGFyW10sIGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPlByb2Nlc3Mgbm90aWZpY2F0aW9uIG9mIGlnbm9yYWJsZSB3aGl0ZXNwYWNlIHJlY2VpdmVkIGZyb20gdGhlIGJvZHkgb2YKIGFuIFhNTCBlbGVtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCNpZ25vcmUiPjxCPmlnbm9yZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwiPldyaXRlVGFnPC9BPgo8REQ+U2hvdWxkIHdlIGlnbm9yZSBtaXNzaW5nIGJlYW5zIGFuZCBzaW1wbHkgb3V0cHV0IG5vdGhpbmc/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNpbWFnZU5hbWUiPjxCPmltYWdlTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5UaGUgaW1hZ2UgbmFtZSBmb3IgbmFtZWQgaW1hZ2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+PEI+SW1hZ2VUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPi48REQ+VGFnIGZvciBpbnB1dCBmaWVsZHMgb2YgdHlwZSAiaW1hZ2UiLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sI0ltYWdlVGFnKCkiPjxCPkltYWdlVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+SW1hZ2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj48Qj5JbWdUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+LjxERD5HZW5lcmF0ZSBhbiBJTUcgdGFnIHRvIHRoZSBzcGVjaWZpZWQgaW1hZ2UgVVJJLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNJbWdUYWcoKSI+PEI+SW1nVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFZhbHVlU3RyZWFtLmh0bWwjaW4iPjxCPmluPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sIj5NdWx0aXBhcnRWYWx1ZVN0cmVhbTwvQT4KPEREPnRoZSB1bmRlcmx5aW5nIHN0cmVhbQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNpbmNsdWRlIj48Qj5pbmNsdWRlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5UaGUgY29udGV4dCByZWxhdGl2ZSBwYXRoIG9mIHRoZSBzZXJ2bGV0IG9yIEpTUCByZXNvdXJjZSAodG8gYmUgY2FsbGVkCiB2aWEgPGNvZGU+UmVxdWVzdERpc3BhdGNoZXIuaW5jbHVkZSgpPC9jb2RlPikgdGhhdCB3aWxsIHByb2Nlc3MgdGhpcwogcmVxdWVzdCwgcmF0aGVyIHRoYW4gaW5zdGFudGlhdGluZyBhbmQgY2FsbGluZyB0aGUgQWN0aW9uIGNsYXNzIHRoYXQgaXMKIHNwZWNpZmllZCBieSB0aGUgPGNvZGU+dHlwZTwvY29kZT4gYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9JbmNsdWRlQWN0aW9uLmh0bWwiPjxCPkluY2x1ZGVBY3Rpb248L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9JbmNsdWRlQWN0aW9uLmh0bWwiPkluY2x1ZGVBY3Rpb248L0E+LjxERD5BbiA8c3Ryb25nPkFjdGlvbjwvc3Ryb25nPiB0aGF0IGluY2x1ZGVzIHRoZSBjb250ZXh0LXJlbGF0aXZlCiBVUkkgc3BlY2lmaWVkIGJ5IHRoZSA8Y29kZT5wYXJhbWV0ZXI8L2NvZGU+IHByb3BlcnR5IG9mIG91ciBhc3NvY2lhdGVkCiA8Y29kZT5BY3Rpb25NYXBwaW5nPC9jb2RlPi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9JbmNsdWRlQWN0aW9uLmh0bWwjSW5jbHVkZUFjdGlvbigpIj48Qj5JbmNsdWRlQWN0aW9uKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0luY2x1ZGVBY3Rpb24uaHRtbCI+SW5jbHVkZUFjdGlvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0luY2x1ZGVUYWcuaHRtbCI+PEI+SW5jbHVkZVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+LjxERD5QZXJmb3JtIGFuIGluY2x1ZGUgb2YgYSBwYWdlIHRoYXQgaXMgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwKIEFjdGlvbkZvcndhcmRzIGNvbGxlY3Rpb24gYXNzb2NpYXRlZCB3aXRoIG91ciBhcHBsaWNhdGlvbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sIj48Qj5JbmNsdWRlVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+LjxERD5EZWZpbmUgdGhlIGNvbnRlbnRzIG9mIGEgc3BlY2lmaWVkIGludHJhLWFwcGxpY2F0aW9uIHJlcXVlc3QgYXMgYQogcGFnZSBzY29wZSBhdHRyaWJ1dGUgb2YgdHlwZSA8Y29kZT5qYXZhLmxhbmcuU3RyaW5nPC9jb2RlPi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0luY2x1ZGVUYWcuaHRtbCNJbmNsdWRlVGFnKCkiPjxCPkluY2x1ZGVUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0luY2x1ZGVUYWcuaHRtbCI+SW5jbHVkZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sI0luY2x1ZGVUYWcoKSI+PEI+SW5jbHVkZVRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCI+SW5jbHVkZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRlaS5odG1sIj48Qj5JbmNsdWRlVGVpPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGVpLmh0bWwiPkluY2x1ZGVUZWk8L0E+LjxERD5JbXBsZW1lbnRhdGlvbiBvZiA8Y29kZT5UYWdFeHRyYUluZm88L2NvZGU+IGZvciB0aGUgPGI+aW5jbHVkZTwvYj4KIHRhZywgaWRlbnRpZnlpbmcgdGhlIHNjcmlwdGluZyBvYmplY3QocykgdG8gYmUgbWFkZSB2aXNpYmxlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGVpLmh0bWwjSW5jbHVkZVRlaSgpIj48Qj5JbmNsdWRlVGVpKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRlaS5odG1sIj5JbmNsdWRlVGVpPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCNJTkRFWEVEX0RFTElNIj48Qj5JTkRFWEVEX0RFTElNPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPlByb3BlcnR5VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUaGUgZGVsaW1pdGVyIHRoYXQgcHJlY2VlZHMgdGhlIHplcm8tcmVsYXRpdmUgc3Vic2NyaXB0IGZvciBhbgogaW5kZXhlZCByZWZlcmVuY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCNJTkRFWEVEX0RFTElNMiI+PEI+SU5ERVhFRF9ERUxJTTI8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCI+UHJvcGVydHlVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1RoZSBkZWxpbWl0ZXIgdGhhdCBmb2xsb3dzIHRoZSB6ZXJvLXJlbGF0aXZlIHN1YnNjcmlwdCBmb3IgYW4KIGluZGV4ZWQgcmVmZXJlbmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNpbmRleElkIj48Qj5pbmRleElkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgc2NyaXB0aW5nIHZhcmlhYmxlIHRvIGJlIGV4cG9zZWQgYXMgdGhlIGN1cnJlbnQgaW5kZXguCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNpbmRleE9mKGphdmEubGFuZy5PYmplY3QpIj48Qj5pbmRleE9mKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1NlYXJjaCBmb3IgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGdpdmVuIGFyZ3VtZW50LCB0ZXN0aW5nCiBmb3IgZXF1YWxpdHkgdXNpbmcgdGhlIDxjb2RlPmVxdWFscygpPC9jb2RlPiBtZXRob2QsIGFuZCByZXR1cm4KIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4LCBvciAtMSBpZiB0aGUgb2JqZWN0IGlzIG5vdCBmb3VuZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjaW5pdCgpIj48Qj5pbml0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5Jbml0aWFsaXplIHRoaXMgc2VydmxldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjaW5pdEFjdGlvbnMoKSI+PEI+aW5pdEFjdGlvbnMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkluaXRpYWxpemUgdGhlIGNvbGxlY3Rpb24gb2YgcHJldmlvdXNseSBpbnN0YW50aWF0ZWQgQWN0aW9uIGluc3RhbmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjaW5pdEFwcGxpY2F0aW9uKCkiPjxCPmluaXRBcHBsaWNhdGlvbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+SW5pdGlhbGl6ZSB0aGUgTWVzc2FnZVJlc291cmNlcyBidW5kbGUgZm9yIHRoaXMgYXBwbGljYXRpb24sIGlmIGFueS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjaW5pdERhdGFTb3VyY2VzKCkiPjxCPmluaXREYXRhU291cmNlcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+SW5pdGlhbGl6ZSB1c2Ugb2YgdGhlIGRhdGEgc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcwogYXBwbGljYXRpb24gKGlmIGFueSkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2luaXREZWJ1ZygpIj48Qj5pbml0RGVidWcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkluaXRpYWxpemUgdGhlIGRlYnVnZ2luZyBkZXRhaWwgbGV2ZWwgZm9yIHRoaXMgYXBwbGljYXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2luaXREaWdlc3RlcihpbnQpIj48Qj5pbml0RGlnZXN0ZXIoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkNvbnN0cnVjdCBhbmQgcmV0dXJuIGEgZGlnZXN0ZXIgdGhhdCB1c2VzIHRoZSBuZXcgY29uZmlndXJhdGlvbgogZmlsZSBmb3JtYXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2luaXREaWdlc3Rlck9sZChpbnQpIj48Qj5pbml0RGlnZXN0ZXJPbGQoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkNvbnN0cnVjdCBhbmQgcmV0dXJuIGEgZGlnZXN0ZXIgdGhhdCB1c2VzIHRoZSBvbGQgY29uZmlndXJhdGlvbgogZmlsZSBmb3JtYXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI2luaXRJbnRlcm5hbCgpIj48Qj5pbml0SW50ZXJuYWwoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkluaXRpYWxpemUgb3VyIGludGVybmFsIE1lc3NhZ2VSZXNvdXJjZXMgYnVuZGxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNpbml0TWFwcGluZygpIj48Qj5pbml0TWFwcGluZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+SW5pdGlhbGl6ZSB0aGUgbWFwcGluZyBpbmZvcm1hdGlvbiBmb3IgdGhpcyBhcHBsaWNhdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjaW5pdE90aGVyKCkiPjxCPmluaXRPdGhlcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+SW5pdGlhbGl6ZSBvdGhlciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgdGhhdCBoYXZlIG5vdCB5ZXQKIGJlZW4gcHJvY2Vzc2VkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNpbml0U2VydmxldCgpIj48Qj5pbml0U2VydmxldCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+SW5pdGlhbGl6ZSB0aGUgc2VydmxldCBtYXBwaW5nIHVuZGVyIHdoaWNoIG91ciBjb250cm9sbGVyIHNlcnZsZXQKIGlzIGJlaW5nIGFjY2Vzc2VkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNpbml0VXBsb2FkKCkiPjxCPmluaXRVcGxvYWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkluaXRpYWxpemUgdXBsb2FkIHBhcmFtZXRlcnMgYW5kICJidWZmZXJTaXplIiwgIm11bHRpcGFydENsYXNzIiwKICJtYXhGaWxlU2l6ZSIsICJ0ZW1wRGlyIgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNpbnB1dCI+PEI+aW5wdXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlRoZSBjb250ZXh0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGlucHV0IGZvcm0gdG8gd2hpY2ggY29udHJvbCBzaG91bGQKIGJlIHJldHVybmVkIGlmIGEgdmFsaWRhdGlvbiBlcnJvciBpcyBlbmNvdW50ZXJlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1Jlc291cmNlVGFnLmh0bWwjaW5wdXQiPjxCPmlucHV0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCI+UmVzb3VyY2VUYWc8L0E+CjxERD5SZXR1cm4gYW4gSW5wdXRTdHJlYW0gdG8gdGhlIHNwZWNpZmllZCByZXNvdXJjZSBpZiB0aGlzIGlzIG5vbi1udWxsLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCNpbnB1dFN0cmVhbSI+PEI+aW5wdXRTdHJlYW08L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCI+QnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbTwvQT4KPEREPlRoZSB1bmRlcmx5aW5nIElucHV0U3RyZWFtIHVzZWQgYnkgdGhpcyBjbGFzcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwjaW5wdXRTdHJlYW0iPjxCPmlucHV0U3RyZWFtPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPlRoZSBpbnB1dCBzdHJlYW0gaW5zdGFuY2UgZm9yIHRoaXMgY2xhc3MKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9JbnNlcnRUYWcuaHRtbCI+PEI+SW5zZXJ0VGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0luc2VydFRhZy5odG1sIj5JbnNlcnRUYWc8L0E+LjxERD5UaGlzIGlzIHRoZSB0YWcgaGFuZGxlciBmb3IgJmx0O3RlbXBsYXRlOmluc2VydCZndDssIHdoaWNoIGluY2x1ZGVzIAogYSB0ZW1wbGF0ZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0luc2VydFRhZy5odG1sI0luc2VydFRhZygpIj48Qj5JbnNlcnRUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0luc2VydFRhZy5odG1sIj5JbnNlcnRUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjaW5zdGFuY2UiPjxCPmluc3RhbmNlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5UaGUgaW5pdGlhbGl6ZWQgPGNvZGU+QWN0aW9uPC9jb2RlPiBpbnN0YW5jZSBmb3IgdGhpcyBtYXBwaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNpbnRlcm5hbCI+PEI+aW50ZXJuYWw8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSByZXNvdXJjZXMgb2JqZWN0IGZvciBvdXIgaW50ZXJuYWwgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNpbnRlcm5hbE5hbWUiPjxCPmludGVybmFsTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+VGhlIEphdmEgYmFzZSBuYW1lIG9mIG91ciBpbnRlcm5hbCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjaXNDYW5jZWxsZWQoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxCPmlzQ2FuY2VsbGVkKEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+QWN0aW9uPC9BPgo8REQ+UmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgY3VycmVudCBmb3JtJ3MgY2FuY2VsIGJ1dHRvbiB3YXMKIHByZXNzZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjaXNDbG9zZWQoKSI+PEI+aXNDbG9zZWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5SZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhpcyBDb25uZWN0aW9uIGlzIGNsb3NlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnQuaHRtbCNpc0RpcmVjdCgpIj48Qj5pc0RpcmVjdCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnQuaHRtbCI+Q29udGVudDwvQT4KPEREPklzIGNvbnRlbnQgdG8gYmUgcHJpbnRlZCBkaXJlY3RseSAoaXNEaXJlY3QoKSA9PSB0cnVlKSA8YnI+CiBpbnN0ZWFkIG9mIGluY2x1ZGVkIChpc0RpcmVjdCgpID09IGZhbHNlKT8KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCNpc0VtcHR5KCkiPjxCPmlzRW1wdHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCI+RmFzdEhhc2hNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhpcyBtYXAgY29udGFpbnMgbm8gbWFwcGluZ3MuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNpc0VtcHR5KCkiPjxCPmlzRW1wdHkoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7VGVzdCBpZiB0aGlzIGxpc3QgaGFzIG5vIGVsZW1lbnRzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sI2lzRW1wdHkoKSI+PEI+aXNFbXB0eSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1Rlc3QgaWYgdGhpcyBsaXN0IGhhcyBubyBlbGVtZW50cy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwjaXNGaWxlIj48Qj5pc0ZpbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPldoZXRoZXIgb3Igbm90IHRoaXMgZWxlbWVudCBpcyBhIGZpbGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwjaXNGaWxlKCkiPjxCPmlzRmlsZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sIj5NdWx0aXBhcnRFbGVtZW50PC9BPgo8REQ+SXMgdGhpcyBlbGVtZW50IGEgZmlsZT8KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI2lzbWFwIj48Qj5pc21hcDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5TZXJ2ZXItc2lkZSBpbWFnZSBtYXAgZGVjbGFyYXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCNpc01hdGNoZWQoamF2YS5sYW5nLlN0cmluZykiPjxCPmlzTWF0Y2hlZChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5Eb2VzIHRoZSBzcGVjaWZpZWQgdmFsdWUgbWF0Y2ggb25lIG9mIHRob3NlIHdlIGFyZSBsb29raW5nIGZvcj8KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sI2lzUHJlc2VudChqYXZhLnV0aWwuTG9jYWxlLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+aXNQcmVzZW50KExvY2FsZSwgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+UmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZXJlIGlzIGEgZGVmaW5lZCBtZXNzYWdlIGZvciB0aGUgc3BlY2lmaWVkCiBrZXkgaW4gdGhlIHNwZWNpZmllZCBMb2NhbGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCNpc1ByZXNlbnQoamF2YS5sYW5nLlN0cmluZykiPjxCPmlzUHJlc2VudChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXM8L0E+CjxERD5SZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlcmUgaXMgYSBkZWZpbmVkIG1lc3NhZ2UgZm9yIHRoZSBzcGVjaWZpZWQKIGtleSBpbiB0aGUgc3lzdGVtIGRlZmF1bHQgbG9jYWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI2lzUmVhZE9ubHkoKSI+PEI+aXNSZWFkT25seSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sIj5HZW5lcmljQ29ubmVjdGlvbjwvQT4KPEREPlJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIENvbm5lY3Rpb24gaXMgaW4gcmVhZC1vbmx5IG1vZGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNpc1JlcXVlc3RlZFNlc3Npb25JZEZyb21Db29raWUoKSI+PEI+aXNSZXF1ZXN0ZWRTZXNzaW9uSWRGcm9tQ29va2llKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPlRoaXMgbWV0aG9kIHJldHVybnMgZmFsc2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNpc1JlcXVlc3RlZFNlc3Npb25JZEZyb21VcmwoKSI+PEI+aXNSZXF1ZXN0ZWRTZXNzaW9uSWRGcm9tVXJsKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjaXNSZXF1ZXN0ZWRTZXNzaW9uSWRGcm9tVVJMKCkiPjxCPmlzUmVxdWVzdGVkU2Vzc2lvbklkRnJvbVVSTCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2lzUmVxdWVzdGVkU2Vzc2lvbklkVmFsaWQoKSI+PEI+aXNSZXF1ZXN0ZWRTZXNzaW9uSWRWYWxpZCgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI2lzU2VjdXJlKCkiPjxCPmlzU2VjdXJlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI2lzVG9rZW5WYWxpZChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+aXNUb2tlblZhbGlkKEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+QWN0aW9uPC9BPgo8REQ+UmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZXJlIGlzIGEgdHJhbnNhY3Rpb24gdG9rZW4gc3RvcmVkIGluCiB0aGUgdXNlcidzIGN1cnJlbnQgc2Vzc2lvbiwgYW5kIHRoZSB2YWx1ZSBzdWJtaXR0ZWQgYXMgYSByZXF1ZXN0CiBwYXJhbWV0ZXIgd2l0aCB0aGlzIGFjdGlvbiBtYXRjaGVzIGl0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjaXNVc2VySW5Sb2xlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5pc1VzZXJJblJvbGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj48Qj5JdGVyYXRlVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4uPEREPkN1c3RvbSB0YWcgdGhhdCBpdGVyYXRlcyB0aGUgZWxlbWVudHMgb2YgYSBjb2xsZWN0aW9uLCB3aGljaCBjYW4gYmUKIGVpdGhlciBhbiBhdHRyaWJ1dGUgb3IgdGhlIHByb3BlcnR5IG9mIGFuIGF0dHJpYnV0ZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+PEI+SXRlcmF0ZVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+LjxERD5DdXN0b20gdGFnIHRoYXQgaXRlcmF0ZXMgdGhlIGVsZW1lbnRzIG9mIGEgY29sbGVjdGlvbiwgd2hpY2ggY2FuIGJlCiBlaXRoZXIgYW4gYXR0cmlidXRlIG9yIHRoZSBwcm9wZXJ0eSBvZiBhbiBhdHRyaWJ1dGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwjSXRlcmF0ZVRhZygpIj48Qj5JdGVyYXRlVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwjSXRlcmF0ZVRhZygpIj48Qj5JdGVyYXRlVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGVpLmh0bWwiPjxCPkl0ZXJhdGVUZWk8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRlaS5odG1sIj5JdGVyYXRlVGVpPC9BPi48REQ+SW1wbGVtZW50YXRpb24gb2YgPGNvZGU+VGFnRXh0cmFJbmZvPC9jb2RlPiBmb3IgdGhlIDxiPml0ZXJhdGU8L2I+CiB0YWcsIGlkZW50aWZ5aW5nIHRoZSBzY3JpcHRpbmcgb2JqZWN0KHMpIHRvIGJlIG1hZGUgdmlzaWJsZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUZWkuaHRtbCI+PEI+SXRlcmF0ZVRlaTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGVpLmh0bWwiPkl0ZXJhdGVUZWk8L0E+LjxERD5JbXBsZW1lbnRhdGlvbiBvZiA8Y29kZT5UYWdFeHRyYUluZm88L2NvZGU+IGZvciB0aGUgPGI+aXRlcmF0ZTwvYj4KIHRhZywgaWRlbnRpZnlpbmcgdGhlIHNjcmlwdGluZyBvYmplY3QocykgdG8gYmUgbWFkZSB2aXNpYmxlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRlaS5odG1sI0l0ZXJhdGVUZWkoKSI+PEI+SXRlcmF0ZVRlaSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRlaS5odG1sIj5JdGVyYXRlVGVpPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRlaS5odG1sI0l0ZXJhdGVUZWkoKSI+PEI+SXRlcmF0ZVRlaSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRlaS5odG1sIj5JdGVyYXRlVGVpPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI2l0ZXJhdG9yIj48Qj5pdGVyYXRvcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+SXRlcmF0b3Igb2YgdGhlIGVsZW1lbnRzIG9mIHRoaXMgY29sbGVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwjaXRlcmF0b3IiPjxCPml0ZXJhdG9yPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD5JdGVyYXRvciBvZiB0aGUgZWxlbWVudHMgb2YgdGhpcyBjb2xsZWN0aW9uLCB3aGlsZSB3ZSBhcmUgYWN0dWFsbHkKIHJ1bm5pbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNpdGVyYXRvcigpIj48Qj5pdGVyYXRvcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwiPkZhc3RBcnJheUxpc3Q8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgZWxlbWVudHMgaW4gdGhpcyBsaXN0IGluIHByb3BlciBzZXF1ZW5jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvSXRlcmF0b3JBZGFwdGVyLmh0bWwiPjxCPkl0ZXJhdG9yQWRhcHRlcjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0l0ZXJhdG9yQWRhcHRlci5odG1sIj5JdGVyYXRvckFkYXB0ZXI8L0E+LjxERD5VdGlsaXR5IG1ldGhvZCBmb3IgY29udmVydGluZyBFbnVtZXJhdGlvbiB0byBhbiBJdGVyYXRvcgogY2xhc3MuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvSXRlcmF0b3JBZGFwdGVyLmh0bWwjSXRlcmF0b3JBZGFwdGVyKGphdmEudXRpbC5FbnVtZXJhdGlvbikiPjxCPkl0ZXJhdG9yQWRhcHRlcihFbnVtZXJhdGlvbik8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0l0ZXJhdG9yQWRhcHRlci5odG1sIj5JdGVyYXRvckFkYXB0ZXI8L0E+CjxERD4mbmJzcDsKPC9ETD4KPEhSPgo8QSBOQU1FPSJfS18iPjwhLS0gLS0+PC9BPjxIMj4KPEI+SzwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3IuaHRtbCNrZXkiPjxCPmtleTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3IuaHRtbCI+QWN0aW9uRXJyb3I8L0E+CjxERD5UaGUgbWVzc2FnZSBrZXkgZm9yIHRoaXMgZXJyb3IgbWVzc2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwja2V5Ij48Qj5rZXk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIGtleSBvZiB0aGUgbWVzc2FnZSB0byBiZSByZXRyaWV2ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwja2V5Ij48Qj5rZXk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSBrZXkgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgcmV0cmlldmVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwja2V5Ij48Qj5rZXk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+VGhlIGtleSB1c2VkIHRvIGxvb2sgdXAgdGhlIHRleHQgZGlzcGxheWVkIHRvIHRoZSB1c2VyIGZvciB0aGlzCiBvcHRpb24sIGlmIGFueS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCNrZXlTZXQoKSI+PEI+a2V5U2V0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPkZhc3RIYXNoTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIGEgc2V0IHZpZXcgb2YgdGhlIGtleXMgY29udGFpbmVkIGluIHRoaXMgbWFwLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sI2tleVNldCgpIj48Qj5rZXlTZXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCI+RmFzdFRyZWVNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gYSBzZXQgdmlldyBvZiB0aGUga2V5cyBjb250YWluZWQgaW4gdGhpcyBtYXAuCjwvREw+CjxIUj4KPEEgTkFNRT0iX0xfIj48IS0tIC0tPjwvQT48SDI+CjxCPkw8L0I+PC9IMj4KPERMPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwjbGFiZWxOYW1lIj48Qj5sYWJlbE5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwiPk9wdGlvbnMxVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gY29udGFpbmluZyB0aGUgbGFiZWxzIGNvbGxlY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uc1RhZy5odG1sI2xhYmVsTmFtZSI+PEI+bGFiZWxOYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgYmVhbiBjb250YWluaW5nIHRoZSBsYWJlbHMgY29sbGVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCNsYWJlbE5hbWUiPjxCPmxhYmVsTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBiZWFuIGNvbnRhaW5pbmcgdGhlIGxhYmVscyBjb2xsZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwjbGFiZWxQcm9wZXJ0eSI+PEI+bGFiZWxQcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCI+T3B0aW9uczFUYWc8L0E+CjxERD5UaGUgYmVhbiBwcm9wZXJ0eSBjb250YWluaW5nIHRoZSBsYWJlbHMgY29sbGVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwjbGFiZWxQcm9wZXJ0eSI+PEI+bGFiZWxQcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uc1RhZy5odG1sIj5PcHRpb25zVGFnPC9BPgo8REQ+VGhlIGJlYW4gcHJvcGVydHkgY29udGFpbmluZyB0aGUgbGFiZWxzIGNvbGxlY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwjbGFiZWxQcm9wZXJ0eSI+PEI+bGFiZWxQcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPlRoZSBiZWFuIHByb3BlcnR5IGNvbnRhaW5pbmcgdGhlIGxhYmVscyBjb2xsZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjbGFzdEluZGV4T2YoamF2YS5sYW5nLk9iamVjdCkiPjxCPmxhc3RJbmRleE9mKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1NlYXJjaCBmb3IgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgZ2l2ZW4gYXJndW1lbnQsIHRlc3RpbmcKIGZvciBlcXVhbGl0eSB1c2luZyB0aGUgPGNvZGU+ZXF1YWxzKCk8L2NvZGU+IG1ldGhvZCwgYW5kIHJldHVybgogdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXgsIG9yIC0xIGlmIHRoZSBvYmplY3QgaXMgbm90IGZvdW5kLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sI2xhc3RLZXkoKSI+PEI+bGFzdEtleSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiB0aGUgbGFzdCAoaGlnaGVzdCkga2V5IGN1cnJlbnRseSBpbiB0aGlzIHNvcnRlZCBtYXAuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwjbGVuZ3RoIj48Qj5sZW5ndGg8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sIj5FbnVtZXJhdGVUYWc8L0E+CjxERD5UaGUgbGVuZ3RoIHZhbHVlIG9yIGF0dHJpYnV0ZSBuYW1lICg8PTAgbWVhbnMgbm8gbGltaXQpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCNsZW5ndGgiPjxCPmxlbmd0aDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+VGhlIGxlbmd0aCB2YWx1ZSBvciBhdHRyaWJ1dGUgbmFtZSAoPD0wIG1lYW5zIG5vIGxpbWl0KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwjbGVuZ3RoIj48Qj5sZW5ndGg8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlRoZSBsZW5ndGggdmFsdWUgb3IgYXR0cmlidXRlIG5hbWUgKDw9MCBtZWFucyBubyBsaW1pdCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwjbGVuZ3RoQ291bnQiPjxCPmxlbmd0aENvdW50PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCI+RW51bWVyYXRlVGFnPC9BPgo8REQ+VGhlIG51bWJlciBvZiBlbGVtZW50cyB3ZSBoYXZlIGFscmVhZHkgcmVuZGVyZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI2xlbmd0aENvdW50Ij48Qj5sZW5ndGhDb3VudDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+VGhlIG51bWJlciBvZiBlbGVtZW50cyB3ZSBoYXZlIGFscmVhZHkgcmVuZGVyZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI2xlbmd0aENvdW50Ij48Qj5sZW5ndGhDb3VudDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+VGhlIG51bWJlciBvZiBlbGVtZW50cyB3ZSBoYXZlIGFscmVhZHkgcmVuZGVyZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwjbGVuZ3RoVmFsdWUiPjxCPmxlbmd0aFZhbHVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCI+RW51bWVyYXRlVGFnPC9BPgo8REQ+VGhlIGFjdHVhbCBsZW5ndGggdmFsdWUgKGNhbGN1bGF0ZWQgaW4gdGhlIHN0YXJ0IHRhZykuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI2xlbmd0aFZhbHVlIj48Qj5sZW5ndGhWYWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+VGhlIGFjdHVhbCBsZW5ndGggdmFsdWUgKGNhbGN1bGF0ZWQgaW4gdGhlIHN0YXJ0IHRhZykuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI2xlbmd0aFZhbHVlIj48Qj5sZW5ndGhWYWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+VGhlIGFjdHVhbCBsZW5ndGggdmFsdWUgKGNhbGN1bGF0ZWQgaW4gdGhlIHN0YXJ0IHRhZykuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTGVzc0VxdWFsVGFnLmh0bWwiPjxCPkxlc3NFcXVhbFRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9MZXNzRXF1YWxUYWcuaHRtbCI+TGVzc0VxdWFsVGFnPC9BPi48REQ+RXZhbHVhdGUgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCB2YXJpYWJsZQogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9MZXNzRXF1YWxUYWcuaHRtbCNMZXNzRXF1YWxUYWcoKSI+PEI+TGVzc0VxdWFsVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9MZXNzRXF1YWxUYWcuaHRtbCI+TGVzc0VxdWFsVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTGVzc1RoYW5UYWcuaHRtbCI+PEI+TGVzc1RoYW5UYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTGVzc1RoYW5UYWcuaHRtbCI+TGVzc1RoYW5UYWc8L0E+LjxERD5FdmFsdWF0ZSB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHZhcmlhYmxlCiBpcyBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0xlc3NUaGFuVGFnLmh0bWwjTGVzc1RoYW5UYWcoKSI+PEI+TGVzc1RoYW5UYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0xlc3NUaGFuVGFnLmh0bWwiPkxlc3NUaGFuVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjbGV2ZWwiPjxCPmxldmVsPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwiPkdlbmVyaWNDb25uZWN0aW9uPC9BPgo8REQ+VGhlIGluaXRpYWwgdHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsIHRvIHdoaWNoIHdlIHNob3VsZCByZXR1cm4KIGFmdGVyIHJlbGVhc2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGluazFUYWcuaHRtbCI+PEI+TGluazFUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGluazFUYWcuaHRtbCI+TGluazFUYWc8L0E+LjxERD5HZW5lcmF0ZSBhIFVSTC1lbmNvZGVkIGh5cGVybGluayB0byB0aGUgc3BlY2lmaWVkIFVSSS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwjTGluazFUYWcoKSI+PEI+TGluazFUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwiPkxpbmsxVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjbGlua05hbWUiPjxCPmxpbmtOYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+VGhlIGxpbmsgbmFtZSBmb3IgbmFtZWQgbGlua3MuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sIj48Qj5MaW5rVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4uPEREPkdlbmVyYXRlIGEgVVJMLWVuY29kZWQgaHlwZXJsaW5rIHRvIHRoZSBzcGVjaWZpZWQgVVJJLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPjxCPkxpbmtUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4uPEREPkdlbmVyYXRlIGEgVVJMLWVuY29kZWQgaHlwZXJsaW5rIHRvIHRoZSBzcGVjaWZpZWQgVVJJLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sI0xpbmtUYWcoKSI+PEI+TGlua1RhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjTGlua1RhZygpIj48Qj5MaW5rVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0FycmF5U3RhY2suaHRtbCNsaXN0Ij48Qj5saXN0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0FycmF5U3RhY2suaHRtbCI+QXJyYXlTdGFjazwvQT4KPEREPlRoZSB1bmRlcmx5aW5nIGNvbGxlY3Rpb24gY2xhc3MuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNsaXN0Ij48Qj5saXN0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1RoZSB1bmRlcmx5aW5nIGxpc3Qgd2UgYXJlIG1hbmFnaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjbGlzdEl0ZXJhdG9yKCkiPjxCPmxpc3RJdGVyYXRvcigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwiPkZhc3RBcnJheUxpc3Q8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gYW4gaXRlcmF0b3Igb2YgdGhlIGVsZW1lbnRzIG9mIHRoaXMgbGlzdCwgaW4gcHJvcGVyIHNlcXVlbmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjbGlzdEl0ZXJhdG9yKGludCkiPjxCPmxpc3RJdGVyYXRvcihpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwiPkZhc3RBcnJheUxpc3Q8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gYW4gaXRlcmF0b3Igb2YgdGhlIGVsZW1lbnRzIG9mIHRoaXMgbGlzdCwgaW4gcHJvcGVyIHNlcXVlbmNlLAogc3RhcnRpbmcgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzLmh0bWwjbG9hZExvY2FsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bG9hZExvY2FsZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+UHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+TG9hZCB0aGUgbWVzc2FnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgTG9jYWxlIGtleS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjbG9jYWxlIj48Qj5sb2NhbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlNob3VsZCB3ZSBjcmVhdGUgYSA8Y29kZT5qYXZhLnV0aWwuTG9jYWxlPC9jb2RlPiBmb3IgdGhpcyB1c2VyLAogYmFzZWQgb24gdGhlIEhUVFAgaGVhZGVycyBvZiB0aGUgcmVxdWVzdCwgaWYgb25lIGlzIG5vdCBwcmVzZW50Pwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSHRtbFRhZy5odG1sI2xvY2FsZSI+PEI+bG9jYWxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSHRtbFRhZy5odG1sIj5IdG1sVGFnPC9BPgo8REQ+U2hvdWxkIHdlIHNldCB0aGUgY3VycmVudCBMb2NhbGUgZm9yIHRoaXMgdXNlciBpZiBuZWVkZWQ/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNsb2NhbGUiPjxCPmxvY2FsZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIGNvbnRhaW5pbmcgdGhlIExvY2FsZSB0byBiZSB1c2VkIGZvcgogbG9va2luZyB1cCBpbnRlcm5hdGlvbmFsaXplZCBtZXNzYWdlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sI2xvY2FsZSI+PEI+bG9jYWxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPlRoZSBzZXNzaW9uIGF0dHJpYnV0ZSBrZXkgZm9yIG91ciBsb2NhbGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sI2xvY2FsZSI+PEI+bG9jYWxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+SW1hZ2VUYWc8L0E+CjxERD5UaGUgc2Vzc2lvbiBhdHRyaWJ1dGUga2V5IGZvciBvdXIgbG9jYWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwjbG9jYWxlIj48Qj5sb2NhbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSBjb250YWluaW5nIHRoZSBMb2NhbGUgdG8gYmUgdXNlZCBmb3IKIGxvb2tpbmcgdXAgaW50ZXJuYXRpb25hbGl6ZWQgbWVzc2FnZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjTE9DQUxFX0tFWSI+PEI+TE9DQUxFX0tFWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD5UaGUgc2Vzc2lvbiBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCB0aGUgdXNlcidzIHNlbGVjdGVkCiA8Y29kZT5qYXZhLnV0aWwuTG9jYWxlPC9jb2RlPiBpcyBzdG9yZWQsIGlmIGFueS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwjbG9jYWxlS2V5Ij48Qj5sb2NhbGVLZXk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlRoZSBzZXNzaW9uIHNjb3BlIGtleSB1bmRlciB3aGljaCBvdXIgTG9jYWxlIGlzIHN0b3JlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCNsb2NhbGVLZXkiPjxCPmxvY2FsZUtleTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlRoZSBzZXNzaW9uIHNjb3BlIGtleSB1bmRlciB3aGljaCBvdXIgTG9jYWxlIGlzIHN0b3JlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sI2xvY2FsZUtleShqYXZhLnV0aWwuTG9jYWxlKSI+PEI+bG9jYWxlS2V5KExvY2FsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPkNvbXB1dGUgYW5kIHJldHVybiBhIGtleSB0byBiZSB1c2VkIGluIGNhY2hpbmcgaW5mb3JtYXRpb24gYnkgYSBMb2NhbGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5TWVzc2FnZVJlc291cmNlcy5odG1sI2xvY2FsZXMiPjxCPmxvY2FsZXM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzLmh0bWwiPlByb3BlcnR5TWVzc2FnZVJlc291cmNlczwvQT4KPEREPlRoZSBzZXQgb2YgbG9jYWxlIGtleXMgZm9yIHdoaWNoIHdlIGhhdmUgYWxyZWFkeSBsb2FkZWQgbWVzc2FnZXMsIGtleWVkCiBieSB0aGUgdmFsdWUgY2FsY3VsYXRlZCBpbiA8Y29kZT5sb2NhbGVLZXkoKTwvY29kZT4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTWF0Y2hUYWcuaHRtbCNsb2NhdGlvbiI+PEI+bG9jYXRpb248L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL01hdGNoVGFnLmh0bWwiPk1hdGNoVGFnPC9BPgo8REQ+VGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBtYXRjaCBtdXN0IGV4aXN0ICg8Y29kZT5zdGFydDwvY29kZT4gb3IKIDxjb2RlPmVuZDwvY29kZT4pLCBvciA8Y29kZT5udWxsPC9jb2RlPiBmb3IgYW55d2hlcmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI2xvY2F0b3IiPjxCPmxvY2F0b3I8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPlRoZSBMb2NhdG9yIGFzc29jaWF0ZWQgd2l0aCBvdXIgcGFyc2VyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNsb2coamF2YS5sYW5nLlN0cmluZykiPjxCPmxvZyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+TG9nIGEgbWVzc2FnZSB0byB0aGUgbG9nIHdyaXRlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250ZXh0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjbG9nKGphdmEubGFuZy5TdHJpbmcpIj48Qj5sb2coU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+TG9nIGEgbWVzc2FnZSB0byB0aGUgV3JpdGVyIHRoYXQgaGFzIGJlZW4gY29uZmlndXJlZCBmb3Igb3VyIHVzZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNsb2coamF2YS5sYW5nLlN0cmluZykiPjxCPmxvZyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPkxvZyB0aGUgc3BlY2lmaWVkIG1lc3NhZ2UgdG8gb3VyIGxvZyB3cml0ZXIsIGlmIHdlIGhhdmUgb25lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNsb2coamF2YS5sYW5nLlN0cmluZywgaW50KSI+PEI+bG9nKFN0cmluZywgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkxvZyB0aGUgc3BlY2lmaWVkIG1lc3NhZ2UgaWYgdGhlIGN1cnJlbnQgZGVidWdnaW5nIGRldGFpbCBsZXZlbCBmb3IKIHRoaXMgc2VydmxldCBoYXMgYmVlbiBzZXQgdG8gYW4gZXF1YWwgb3IgaGlnaGVyIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNsb2coamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlRocm93YWJsZSkiPjxCPmxvZyhTdHJpbmcsIFRocm93YWJsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5Mb2cgYSBtZXNzYWdlIGFuZCBhc3NvY2lhdGVkIGV4Y2VwdGlvbiB0byB0aGUgbG9nIHdyaXRlcgogYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGV4dC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sI2xvZyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuVGhyb3dhYmxlKSI+PEI+bG9nKFN0cmluZywgVGhyb3dhYmxlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+TG9nIGEgbWVzc2FnZSBhbmQgZXhjZXB0aW9uIHRvIHRoZSBXcml0ZXIgdGhhdCBoYXMgYmVlbiBjb25maWd1cmVkCiBmb3Igb3VyIHVzZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNsb2coamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlRocm93YWJsZSkiPjxCPmxvZyhTdHJpbmcsIFRocm93YWJsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+TG9nIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSBhbmQgZXhjZXB0aW9uIHRvIG91ciBsb2cgd3JpdGVyLCBpZiB3ZQogaGF2ZSBvbmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjbG9naW5UaW1lb3V0Ij48Qj5sb2dpblRpbWVvdXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD5UaGUgbG9naW4gdGltZW91dCBmb3IgdGhpcyBkYXRhIHNvdXJjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNsb2dXcml0ZXIiPjxCPmxvZ1dyaXRlcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPlRoZSBsb2cgd3JpdGVyIGZvciB0aGlzIGRhdGEgc291cmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbXBhcmVUYWdCYXNlLmh0bWwjTE9OR19DT01QQVJFIj48Qj5MT05HX0NPTVBBUkU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db21wYXJlVGFnQmFzZS5odG1sIj5Db21wYXJlVGFnQmFzZTwvQT4KPEREPldlIHdpbGwgZG8gYSBsb25nL2ludCBjb21wYXJpc29uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI2xvb2t1cCgpIj48Qj5sb29rdXAoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5Mb29rIHVwIHZhbHVlcyBmb3IgdGhlIDxjb2RlPm5hbWU8L2NvZGU+LCA8Y29kZT5zY29wZTwvY29kZT4sIGFuZAogPGNvZGU+dHlwZTwvY29kZT4gcHJvcGVydGllcyBpZiBuZWNlc3NhcnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sI2xvb2t1cChqYXZheC5zZXJ2bGV0LmpzcC5QYWdlQ29udGV4dCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmxvb2t1cChQYWdlQ29udGV4dCwgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwiPlJlcXVlc3RVdGlsczwvQT4KPEREPkxvY2F0ZSBhbmQgcmV0dXJuIHRoZSBzcGVjaWZpZWQgYmVhbiwgZnJvbSBhbiBvcHRpb25hbGx5IHNwZWNpZmllZAogc2NvcGUsIGluIHRoZSBzcGVjaWZpZWQgcGFnZSBjb250ZXh0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXF1ZXN0VXRpbHMuaHRtbCNsb29rdXAoamF2YXguc2VydmxldC5qc3AuUGFnZUNvbnRleHQsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5sb29rdXAoUGFnZUNvbnRleHQsIFN0cmluZywgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwiPlJlcXVlc3RVdGlsczwvQT4KPEREPkxvY2F0ZSBhbmQgcmV0dXJuIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgb2YgdGhlIHNwZWNpZmllZCBiZWFuLCBmcm9tCiBhbiBvcHRpb25hbGx5IHNwZWNpZmllZCBzY29wZSwgaW4gdGhlIHNwZWNpZmllZCBwYWdlIGNvbnRleHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNsb3dzcmMiPjxCPmxvd3NyYzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5UaGUgbG93IHJlc29sdXRpb24gaW1hZ2Ugc291cmNlIFVSSS4KPC9ETD4KPEhSPgo8QSBOQU1FPSJfTV8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+TTwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvSW5zZXJ0VGFnLmh0bWwjbWFwIj48Qj5tYXA8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0luc2VydFRhZy5odG1sIj5JbnNlcnRUYWc8L0E+CjxERD5FYWNoIGluc2VydCB0YWcgaGFzIGEgbWFwIG9mIGNvbnRlbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50TWFwLmh0bWwjbWFwIj48Qj5tYXA8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50TWFwLmh0bWwiPkNvbnRlbnRNYXA8L0E+CjxERD5UaGUgbWFwLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sI21hcCI+PEI+bWFwPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPkZhc3RIYXNoTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7VGhlIHVuZGVybHlpbmcgbWFwIHdlIGFyZSBtYW5hZ2luZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCNtYXAiPjxCPm1hcDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1RoZSB1bmRlcmx5aW5nIG1hcCB3ZSBhcmUgbWFuYWdpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjbWFwIj48Qj5tYXA8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5UaGUgaW5pdGlhbCB0eXBlIG1hcCB0byB3aGljaCB3ZSBzaG91bGQgcmV0dXJuIGFmdGVyIHJlbGVhc2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCNtYXBwaW5nIj48Qj5tYXBwaW5nPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwiPlN0cnV0c1RhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSA8Y29kZT5BY3Rpb25NYXBwaW5nPC9jb2RlPiBvYmplY3QgdG8gYmUgZXhwb3NlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCNtYXBwaW5nIj48Qj5tYXBwaW5nPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+RGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPgo8REQ+VGhlIEFjdGlvbk1hcHBpbmcgaW5zdGFuY2UgdXNlZCBmb3IgdGhpcyBjbGFzcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI01BUFBJTkdfS0VZIj48Qj5NQVBQSU5HX0tFWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD5UaGUgcmVxdWVzdCBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCBvdXIKIDxjb2RlPm9yZy5hcGFjaGUuc3RydXRzLkFjdGlvbk1hcHBpbmc8L2NvZGU+IGluc3RhbmNlCiBpcyBwYXNzZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI21hcHBpbmdDbGFzcyI+PEI+bWFwcGluZ0NsYXNzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5UaGUgSmF2YSBjbGFzcyBuYW1lIG9mIG91ciBBY3Rpb25NYXBwaW5nIGltcGxlbWVudGF0aW9uIGNsYXNzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNtYXBwaW5ncyI+PEI+bWFwcGluZ3M8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlRoZSA8Y29kZT5BY3Rpb25NYXBwaW5nczwvY29kZT4gY29sbGVjdGlvbiBvZiB3aGljaCB3ZSBhcmUgYSBwYXJ0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNtYXBwaW5ncyI+PEI+bWFwcGluZ3M8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSBjb25maWd1cmVkIG1hcHBpbmdzIGZvciB0aGlzIHdlYiBhcHBsaWNhdGlvbiwga2V5ZWQgYnkgcGF0aC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sI21hcHBpbmdzIj48Qj5tYXBwaW5nczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZ3MuaHRtbCI+QWN0aW9uTWFwcGluZ3M8L0E+CjxERD5UaGUgY29sbGVjdGlvbiBvZiBBY3Rpb25NYXBwaW5nIGluc3RhbmNlcywga2V5ZWQgYnkgcmVxdWVzdCBwYXRoLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI01BUFBJTkdTX0tFWSI+PEI+TUFQUElOR1NfS0VZPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwiPkFjdGlvbjwvQT4KPEREPlRoZSBjb250ZXh0IGF0dHJpYnV0ZXMga2V5IHVuZGVyIHdoaWNoIG91cgogPGNvZGU+b3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmdzPC9jb2RlPiBjb2xsZWN0aW9uCiBpcyBub3JtYWxseSBzdG9yZWQsIHVubGVzcyBvdmVycmlkZGVuIHdoZW4gaW5pdGlhbGl6aW5nIG91cgogQWN0aW9uU2VydmxldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwjbWFyayhpbnQpIj48Qj5tYXJrKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwiPkJ1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW08L0E+CjxERD5UaGlzIG1ldGhvZCBjYWxscyBvbiB0aGUgbWFyaygpIG1ldGhvZCBvZiB0aGUgdW5kZXJseWluZyBJbnB1dFN0cmVhbQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCNtYXJrU3VwcG9ydGVkKCkiPjxCPm1hcmtTdXBwb3J0ZWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCI+QnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbTwvQT4KPEREPlRoaXMgbWV0aG9kIGNhbGxzIG9uIHRoZSBtYXJrU3VwcG9ydGVkKCkgbWV0aG9kIG9mIHRoZSB1bmRlcmx5aW5nIElucHV0U3RyZWFtCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI21hdGNoIj48Qj5tYXRjaDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+VGhlIGN1cnJlbnQgbWF0Y2ggcGF0dGVybiBmb3IgbmVzdGVkIGVsZW1lbnQgcHJvY2Vzc2luZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCNtYXRjaCI+PEI+bWF0Y2g8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5UaGUgYWN0dWFsIHZhbHVlIHdlIHdpbGwgbWF0Y2ggYWdhaW5zdCwgY2FsY3VsYXRlZCBpbiBkb1N0YXJ0VGFnKCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCNtYXRjaCI+PEI+bWF0Y2g8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+VGhlIGFjdHVhbCB2YWx1ZXMgd2Ugd2lsbCBtYXRjaCBhZ2FpbnN0LCBjYWxjdWxhdGVkIGluIGRvU3RhcnRUYWcoKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sI21hdGNoZWRCb3VuZGFyeUJ5dGVzIj48Qj5tYXRjaGVkQm91bmRhcnlCeXRlczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0VmFsdWVTdHJlYW0uaHRtbCI+TXVsdGlwYXJ0VmFsdWVTdHJlYW08L0E+CjxERD5ob3cgbWFueSBjdXJyZXRseSBtYXRjaGVkIGJvdW5kYXJ5IGJ5dGVzPwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL01hdGNoVGFnLmh0bWwiPjxCPk1hdGNoVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL01hdGNoVGFnLmh0bWwiPk1hdGNoVGFnPC9BPi48REQ+RXZhbHV0ZSB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHZhbHVlCiBpcyBhIHN1YnN0cmluZyBvZiB0aGUgc3BlY2lmaWVkIHZhcmlhYmxlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTWF0Y2hUYWcuaHRtbCNNYXRjaFRhZygpIj48Qj5NYXRjaFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTWF0Y2hUYWcuaHRtbCI+TWF0Y2hUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sI01BWF9MSU5FX1NJWkUiPjxCPk1BWF9MSU5FX1NJWkU8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPlRoZSBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIHJlYWQgbGluZXMgWzRLXQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI21heENvdW50Ij48Qj5tYXhDb3VudDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPlRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyB0byBiZSBjcmVhdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNtYXhGaWxlU2l6ZSI+PEI+bWF4RmlsZVNpemU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSBtYXhpbXVtIHNpemUgYWxsb3dlZCBmb3IgYSBjbGllbnQgdXBsb2FkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sI21heGxlbmd0aCI+PEI+bWF4bGVuZ3RoPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+VGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWxsb3dlZCwgb3IgbmVnYXRpdmUgZm9yIG5vIGxpbWl0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwjbWF4bGVuZ3RoIj48Qj5tYXhsZW5ndGg8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+VGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWxsb3dlZCwgb3IgbmVnYXRpdmUgZm9yIG5vIGxpbWl0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL01heExlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uLmh0bWwiPjxCPk1heExlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uPC9CPjwvQT4gLSBleGNlcHRpb24gb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NYXhMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbi5odG1sIj5NYXhMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbjwvQT4uPEREPlRoaXMgZXhjZXB0aW9uIGlzIHRocm93biB3aGVuIG11bHRpcGFydCBwb3N0IGRhdGEgZXhjZWVkcyB0aGUgbWF4aW11bQogdmFsdWUgc2V0PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NYXhMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbi5odG1sI01heExlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uKCkiPjxCPk1heExlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NYXhMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbi5odG1sIj5NYXhMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL01heExlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uLmh0bWwjTWF4TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb24obG9uZykiPjxCPk1heExlbmd0aEV4Y2VlZGVkRXhjZXB0aW9uKGxvbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTWF4TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb24uaHRtbCI+TWF4TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwjbWF4TGVuZ3RoTWV0Ij48Qj5tYXhMZW5ndGhNZXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCI+QnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbTwvQT4KPEREPldoZXRoZXIgb3Igbm90IGJ5dGVzIHVwIHRvIHRoZSBtYXhpbXVtIGxlbmd0aCBoYXZlIGJlZW4gcmVhZAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCNtYXhMZW5ndGhNZXQoKSI+PEI+bWF4TGVuZ3RoTWV0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwiPkJ1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW08L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwjbWF4U2l6ZSI+PEI+bWF4U2l6ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sIj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtPC9BPgo8REQ+VGhlIG1heGltdW0gYWxsb3dlZCBzaXplIGZvciB0aGUgbXVsdGlwYXJ0IGRhdGEsIG9yIC0xIGZvciBhbiB1bmxpbWl0ZWQKIG1heGltdW0gZmlsZSBsZW5ndGgKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sI21heFNpemUiPjxCPm1heFNpemU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwiPk11bHRpcGFydEl0ZXJhdG9yPC9BPgo8REQ+VGhlIG1heGltdW0gZmlsZSBzaXplIGluIGJ5dGVzIGFsbG93ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTWF4TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb24uaHRtbCNtZXNzYWdlIj48Qj5tZXNzYWdlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NYXhMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbi5odG1sIj5NYXhMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0NvbnRlbnRMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbi5odG1sI21lc3NhZ2UiPjxCPm1lc3NhZ2U8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0NvbnRlbnRMZW5ndGhFeGNlZWRlZEV4Y2VwdGlvbi5odG1sIj5Db250ZW50TGVuZ3RoRXhjZWVkZWRFeGNlcHRpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwjbWVzc2FnZShqYXZheC5zZXJ2bGV0LmpzcC5QYWdlQ29udGV4dCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPm1lc3NhZ2UoUGFnZUNvbnRleHQsIFN0cmluZywgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwiPlJlcXVlc3RVdGlsczwvQT4KPEREPkxvb2sgdXAgYW5kIHJldHVybiBhIG1lc3NhZ2Ugc3RyaW5nLCBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sI21lc3NhZ2UoamF2YXguc2VydmxldC5qc3AuUGFnZUNvbnRleHQsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3RbXSkiPjxCPm1lc3NhZ2UoUGFnZUNvbnRleHQsIFN0cmluZywgU3RyaW5nLCBTdHJpbmcsIE9iamVjdFtdKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sIj5SZXF1ZXN0VXRpbHM8L0E+CjxERD5Mb29rIHVwIGFuZCByZXR1cm4gYSBtZXNzYWdlIHN0cmluZywgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjbWVzc2FnZUtleShqYXZhLnV0aWwuTG9jYWxlLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bWVzc2FnZUtleShMb2NhbGUsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPkNvbXB1dGUgYW5kIHJldHVybiBhIGtleSB0byBiZSB1c2VkIGluIGNhY2hpbmcgaW5mb3JtYXRpb24KIGJ5IExvY2FsZSBhbmQgbWVzc2FnZSBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCNtZXNzYWdlS2V5KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5tZXNzYWdlS2V5KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+Q29tcHV0ZSBhbmQgcmV0dXJuIGEga2V5IHRvIGJlIHVzZWQgaW4gY2FjaGluZyBpbmZvcm1hdGlvbgogYnkgbG9jYWxlIGtleSBhbmQgbWVzc2FnZSBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+PEI+TWVzc2FnZVJlc291cmNlczwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4uPEREPkdlbmVyYWwgcHVycG9zZSBhYnN0cmFjdCBjbGFzcyB0aGF0IGRlc2NyaWJlcyBhbiBBUEkgZm9yIHJldHJpZXZpbmcKIExvY2FsZS1zZW5zaXRpdmUgbWVzc2FnZXMgZnJvbSB1bmRlcmx5aW5nIHJlc291cmNlIGxvY2F0aW9ucyBvZiBhbgogdW5zcGVjaWZpZWQgZGVzaWduLCBhbmQgb3B0aW9uYWxseSB1dGlsaXppbmcgdGhlIDxjb2RlPk1lc3NhZ2VGb3JtYXQ8L2NvZGU+CiBjbGFzcyB0byBwcm9kdWNlIGludGVybmF0aW9uYWxpemVkIG1lc3NhZ2VzIHdpdGggcGFyYW1ldHJpYyByZXBsYWNlbWVudC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjTWVzc2FnZVJlc291cmNlcyhvcmcuYXBhY2hlLnN0cnV0cy51dGlsLk1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+TWVzc2FnZVJlc291cmNlcyhNZXNzYWdlUmVzb3VyY2VzRmFjdG9yeSwgU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IE1lc3NhZ2VSZXNvdXJjZXMgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sI01lc3NhZ2VSZXNvdXJjZXMob3JnLmFwYWNoZS5zdHJ1dHMudXRpbC5NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeSwgamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikiPjxCPk1lc3NhZ2VSZXNvdXJjZXMoTWVzc2FnZVJlc291cmNlc0ZhY3RvcnksIFN0cmluZywgYm9vbGVhbik8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPkNvbnN0cnVjdCBhIG5ldyBNZXNzYWdlUmVzb3VyY2VzIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwiPjxCPk1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5PC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlc0ZhY3RvcnkuaHRtbCI+TWVzc2FnZVJlc291cmNlc0ZhY3Rvcnk8L0E+LjxERD5GYWN0b3J5IGZvciA8Y29kZT5NZXNzYWdlUmVzb3VyY2VzPC9jb2RlPiBpbnN0YW5jZXMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlc0ZhY3RvcnkuaHRtbCNNZXNzYWdlUmVzb3VyY2VzRmFjdG9yeSgpIj48Qj5NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeS5odG1sIj5NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9EaXNwYXRjaEFjdGlvbi5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvRGlzcGF0Y2hBY3Rpb24uaHRtbCI+RGlzcGF0Y2hBY3Rpb248L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvRm9yd2FyZEFjdGlvbi5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvRm9yd2FyZEFjdGlvbi5odG1sIj5Gb3J3YXJkQWN0aW9uPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0luY2x1ZGVBY3Rpb24uaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0luY2x1ZGVBY3Rpb24uaHRtbCI+SW5jbHVkZUFjdGlvbjwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9IdG1sUHJvcGVydHlUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9IdG1sUHJvcGVydHlUYWcuaHRtbCI+SHRtbFByb3BlcnR5VGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL011bHRpYm94VGFnLmh0bWwiPk11bHRpYm94VGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUGFyYW1ldGVyVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUGFyYW1ldGVyVGFnLmh0bWwiPlBhcmFtZXRlclRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCI+T3B0aW9uczFUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnNUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0dldFByb3BlcnR5VGFnLmh0bWwiPkdldFByb3BlcnR5VGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmFkaW9UYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Jlc2V0VGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVzZXRUYWcuaHRtbCI+UmVzZXRUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbmNvZGVSZWRpcmVjdFVSTFRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VuY29kZVJlZGlyZWN0VVJMVGFnLmh0bWwiPkVuY29kZVJlZGlyZWN0VVJMVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSW5jbHVkZVRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0luY2x1ZGVUYWcuaHRtbCI+SW5jbHVkZVRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3J3YXJkVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9yd2FyZFRhZy5odG1sIj5Gb3J3YXJkVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVkaXJlY3RUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZWRpcmVjdFRhZy5odG1sIj5SZWRpcmVjdFRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1N1Ym1pdFRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1N1Ym1pdFRhZy5odG1sIj5TdWJtaXRUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZVRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VUYWcuaHRtbCI+QmFzZVRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NhbmNlbFRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NhbmNlbFRhZy5odG1sIj5DYW5jZWxUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25UYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGluazFUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sIj5MaW5rMVRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlFcXVhbHNUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5RXF1YWxzVGFnLmh0bWwiPklmUHJvcGVydHlFcXVhbHNUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQcm9wZXJ0eU5vdEVxdWFsc1RhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlOb3RFcXVhbHNUYWcuaHRtbCI+SWZQcm9wZXJ0eU5vdEVxdWFsc1RhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbmNvZGVVUkxUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbmNvZGVVUkxUYWcuaHRtbCI+RW5jb2RlVVJMVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9IZWFkZXJUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwiPkhlYWRlclRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwiPlNpemVUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCI+Q29va2llVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFyYW1ldGVyVGFnLmh0bWwiPlBhcmFtZXRlclRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCI+UmVzb3VyY2VUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sIj5JbmNsdWRlVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwiPlN0cnV0c1RhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFnZVRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYWdlVGFnLmh0bWwiPlBhZ2VUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9IdG1sVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0h0bWxUYWcuaHRtbCI+SHRtbFRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZVRhZy5odG1sIj5CYXNlVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SYWRpb1RhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2FuY2VsVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NhbmNlbFRhZy5odG1sIj5DYW5jZWxUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9FcnJvcnNUYWcuaHRtbCI+RXJyb3JzVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCI+UmVzZXRUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1N1Ym1pdFRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvblRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sIj5DaGVja2JveFRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI21lc3NhZ2VzIj48Qj5tZXNzYWdlczwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCI+Q29uZGl0aW9uYWxUYWdCYXNlPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29tcGFyZVRhZ0Jhc2UuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db21wYXJlVGFnQmFzZS5odG1sIj5Db21wYXJlVGFnQmFzZTwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Gb3J3YXJkVGFnLmh0bWwjbWVzc2FnZXMiPjxCPm1lc3NhZ2VzPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvRm9yd2FyZFRhZy5odG1sIj5Gb3J3YXJkVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sIj5SZWRpcmVjdFRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXMuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzLmh0bWwiPlByb3BlcnR5TWVzc2FnZVJlc291cmNlczwvQT4KPEREPlRoZSBjYWNoZSBvZiBtZXNzYWdlcyB3ZSBoYXZlIGFjY3VtdWxhdGVkIG92ZXIgdGltZSwga2V5ZWQgYnkgdGhlCiB2YWx1ZSBjYWxjdWxhdGVkIGluIDxjb2RlPm1lc3NhZ2VLZXkoKTwvY29kZT4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Jlc3BvbnNlVXRpbHMuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Jlc3BvbnNlVXRpbHMuaHRtbCI+UmVzcG9uc2VVdGlsczwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBmb3IgdGhpcyBwYWNrYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXF1ZXN0VXRpbHMuaHRtbCNtZXNzYWdlcyI+PEI+bWVzc2FnZXM8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sIj5SZXF1ZXN0VXRpbHM8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMgZm9yIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNNRVNTQUdFU19LRVkiPjxCPk1FU1NBR0VTX0tFWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD5UaGUgY29udGV4dCBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCBvdXIgYXBwbGljYXRpb24gcmVzb3VyY2VzIGFyZQogbm9ybWFsbHkgc3RvcmVkLCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aGVuIGluaXRpYWxpemluZyBvdXIgQWN0aW9uU2VydmxldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwiPjxCPk1lc3NhZ2VUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPi48REQ+Q3VzdG9tIHRhZyB0aGF0IHJldHJpZXZlcyBhbiBpbnRlcm5hdGlvbmFsaXplZCBtZXNzYWdlcyBzdHJpbmcgKHdpdGgKIG9wdGlvbmFsIHBhcmFtZXRyaWMgcmVwbGFjZW1lbnQpIGZyb20gdGhlIDxjb2RlPkFjdGlvblJlc291cmNlczwvY29kZT4KIG9iamVjdCBzdG9yZWQgYXMgYSBjb250ZXh0IGF0dHJpYnV0ZSBieSBvdXIgYXNzb2NpYXRlZAogPGNvZGU+QWN0aW9uU2VydmxldDwvY29kZT4gaW1wbGVtZW50YXRpb24uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+PEI+TWVzc2FnZVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPi48REQ+Q3VzdG9tIHRhZyB0aGF0IHJldHJpZXZlcyBhbiBpbnRlcm5hdGlvbmFsaXplZCBtZXNzYWdlcyBzdHJpbmcgKHdpdGgKIG9wdGlvbmFsIHBhcmFtZXRyaWMgcmVwbGFjZW1lbnQpIGZyb20gdGhlIDxjb2RlPkFjdGlvblJlc291cmNlczwvY29kZT4KIG9iamVjdCBzdG9yZWQgYXMgYSBjb250ZXh0IGF0dHJpYnV0ZSBieSBvdXIgYXNzb2NpYXRlZAogPGNvZGU+QWN0aW9uU2VydmxldDwvY29kZT4gaW1wbGVtZW50YXRpb24uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwjTWVzc2FnZVRhZygpIj48Qj5NZXNzYWdlVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5Db25zdHJ1Y3QgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjTWVzc2FnZVRhZygpIj48Qj5NZXNzYWdlVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI21ldGhvZCI+PEI+bWV0aG9kPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgcmVxdWVzdCBtZXRob2QgdXNlZCB3aGVuIHN1Ym1pdHRpbmcgdGhpcyBmb3JtLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI21ldGhvZCI+PEI+bWV0aG9kPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+VGhlIHJlcXVlc3QgbWV0aG9kIHVzZWQgd2hlbiBzdWJtaXR0aW5nIHRoaXMgZm9ybS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldFRvcFJ1bGUuaHRtbCNtZXRob2ROYW1lIj48Qj5tZXRob2ROYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0VG9wUnVsZS5odG1sIj5TZXRUb3BSdWxlPC9BPgo8REQ+VGhlIG1ldGhvZCBuYW1lIHRvIGNhbGwgb24gdGhlIHBhcmVudCBvYmplY3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXROZXh0UnVsZS5odG1sI21ldGhvZE5hbWUiPjxCPm1ldGhvZE5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXROZXh0UnVsZS5odG1sIj5TZXROZXh0UnVsZTwvQT4KPEREPlRoZSBtZXRob2QgbmFtZSB0byBjYWxsIG9uIHRoZSBwYXJlbnQgb2JqZWN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbE1ldGhvZFJ1bGUuaHRtbCNtZXRob2ROYW1lIj48Qj5tZXRob2ROYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbE1ldGhvZFJ1bGUuaHRtbCI+Q2FsbE1ldGhvZFJ1bGU8L0E+CjxERD5UaGUgbWV0aG9kIG5hbWUgdG8gY2FsbCBvbiB0aGUgcGFyZW50IG9iamVjdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvRGlzcGF0Y2hBY3Rpb24uaHRtbCNtZXRob2RzIj48Qj5tZXRob2RzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0Rpc3BhdGNoQWN0aW9uLmh0bWwiPkRpc3BhdGNoQWN0aW9uPC9BPgo8REQ+VGhlIHNldCBvZiBNZXRob2Qgb2JqZWN0cyB3ZSBoYXZlIGludHJvc3BlY3RlZCBmb3IgdGhpcyBjbGFzcywKIGtleWVkIGJ5IG1ldGhvZCBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI21pbkNvdW50Ij48Qj5taW5Db3VudDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPlRoZSBtaW5pbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyB0byBiZSBjcmVhdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL011bHRpYm94VGFnLmh0bWwiPjxCPk11bHRpYm94VGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL011bHRpYm94VGFnLmh0bWwiPk11bHRpYm94VGFnPC9BPi48REQ+VGFnIGZvciBpbnB1dCBmaWVsZHMgb2YgdHlwZSAiY2hlY2tib3giLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sIj48Qj5NdWx0aWJveFRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCI+TXVsdGlib3hUYWc8L0E+LjxERD5UYWcgZm9yIGlucHV0IGZpZWxkcyBvZiB0eXBlICJjaGVja2JveCIuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sI011bHRpYm94VGFnKCkiPjxCPk11bHRpYm94VGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCNNdWx0aWJveFRhZygpIj48Qj5NdWx0aWJveFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL011bHRpYm94VGFnLmh0bWwiPk11bHRpYm94VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjTVVMVElQQVJUX0tFWSI+PEI+TVVMVElQQVJUX0tFWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD5UaGUgcmVxdWVzdCBhdHRyaWJ1dGVzIGtleSB1bmRlciB3aGljaCBvdXIgbXVsdGlwYXJ0IGNsYXNzIGlzIHN0b3JlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjbXVsdGlwYXJ0Q2xhc3MiPjxCPm11bHRpcGFydENsYXNzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5UaGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWUgb2YgdGhlIDxjb2RlPk11bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9jb2RlPgogaW1wbGVtZW50YXRpb24gY2xhc3MgdXNlZCB0byBwcm9jZXNzIG11bHRpcGFydCByZXF1ZXN0IGRhdGEgZm9yIHRoaXMgbWFwcGluZwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNtdWx0aXBhcnRDbGFzcyI+PEI+bXVsdGlwYXJ0Q2xhc3M8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSBNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlciBjbGFzcyBuYW1lIHVzZWQgZm9yIGhhbmRsaW5nCiBtdWx0aXBhcnQgZm9ybSByZXF1ZXN0cy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwiPjxCPk11bHRpcGFydEVsZW1lbnQ8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sIj5NdWx0aXBhcnRFbGVtZW50PC9BPi48REQ+VGhpcyBjbGFzcyByZXByZXNlbnRzIGFuIGVsZW1lbnQgaW4gYSBtdWx0aXBhcnQgcmVxdWVzdC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCNNdWx0aXBhcnRFbGVtZW50KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5NdWx0aXBhcnRFbGVtZW50KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPkNvbnN0cnVjdG9yIGZvciBhIHRleHQgZWxlbWVudAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCNNdWx0aXBhcnRFbGVtZW50KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGJ5dGVbXSkiPjxCPk11bHRpcGFydEVsZW1lbnQoU3RyaW5nLCBTdHJpbmcsIFN0cmluZywgYnl0ZVtdKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSB0aGUgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBhbiBGaWxlIGFzIGFuIGFyZ3VtZW50CiAgICAgICAgICAgICBhcyBvcHBvc2VkIHRvIGEgYnl0ZSBhcnJheSBhcmd1bWVudCwgd2hpY2ggY2FuIGNhdXNlCiAgICAgICAgICAgICBtZW1vcnkgcHJvYmxlbXM8L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sI011bHRpcGFydEVsZW1lbnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5pby5GaWxlKSI+PEI+TXVsdGlwYXJ0RWxlbWVudChTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBGaWxlKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPkNvbnN0cnVjdG9yIGZvciBhIGZpbGUgZWxlbWVudAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwiPjxCPk11bHRpcGFydEl0ZXJhdG9yPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwiPk11bHRpcGFydEl0ZXJhdG9yPC9BPi48REQ+VGhlIE11bHRpcGFydEl0ZXJhdG9yIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciByZWFkaW5nIHRoZQogaW5wdXQgZGF0YSBvZiBhIG11bHRpcGFydCByZXF1ZXN0IGFuZCBzcGxpdHRpbmcgaXQgdXAgaW50bwogaW5wdXQgZWxlbWVudHMsIHdyYXBwZWQgaW5zaWRlIG9mIGEKIDxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwiPjxDT0RFPk11bHRpcGFydEVsZW1lbnQ8L0NPREU+PC9BPgogZm9yIGVhc3kgZGVmaW5pdGlvbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwjTXVsdGlwYXJ0SXRlcmF0b3IoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxCPk11bHRpcGFydEl0ZXJhdG9yKEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPkNvbnN0cnVjdHMgYSBNdWx0aXBhcnRJdGVyYXRvciB3aXRoIGEgZGVmYXVsdCBidWZmZXIgc2l6ZSBhbmQgbm8gZmlsZSBzaXplCiBsaW1pdAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwjTXVsdGlwYXJ0SXRlcmF0b3IoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgaW50KSI+PEI+TXVsdGlwYXJ0SXRlcmF0b3IoSHR0cFNlcnZsZXRSZXF1ZXN0LCBpbnQpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCI+TXVsdGlwYXJ0SXRlcmF0b3I8L0E+CjxERD5Db25zdHJ1Y3RzIGEgTXVsdGlwYXJ0SXRlcmF0b3Igd2l0aCB0aGUgc3BlY2lmaWVkIGJ1ZmZlciBzaXplIGFuZAogbm8gZmlsZSBzaXplIGxpbWl0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNNdWx0aXBhcnRJdGVyYXRvcihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBpbnQsIGxvbmcpIj48Qj5NdWx0aXBhcnRJdGVyYXRvcihIdHRwU2VydmxldFJlcXVlc3QsIGludCwgbG9uZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPkNvbnN0cnVjdHMgYSBNdWx0aXBhcnRJdGVyYXRvciB3aXRoIHRoZSBzcGVjaWZpZWQgYnVmZmVyIHNpemUgYW5kCiB0aGUgc3BlY2lmaWVkIGZpbGUgc2l6ZSBsaW1pdCBpbiBieXRlcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwjTXVsdGlwYXJ0SXRlcmF0b3IoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgaW50LCBsb25nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+TXVsdGlwYXJ0SXRlcmF0b3IoSHR0cFNlcnZsZXRSZXF1ZXN0LCBpbnQsIGxvbmcsIFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm0uaHRtbCNtdWx0aXBhcnRSZXF1ZXN0SGFuZGxlciI+PEI+bXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm0uaHRtbCI+QWN0aW9uRm9ybTwvQT4KPEREPlRoZSBNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlciBmb3IgdGhpcyBmb3JtLCBjYW4gYmUKIDxjb2RlPm51bGw8L2NvZGU+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+PEI+TXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXI8L0I+PC9BPiAtIGludGVyZmFjZSBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPi48REQ+TXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIgcHJvdmlkZXMgYW4gc3RhbmRhcmQgaW50ZXJmYWNlIGZvciBzdHJ1dHMgdG8KIGRlYWwgd2l0aCBmaWxlIHVwbG9hZHMgZnJvbSBmb3JtcyB3aXRoIGVuY3R5cGVzIG9mICJtdWx0aXBhcnQvZm9ybS1kYXRhIi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPjxCPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPi48REQ+VGhpcyBjbGFzcyBmdW5jdGlvbnMgYXMgYSB3cmFwcGVyIGFyb3VuZCBIdHRwU2VydmxldFJlcXVlc3QgdG8KIHByb3ZpZGUgd29ya2luZyBnZXRQYXJhbWV0ZXIgbWV0aG9kcyBmb3IgbXVsdGlwYXJ0IHJlcXVlc3RzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNNdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIoSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0VmFsdWVTdHJlYW0uaHRtbCI+PEI+TXVsdGlwYXJ0VmFsdWVTdHJlYW08L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0VmFsdWVTdHJlYW0uaHRtbCI+TXVsdGlwYXJ0VmFsdWVTdHJlYW08L0E+LjxERD5UaGlzIGNsYXNzIGltcGxlbWVudHMgYW4gaW5wdXRTdHJlYW0gdGhhdCByZWFkcyBhbm90aGVyIHN0cmVhbSB1bnRpbCAKIGEgbXVsdGlwYXJ0IGJvdW5kYXJ5IGlzIGZvdW5kLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0VmFsdWVTdHJlYW0uaHRtbCNNdWx0aXBhcnRWYWx1ZVN0cmVhbShqYXZhLmlvLklucHV0U3RyZWFtLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+TXVsdGlwYXJ0VmFsdWVTdHJlYW0oSW5wdXRTdHJlYW0sIFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sIj5NdWx0aXBhcnRWYWx1ZVN0cmVhbTwvQT4KPEREPkNyZWF0ZSBhIHN0cmVhbSB0aGF0IHN0b3BzIHJlYWRpbmcgYXQgdGhlIGJvdW5kYXJ5CgogTk9URTogdGhlIGJvdW5kYXJ5IHBhcmFtZXRlciBpcyB3aXRob3V0IHRoZSB0cmFpbGluZyBkYXNoZXMgIi0tIi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCNtdWx0aXBsZSI+PEI+bXVsdGlwbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5TaG91bGQgbXVsdGlwbGUgc2VsZWN0aW9ucyBiZSBhbGxvd2VkPyAgQW55IG5vbi1udWxsIHZhbHVlIHdpbGwKIHRyaWdnZXIgcmVuZGVyaW5nIHRoaXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9IZWFkZXJUYWcuaHRtbCNtdWx0aXBsZSI+PEI+bXVsdGlwbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9IZWFkZXJUYWcuaHRtbCI+SGVhZGVyVGFnPC9BPgo8REQ+UmV0dXJuIGFuIGFycmF5IG9mIGhlYWRlciB2YWx1ZXMgaWYgPGNvZGU+bXVsdGlwbGU8L2NvZGU+IGlzIG5vbi1udWxsLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGFnLmh0bWwjbXVsdGlwbGUiPjxCPm11bHRpcGxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGFnLmh0bWwiPkNvb2tpZVRhZzwvQT4KPEREPlJldHVybiBhbiBhcnJheSBvZiBDb29raWVzIGlmIDxjb2RlPm11bHRpcGxlPC9jb2RlPiBpcyBub24tbnVsbC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sI211bHRpcGxlIj48Qj5tdWx0aXBsZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sIj5QYXJhbWV0ZXJUYWc8L0E+CjxERD5SZXR1cm4gYW4gYXJyYXkgb2YgcGFyYW1ldGVyIHZhbHVlcyBpZiA8Y29kZT5tdWx0aXBsZTwvY29kZT4gaXMKIG5vbi1udWxsLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwjbXVsdGlwbGUiPjxCPm11bHRpcGxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPlNob3VsZCBtdWx0aXBsZSBzZWxlY3Rpb25zIGJlIGFsbG93ZWQ/ICBBbnkgbm9uLW51bGwgdmFsdWUgd2lsbAogdHJpZ2dlciByZW5kZXJpbmcgdGhpcy4KPC9ETD4KPEhSPgo8QSBOQU1FPSJfTl8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+TjwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBmb3JtIGJlYW4sIGlmIGFueSwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm1CZWFuLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW4uaHRtbCI+QWN0aW9uRm9ybUJlYW48L0E+CjxERD5UaGUgYmVhbiBuYW1lIG9mIHRoaXMgYWN0aW9uIGZvcm0gYmVhbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sIj5BY3Rpb25Gb3J3YXJkPC9BPgo8REQ+VGhlIGxvZ2ljYWwgbmFtZSBvZiB0aGlzIGZvcndhcmQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXRQcm9wZXJ0eVJ1bGUuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0UHJvcGVydHlSdWxlLmh0bWwiPlNldFByb3BlcnR5UnVsZTwvQT4KPEREPlRoZSBhdHRyaWJ1dGUgdGhhdCB3aWxsIGNvbnRhaW4gdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPlRoZSBKU1AgYmVhbiBuYW1lIGZvciBxdWVyeSBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0h0bWxQcm9wZXJ0eVRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0h0bWxQcm9wZXJ0eVRhZy5odG1sIj5IdG1sUHJvcGVydHlUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgb2JqZWN0IGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIHByb3BlcnR5IGlzIG9idGFpbmVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyRXF1YWxzVGFnLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJFcXVhbHNUYWcuaHRtbCI+SWZQYXJhbWV0ZXJFcXVhbHNUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIGJlaW5nIGNvbXBhcmVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgYXR0cmlidXRlIGtleSB1bmRlciB3aGljaCBvdXIgYXNzb2NpYXRlZCBiZWFuIGlzIHN0b3JlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL011bHRpYm94VGFnLmh0bWwiPk11bHRpYm94VGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gY29udGFpbmluZyBvdXIgdW5kZXJseWluZyBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9QYXJhbWV0ZXJUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9QYXJhbWV0ZXJUYWcuaHRtbCI+UGFyYW1ldGVyVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGRlc2lyZWQgcGFyYW1ldGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCI+T3B0aW9uczFUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgYmVhbiBjb250YWluaW5nIHRoZSB2YWx1ZXMgY29sbGVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FcnJvcnNUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FcnJvcnNUYWcuaHRtbCI+RXJyb3JzVGFnPC9BPgo8REQ+TmFtZSBvZiB0aGUgcmVxdWVzdCBzY29wZSBhdHRyaWJ1dGUgY29udGFpbmluZyBvdXIgZXJyb3IgbWVzc2FnZXMsCiBpZiBhbnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBjb2xsZWN0aW9uIG9yIG93bmluZyBiZWFuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnNUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgYmVhbiBjb250YWluaW5nIHRoZSB2YWx1ZXMgY29sbGVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0dldFByb3BlcnR5VGFnLmh0bWwiPkdldFByb3BlcnR5VGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gb3duaW5nIHRoZSBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck51bGxUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck51bGxUYWcuaHRtbCI+SWZQYXJhbWV0ZXJOdWxsVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBiZWluZyBjb21wYXJlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JhZGlvVGFnLmh0bWwiPlJhZGlvVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gY29udGFpbmluZyBvdXIgdW5kZXJseWluZyBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZXNldFRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Jlc2V0VGFnLmh0bWwiPlJlc2V0VGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBpbnB1dCBmaWVsZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JbmNsdWRlVGFnLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSW5jbHVkZVRhZy5odG1sIj5JbmNsdWRlVGFnPC9BPgo8REQ+VGhlIGxvZ2ljYWwgbmFtZSBvZiB0aGUgZ2xvYmFsIEFjdGlvbkZvcndhcmQgd2Ugd2lsbCBsb29rIHVwCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUZpZWxkVGFnLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUZpZWxkVGFnLmh0bWwiPkJhc2VGaWVsZFRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBiZWFuIGNvbnRhaW5pbmcgb3VyIHVuZGVybHlpbmcgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUF0dHJpYnV0ZVRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VBdHRyaWJ1dGVUYWcuaHRtbCI+QmFzZUF0dHJpYnV0ZVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUgYmVpbmcgdGVzdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0ZvcndhcmRUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3J3YXJkVGFnLmh0bWwiPkZvcndhcmRUYWc8L0E+CjxERD5UaGUgbG9naWNhbCBuYW1lIG9mIHRoZSBnbG9iYWwgQWN0aW9uRm9yd2FyZCB3ZSB3aWxsIGxvb2sgdXAKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdEVxdWFsc1RhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTm90RXF1YWxzVGFnLmh0bWwiPklmUGFyYW1ldGVyTm90RXF1YWxzVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBiZWluZyBjb21wYXJlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9UZXh0YXJlYVRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1RleHRhcmVhVGFnLmh0bWwiPlRleHRhcmVhVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gY29udGFpbmluZyBvdXIgdW5kZXJseWluZyBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gY29udGFpbmluZyBvdXIgdW5kZXJseWluZyBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdE51bGxUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdE51bGxUYWcuaHRtbCI+SWZQYXJhbWV0ZXJOb3ROdWxsVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBiZWluZyBjb21wYXJlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwiPkxpbmsxVGFnPC9BPgo8REQ+VGhlIEpTUCBiZWFuIG5hbWUgZm9yIHF1ZXJ5IHBhcmFtZXRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUHJvcGVydHlUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Qcm9wZXJ0eVRhZy5odG1sIj5Qcm9wZXJ0eVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBiZWFuIGNvbnRhaW5pbmcgb3VyIHVuZGVybHlpbmcgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBjb2xsZWN0aW9uIG9yIG93bmluZyBiZWFuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgYmVhbiBjb250YWluaW5nIG91ciB1bmRlcmx5aW5nIHByb3BlcnR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sIj5IZWFkZXJUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgaGVhZGVyIHdob3NlIHZhbHVlIGlzIHRvIGJlIGV4cG9zZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sIj5Xcml0ZVRhZzwvQT4KPEREPk5hbWUgb2YgdGhlIGJlYW4gdGhhdCBjb250YWlucyB0aGUgZGF0YSB3ZSB3aWxsIGJlIHJlbmRlcmluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCI+RGVmaW5lVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gb3duaW5nIHRoZSBwcm9wZXJ0eSB0byBiZSBleHBvc2VkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwiPlNpemVUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgYmVhbiBvd25pbmcgdGhlIHByb3BlcnR5IHRvIGJlIGNvdW50ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGFnLmh0bWwiPkNvb2tpZVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBjb29raWUgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZXhwb3NlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCI+UGFyYW1ldGVyVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB3aG9zZSB2YWx1ZSBpcyB0byBiZSBleHBvc2VkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCI+UmVzb3VyY2VUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgcmVzb3VyY2Ugd2hvc2UgY29udGVudHMgYXJlIHRvIGJlIGV4cG9zZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlRoZSBKU1AgYmVhbiBuYW1lIGZvciBxdWVyeSBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgYmVhbiBjb250YWluaW5nIHRoZSB2YWx1ZXMgY29sbGVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VGaWVsZFRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlRmllbGRUYWcuaHRtbCI+QmFzZUZpZWxkVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gY29udGFpbmluZyBvdXIgdW5kZXJseWluZyBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwiPlJhZGlvVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gY29udGFpbmluZyBvdXIgdW5kZXJseWluZyBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9FcnJvcnNUYWcuaHRtbCI+RXJyb3JzVGFnPC9BPgo8REQ+VGhlIHJlcXVlc3QgYXR0cmlidXRlIGtleSBmb3Igb3VyIGVycm9yIG1lc3NhZ2VzIChpZiBhbnkpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCI+TXVsdGlib3hUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgYmVhbiBjb250YWluaW5nIG91ciB1bmRlcmx5aW5nIHByb3BlcnR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCI+UmVzZXRUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIGlucHV0IGZpZWxkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5UaGUgSlNQIGJlYW4gbmFtZSBmb3IgcXVlcnkgcGFyYW1ldGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gY29udGFpbmluZyBvdXIgdW5kZXJseWluZyBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gY29udGFpbmluZyBvdXIgdW5kZXJseWluZyBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+VGhlIGF0dHJpYnV0ZSBrZXkgdW5kZXIgd2hpY2ggb3VyIGFzc29jaWF0ZWQgYmVhbiBpcyBzdG9yZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9UZXh0YXJlYVRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9UZXh0YXJlYVRhZy5odG1sIj5UZXh0YXJlYVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBiZWFuIGNvbnRhaW5pbmcgb3VyIHVuZGVybHlpbmcgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPkNvbmRpdGlvbmFsVGFnQmFzZTwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBKU1AgYmVhbiB0byBiZSB1c2VkIGFzIGEgdmFyaWFibGUgKGlmCiA8Y29kZT5wcm9wZXJ0eTwvY29kZT4gaXMgbm90IHNwZWNpZmllZCksIG9yIHdob3NlIHByb3BlcnR5IGlzIHRvIGJlCiBhY2Nlc3NlZCAoaWYgPGNvZGU+cHJvcGVydHk8L2NvZGU+IGlzIHNwZWNpZmllZCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBjb2xsZWN0aW9uIG9yIG93bmluZyBiZWFuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0ZvcndhcmRUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Gb3J3YXJkVGFnLmh0bWwiPkZvcndhcmRUYWc8L0E+CjxERD5UaGUgbG9naWNhbCBuYW1lIG9mIHRoZSA8Y29kZT5BY3Rpb25Gb3J3YXJkPC9jb2RlPiBlbnRyeSB0byBiZQogbG9va2VkIHVwLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwjbmFtZSI+PEI+bmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD5UaGUgSlNQIGJlYW4gbmFtZSBmb3IgcXVlcnkgcGFyYW1ldGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9QdXRUYWcuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9QdXRUYWcuaHRtbCI+UHV0VGFnPC9BPgo8REQ+VGhlIGNvbnRlbnQncyBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0dldFRhZy5odG1sI25hbWUiPjxCPm5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0dldFRhZy5odG1sIj5HZXRUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgY29udGVudCB0aGF0IHRoaXMgdGFnIGluY2x1ZGVzIChvciBwcmludHMpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCNuYW1lIj48Qj5uYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwiPk11bHRpcGFydEVsZW1lbnQ8L0E+CjxERD5UaGUgZWxlbWVudCBuYW1lCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjbmF0aXZlU1FMKGphdmEubGFuZy5TdHJpbmcpIj48Qj5uYXRpdmVTUUwoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5Db252ZXJ0IHRoZSBnaXZlbiBTUUwgc3RhdGVtZW50IGludG8gdGhlIHN5c3RlbSdzIG5hdGl2ZSBTUUwgZ3JhbW1lci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI05FU1RFRF9ERUxJTSI+PEI+TkVTVEVEX0RFTElNPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPlByb3BlcnR5VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUaGUgZGVsaW1pdGVyIHRoYXQgc2VwYXJhdGVzIHRoZSBjb21wb25lbnRzIG9mIGEgbmVzdGVkIHJlZmVyZW5jZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvSXRlcmF0b3JBZGFwdGVyLmh0bWwjbmV4dCgpIj48Qj5uZXh0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0l0ZXJhdG9yQWRhcHRlci5odG1sIj5JdGVyYXRvckFkYXB0ZXI8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjbm9jYWNoZSI+PEI+bm9jYWNoZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+SW5jbHVkZSB0aGUgbm8tY2FjaGluZyBoZWFkZXJzIGluIG91ciByZXNwb25zZT8KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjbm90YXRpb25EZWNsKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5ub3RhdGlvbkRlY2woU3RyaW5nLCBTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5SZWNlaXZlIG5vdGlmaWNhdGlvbiBvZiBhIG5vdGF0aW9uIGRlY2xhcmF0aW9uIGV2ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL05vdEVxdWFsVGFnLmh0bWwiPjxCPk5vdEVxdWFsVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL05vdEVxdWFsVGFnLmh0bWwiPk5vdEVxdWFsVGFnPC9BPi48REQ+RXZhbHVhdGUgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCB2YXJpYWJsZQogYW5kIHZhbHVlIGFyZSBub3QgZXF1YWwuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Ob3RFcXVhbFRhZy5odG1sI05vdEVxdWFsVGFnKCkiPjxCPk5vdEVxdWFsVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Ob3RFcXVhbFRhZy5odG1sIj5Ob3RFcXVhbFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL05vdE1hdGNoVGFnLmh0bWwiPjxCPk5vdE1hdGNoVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL05vdE1hdGNoVGFnLmh0bWwiPk5vdE1hdGNoVGFnPC9BPi48REQ+RXZhbHV0ZSB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHZhbHVlCiBpcyBub3QgYSBzdWJzdHJpbmcgb2YgdGhlIHNwZWNpZmllZCB2YXJpYWJsZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL05vdE1hdGNoVGFnLmh0bWwjTm90TWF0Y2hUYWcoKSI+PEI+Tm90TWF0Y2hUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL05vdE1hdGNoVGFnLmh0bWwiPk5vdE1hdGNoVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTm90UHJlc2VudFRhZy5odG1sIj48Qj5Ob3RQcmVzZW50VGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL05vdFByZXNlbnRUYWcuaHRtbCI+Tm90UHJlc2VudFRhZzwvQT4uPEREPkV2YWx1dGUgdGhlIG5lc3RlZCBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZQogaXMgbm90IHByZXNlbnQgZm9yIHRoaXMgcmVxdWVzdC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL05vdFByZXNlbnRUYWcuaHRtbCNOb3RQcmVzZW50VGFnKCkiPjxCPk5vdFByZXNlbnRUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL05vdFByZXNlbnRUYWcuaHRtbCI+Tm90UHJlc2VudFRhZzwvQT4KPEREPiZuYnNwOwo8L0RMPgo8SFI+CjxBIE5BTUU9Il9PXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5PPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL09iamVjdENyZWF0ZVJ1bGUuaHRtbCI+PEI+T2JqZWN0Q3JlYXRlUnVsZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvT2JqZWN0Q3JlYXRlUnVsZS5odG1sIj5PYmplY3RDcmVhdGVSdWxlPC9BPi48REQ+UnVsZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGNyZWF0ZXMgYSBuZXcgb2JqZWN0IGFuZCBwdXNoZXMgaXQKIG9udG8gdGhlIG9iamVjdCBzdGFjay48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvT2JqZWN0Q3JlYXRlUnVsZS5odG1sI09iamVjdENyZWF0ZVJ1bGUob3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuRGlnZXN0ZXIsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5PYmplY3RDcmVhdGVSdWxlKERpZ2VzdGVyLCBTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL09iamVjdENyZWF0ZVJ1bGUuaHRtbCI+T2JqZWN0Q3JlYXRlUnVsZTwvQT4KPEREPkNvbnN0cnVjdCBhbiBvYmplY3QgY3JlYXRlIHJ1bGUgd2l0aCB0aGUgc3BlY2lmaWVkIGNsYXNzIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9PYmplY3RDcmVhdGVSdWxlLmh0bWwjT2JqZWN0Q3JlYXRlUnVsZShvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci5EaWdlc3RlciwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPk9iamVjdENyZWF0ZVJ1bGUoRGlnZXN0ZXIsIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9PYmplY3RDcmVhdGVSdWxlLmh0bWwiPk9iamVjdENyZWF0ZVJ1bGU8L0E+CjxERD5Db25zdHJ1Y3QgYW4gb2JqZWN0IGNyZWF0ZSBydWxlIHdpdGggdGhlIHNwZWNpZmllZCBjbGFzcyBuYW1lIGFuZCBhbgogb3B0aW9uYWwgYXR0cmlidXRlIG5hbWUgY29udGFpbmluZyBhbiBvdmVycmlkZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCNvZmZzZXQiPjxCPm9mZnNldDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPlRoZSBzdGFydGluZyBvZmZzZXQgKHplcm8gcmVsYXRpdmUpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCNvZmZzZXQiPjxCPm9mZnNldDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+VGhlIHN0YXJ0aW5nIG9mZnNldCAoemVybyByZWxhdGl2ZSkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI29mZnNldCI+PEI+b2Zmc2V0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD5UaGUgc3RhcnRpbmcgb2Zmc2V0ICh6ZXJvIHJlbGF0aXZlKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCNvZmZzZXRWYWx1ZSI+PEI+b2Zmc2V0VmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sIj5FbnVtZXJhdGVUYWc8L0E+CjxERD5UaGUgYWN0dWFsIG9mZnNldCB2YWx1ZSAoY2FsY3VsYXRlZCBpbiB0aGUgc3RhcnQgdGFnKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwjb2Zmc2V0VmFsdWUiPjxCPm9mZnNldFZhbHVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD5UaGUgYWN0dWFsIG9mZnNldCB2YWx1ZSAoY2FsY3VsYXRlZCBpbiB0aGUgc3RhcnQgdGFnKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwjb2Zmc2V0VmFsdWUiPjxCPm9mZnNldFZhbHVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD5UaGUgYWN0dWFsIG9mZnNldCB2YWx1ZSAoY2FsY3VsYXRlZCBpbiB0aGUgc3RhcnQgdGFnKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25ibHVyIj48Qj5vbmJsdXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPkNvbXBvbmVudCBsb3N0IGZvY3VzIGV2ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25CbHVyIj48Qj5vbkJsdXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+Q29tcG9uZW50IGxvc3QgZm9jdXMgZXZlbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI29uY2hhbmdlIj48Qj5vbmNoYW5nZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+Q29udGVudCBjaGFuZ2VkIGFmdGVyIGNvbXBvbmVudCBsb3N0IGZvY3VzIGV2ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25DaGFuZ2UiPjxCPm9uQ2hhbmdlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPkNvbnRlbnQgY2hhbmdlZCBhZnRlciBjb21wb25lbnQgbG9zdCBmb2N1cyBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25jbGljayI+PEI+b25jbGljazwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+TW91c2UgY2xpY2sgZXZlbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNvbkNsaWNrIj48Qj5vbkNsaWNrPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPk1vdXNlIGNsaWNrIGV2ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNvbmRibGNsaWNrIj48Qj5vbmRibGNsaWNrPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5Nb3VzZSBkb3VibGUgY2xpY2sgZXZlbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNvbkRibENsaWNrIj48Qj5vbkRibENsaWNrPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPk1vdXNlIGRvdWJsZSBjbGljayBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25mb2N1cyI+PEI+b25mb2N1czwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+Q29tcG9uZW50IGhhcyByZWNlaXZlZCBmb2N1cyBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI29uRm9jdXMiPjxCPm9uRm9jdXM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+Q29tcG9uZW50IGhhcyByZWNlaXZlZCBmb2N1cyBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25rZXlkb3duIj48Qj5vbmtleWRvd248L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPktleSBkb3duIGluIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI29uS2V5RG93biI+PEI+b25LZXlEb3duPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPktleSBkb3duIGluIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25rZXlwcmVzcyI+PEI+b25rZXlwcmVzczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+S2V5IGRvd24gYW5kIHVwIHRvZ2V0aGVyIGluIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI29uS2V5UHJlc3MiPjxCPm9uS2V5UHJlc3M8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+S2V5IGRvd24gYW5kIHVwIHRvZ2V0aGVyIGluIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25rZXl1cCI+PEI+b25rZXl1cDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+S2V5IHJlbGVhc2VkIGluIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI29uS2V5VXAiPjxCPm9uS2V5VXA8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+S2V5IHJlbGVhc2VkIGluIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25tb3VzZWRvd24iPjxCPm9ubW91c2Vkb3duPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5Nb3VzZSBwcmVzc2VkIG9uIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI29uTW91c2VEb3duIj48Qj5vbk1vdXNlRG93bjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5Nb3VzZSBwcmVzc2VkIG9uIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25tb3VzZW1vdmUiPjxCPm9ubW91c2Vtb3ZlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5Nb3VzZSBtb3ZlZCBvdmVyIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI29uTW91c2VNb3ZlIj48Qj5vbk1vdXNlTW92ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5Nb3VzZSBtb3ZlZCBvdmVyIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25tb3VzZW91dCI+PEI+b25tb3VzZW91dDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+TW91c2UgZXhpdCBjb21wb25lbnQgZXZlbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNvbk1vdXNlT3V0Ij48Qj5vbk1vdXNlT3V0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPk1vdXNlIGV4aXQgY29tcG9uZW50IGV2ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNvbm1vdXNlb3ZlciI+PEI+b25tb3VzZW92ZXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPk1vdXNlIG92ZXIgY29tcG9uZW50IGV2ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25Nb3VzZU92ZXIiPjxCPm9uTW91c2VPdmVyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPk1vdXNlIG92ZXIgY29tcG9uZW50IGV2ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNvbm1vdXNldXAiPjxCPm9ubW91c2V1cDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+TW91c2UgcmVsZWFzZWQgb24gY29tcG9uZW50IGV2ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25Nb3VzZVVwIj48Qj5vbk1vdXNlVXA8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+TW91c2UgcmVsZWFzZWQgb24gY29tcG9uZW50IGV2ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI29ucmVzZXQiPjxCPm9ucmVzZXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgb25SZXNldCBldmVudCBzY3JpcHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI29uUmVzZXQiPjxCPm9uUmVzZXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlRoZSBvblJlc2V0IGV2ZW50IHNjcmlwdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjb25zZWxlY3QiPjxCPm9uc2VsZWN0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5UZXh0IHNlbGVjdGVkIGluIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI29uU2VsZWN0Ij48Qj5vblNlbGVjdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5UZXh0IHNlbGVjdGVkIGluIGNvbXBvbmVudCBldmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNvbnN1Ym1pdCI+PEI+b25zdWJtaXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgb25TdWJtaXQgZXZlbnQgc2NyaXB0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNvblN1Ym1pdCI+PEI+b25TdWJtaXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlRoZSBvblN1Ym1pdCBldmVudCBzY3JpcHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjb3BlbigpIj48Qj5vcGVuKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+T3BlbiB0aGUgaW5pdGlhbCBjb25uZWN0aW9ucyB0aGF0IGFyZSBhcHByb3ByaWF0ZSBmb3IgdGhpcyBkYXRhIHNvdXJjZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sIj48Qj5PcHRpb25zMVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sIj5PcHRpb25zMVRhZzwvQT4uPEREPlRhZyBmb3IgY3JlYXRpbmcgbXVsdGlwbGUgJmx0O3NlbGVjdCZndDsgb3B0aW9ucyBmcm9tIGEgY29sbGVjdGlvbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwjT3B0aW9uczFUYWcoKSI+PEI+T3B0aW9uczFUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwiPk9wdGlvbnMxVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uc1RhZy5odG1sIj48Qj5PcHRpb25zVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4uPEREPlRhZyBmb3IgY3JlYXRpbmcgbXVsdGlwbGUgJmx0O3NlbGVjdCZndDsgb3B0aW9ucyBmcm9tIGEgY29sbGVjdGlvbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sIj48Qj5PcHRpb25zVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+LjxERD5UYWcgZm9yIGNyZWF0aW5nIG11bHRpcGxlICZsdDtzZWxlY3QmZ3Q7IG9wdGlvbnMgZnJvbSBhIGNvbGxlY3Rpb24uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwjT3B0aW9uc1RhZygpIj48Qj5PcHRpb25zVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCNPcHRpb25zVGFnKCkiPjxCPk9wdGlvbnNUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25UYWcuaHRtbCI+PEI+T3B0aW9uVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvblRhZy5odG1sIj5PcHRpb25UYWc8L0E+LjxERD5UYWcgZm9yIHNlbGVjdCBvcHRpb25zLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+PEI+T3B0aW9uVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPi48REQ+VGFnIGZvciBzZWxlY3Qgb3B0aW9ucy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvblRhZy5odG1sI09wdGlvblRhZygpIj48Qj5PcHRpb25UYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvblRhZy5odG1sIj5PcHRpb25UYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvblRhZy5odG1sI09wdGlvblRhZygpIj48Qj5PcHRpb25UYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbjwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb248REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnM8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uczxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyPC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyPEREPlRoZSBEaWdlc3RlciBwYWNrYWdlIHByb3ZpZGVzIGZvciBydWxlcy1iYXNlZCBwcm9jZXNzaW5nIG9mIGFyYml0cmFyeQpYTUwgZG9jdW1lbnRzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYjwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWI8REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbjwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbjxERD5UaGUgInN0cnV0cy1iZWFuIiB0YWcgbGlicmFyeSBjb250YWlucyBKU1AgY3VzdG9tIHRhZ3MgdXNlZnVsIGluIGRlZmluaW5nIG5ldwpiZWFucyAoaW4gYW55IGRlc2lyZWQgc2NvcGUpIGZyb20gYSB2YXJpZXR5IG9mIHBvc3NpYmxlIHNvdXJjZXMsIGFzIHdlbGwgYXMgYQp0YWcgdG8gcmVuZGVyIGEgcGFydGljdWxhciBiZWFuIChvciBiZWFuIHByb3BlcnR5KSB0byB0aGUgb3V0cHV0IHJlc3BvbnNlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWw8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWw8REQ+PGEgbmFtZT0iZG9jLkRlc2NyaXB0aW9uIj5UaGUgInN0cnV0cy1odG1sIiB0YWcgbGlicmFyeTwvYT4gY29udGFpbnMgSlNQCmN1c3RvbSB0YWdzIHVzZWZ1bCBpbiBjcmVhdGluZyBkeW5hbWljIEhUTUwgdXNlciBpbnRlcmZhY2VzLCBpbmNsdWRpbmcgaW5wdXQKZm9ybXMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljPC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYzxERD4KICAgIFRoZSAic3RydXRzLWxvZ2ljIiB0YWcgbGlicmFyeSBjb250YWlucyB0YWdzIHRoYXQgYXJlIHVzZWZ1bCBpbiBtYW5hZ2luZyBjb25kaXRpb25hbAogICAgZ2VuZXJhdGlvbiBvZiBvdXRwdXQgdGV4dCwgbG9vcGluZyBvdmVyIG9iamVjdCBjb2xsZWN0aW9ucyBmb3IgcmVwZXRpdGl2ZSBnZW5lcmF0aW9uCiAgICBvZiBvdXRwdXQgdGV4dCwgYW5kIGFwcGxpY2F0aW9uIGZsb3cgbWFuYWdlbWVudAogIDxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZTwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGU8REQ+CiAgICBUaGUgInN0cnV0cy10ZW1wbGF0ZSIgdGFnIGxpYnJhcnkgY29udGFpbnMgdGFncyB0aGF0IGFyZSB1c2VmdWwgaW4gY3JlYXRpbmcgZHluYW1pYwogICAgSlNQIHRlbXBsYXRlcyBmb3IgcGFnZXMgd2hpY2ggc2hhcmUgYSBjb21tb24gZm9ybWF0LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLnV0aWw8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLnV0aWw8REQ+Jm5ic3A7PERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkPC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZDxERD4mbmJzcDs8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmFwYWNoZS5zdHJ1dHMudXRpbDwvQj48L0E+IC0gcGFja2FnZSBvcmcuYXBhY2hlLnN0cnV0cy51dGlsPEREPlRoZSBVdGlsaXRpZXMgcGFja2FnZSBwcm92aWRlcyBhIHZhcmlldHkgb2YgZmFtaWxpZXMgb2YgY2xhc3NlcywKdG8gc29sdmUgcHJvYmxlbXMgdGhhdCBhcmUgY29tbW9ubHkgZW5jb3VudGVyZWQgaW4gYnVpbGRpbmcgd2ViIGFwcGxpY2F0aW9ucy48L0RMPgo8SFI+CjxBIE5BTUU9Il9QXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5QPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Db25zdGFudHMuaHRtbCNQYWNrYWdlIj48Qj5QYWNrYWdlPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ29uc3RhbnRzLmh0bWwiPkNvbnN0YW50czwvQT4KPEREPlRoZSBuYW1lIG9mIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NvbnN0YW50cy5odG1sI1BhY2thZ2UiPjxCPlBhY2thZ2U8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ29uc3RhbnRzLmh0bWwiPkNvbnN0YW50czwvQT4KPEREPlRoZSBuYW1lIG9mIHRoaXMgcGFja2FnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCNwYWdlIj48Qj5wYWdlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sIj5JbmNsdWRlVGFnPC9BPgo8REQ+VGhlIGNvbnRleHQtcmVsYXRpdmUgVVJJIG9mIHRoZSBwYWdlIG9yIHNlcnZsZXQgdG8gYmUgaW5jbHVkZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNwYWdlIj48Qj5wYWdlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlRoZSBjb250ZXh0LXJlbGF0aXZlIHBhdGgsIHN0YXJ0aW5nIHdpdGggYSBzbGFzaCBjaGFyYWN0ZXIsIG9mIHRoZQogaW1hZ2UgdG8gYmUgZGlzcGxheWVkIGJ5IHRoaXMgcmVuZGVyZWQgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNwYWdlIj48Qj5wYWdlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+SW1hZ2VUYWc8L0E+CjxERD5UaGUgY29udGV4dC1yZWxhdGl2ZSBVUkkgb2YgdGhlIGltYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3BhZ2UiPjxCPnBhZ2U8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5UaGUgY29udGV4dC1yZWxhdGl2ZSBwYWdlIFVSTCAoYmVnaW5uaW5nIHdpdGggYSBzbGFzaCkgdG8gd2hpY2gKIHRoaXMgaHlwZXJsaW5rIHdpbGwgYmUgcmVuZGVyZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNwYWdlIj48Qj5wYWdlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sIj5SZWRpcmVjdFRhZzwvQT4KPEREPlRoZSBjb250ZXh0LXJlbGF0aXZlIHBhZ2UgVVJMIChiZWdpbm5pbmcgd2l0aCBhIHNsYXNoKSB0byB3aGljaAogdGhpcyByZWRpcmVjdCB3aWxsIGJlIHJlbmRlcmVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjcGFnZUtleSI+PEI+cGFnZUtleTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5UaGUgbWVzc2FnZSByZXNvdXJjZXMga2V5IHVuZGVyIHdoaWNoIHdlIHNob3VsZCBsb29rIHVwIHRoZQogPGNvZGU+cGFnZTwvY29kZT4gYXR0cmlidXRlIGZvciB0aGlzIGdlbmVyYXRlZCB0YWcsIGlmIGFueS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjcGFnZUtleSI+PEI+cGFnZUtleTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGtleSBvZiB0aGUgY29udGV4dC1yZWxhdGl2ZSBVUkkgb2YgdGhlIGltYWdlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFnZVRhZy5odG1sIj48Qj5QYWdlVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYWdlVGFnLmh0bWwiPlBhZ2VUYWc8L0E+LjxERD5EZWZpbmUgYSBzY3JpcHRpbmcgdmFyaWFibGUgdGhhdCBleHBvc2VzIHRoZSByZXF1ZXN0ZWQgcGFnZSBjb250ZXh0CiBpdGVtIGFzIGEgc2NyaXB0aW5nIHZhcmlhYmxlIGFuZCBhIHBhZ2Ugc2NvcGUgYmVhbi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFnZVRhZy5odG1sI1BhZ2VUYWcoKSI+PEI+UGFnZVRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhZ2VUYWcuaHRtbCI+UGFnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFnZVRlaS5odG1sIj48Qj5QYWdlVGVpPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYWdlVGVpLmh0bWwiPlBhZ2VUZWk8L0E+LjxERD5JbXBsZW1lbnRhdGlvbiBvZiA8Y29kZT5UYWdFeHRyYUluZm88L2NvZGU+IGZvciB0aGUgPGI+cGFnZTwvYj4KIHRhZywgaWRlbnRpZnlpbmcgdGhlIHNjcmlwdGluZyBvYmplY3QocykgdG8gYmUgbWFkZSB2aXNpYmxlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYWdlVGVpLmh0bWwjUGFnZVRlaSgpIj48Qj5QYWdlVGVpKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFnZVRlaS5odG1sIj5QYWdlVGVpPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsTWV0aG9kUnVsZS5odG1sI3BhcmFtQ291bnQiPjxCPnBhcmFtQ291bnQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsTWV0aG9kUnVsZS5odG1sIj5DYWxsTWV0aG9kUnVsZTwvQT4KPEREPlRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyB0byBjb2xsZWN0IGZyb20gPGNvZGU+TWV0aG9kUGFyYW08L2NvZGU+IHJ1bGVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNwYXJhbWV0ZXIiPjxCPnBhcmFtZXRlcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+R2VuZXJhbCBwdXJwb3NlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGZvciB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjcGFyYW1ldGVyIj48Qj5wYXJhbWV0ZXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sIj5Db25kaXRpb25hbFRhZ0Jhc2U8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgSFRUUCByZXF1ZXN0IHBhcmFtZXRlciB0byBiZSB1c2VkIGFzIGEgdmFyaWFibGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNwYXJhbWV0ZXJzIj48Qj5wYXJhbWV0ZXJzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPlRoZSBwYXJhbWV0ZXJzIGZvciB0aGlzIG11bHRpcGFydCByZXF1ZXN0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUGFyYW1ldGVyVGFnLmh0bWwiPjxCPlBhcmFtZXRlclRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9QYXJhbWV0ZXJUYWcuaHRtbCI+UGFyYW1ldGVyVGFnPC9BPi48REQ+RGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBxdWVyeSBwYXJhbWV0ZXIgYXMgcmVhZC1vbmx5IEhUTUwgdGV4dC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFyYW1ldGVyVGFnLmh0bWwiPjxCPlBhcmFtZXRlclRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFyYW1ldGVyVGFnLmh0bWwiPlBhcmFtZXRlclRhZzwvQT4uPEREPkRlZmluZSBhIHNjcmlwdGluZyB2YXJpYWJsZSBiYXNlZCBvbiB0aGUgdmFsdWUocykgb2YgdGhlIHNwZWNpZmllZAogcGFyYW1ldGVyIHJlY2VpdmVkIHdpdGggdGhpcyByZXF1ZXN0LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUGFyYW1ldGVyVGFnLmh0bWwjUGFyYW1ldGVyVGFnKCkiPjxCPlBhcmFtZXRlclRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUGFyYW1ldGVyVGFnLmh0bWwiPlBhcmFtZXRlclRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFyYW1ldGVyVGFnLmh0bWwjUGFyYW1ldGVyVGFnKCkiPjxCPlBhcmFtZXRlclRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sIj5QYXJhbWV0ZXJUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRlaS5odG1sIj48Qj5QYXJhbWV0ZXJUZWk8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRlaS5odG1sIj5QYXJhbWV0ZXJUZWk8L0E+LjxERD5JbXBsZW1lbnRhdGlvbiBvZiA8Y29kZT5UYWdFeHRyYUluZm88L2NvZGU+IGZvciB0aGUgPGI+cGFyYW1ldGVyPC9iPgogdGFnLCBpZGVudGlmeWluZyB0aGUgc2NyaXB0aW5nIG9iamVjdChzKSB0byBiZSBtYWRlIHZpc2libGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRlaS5odG1sI1BhcmFtZXRlclRlaSgpIj48Qj5QYXJhbWV0ZXJUZWkoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUZWkuaHRtbCI+UGFyYW1ldGVyVGVpPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNwYXJhbUlkIj48Qj5wYXJhbUlkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPkluIHNpdHVhdGlvbnMgd2hlcmUgYW4gaW1hZ2UgaXMgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIChzdWNoIGFzIHRvIGNyZWF0ZQogYSBjaGFydCBncmFwaCksIHRoaXMgc3BlY2lmaWVzIHRoZSBzaW5nbGUtcGFyYW1ldGVyIHJlcXVlc3QgcGFyYW1ldGVyCiBuYW1lIHRvIGdlbmVyYXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3BhcmFtSWQiPjxCPnBhcmFtSWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5UaGUgc2luZ2xlLXBhcmFtZXRlciByZXF1ZXN0IHBhcmFtZXRlciBuYW1lIHRvIGdlbmVyYXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwjcGFyYW1JZCI+PEI+cGFyYW1JZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD5UaGUgc2luZ2xlLXBhcmFtZXRlciByZXF1ZXN0IHBhcmFtZXRlciBuYW1lIHRvIGdlbmVyYXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvQ2FsbFBhcmFtUnVsZS5odG1sI3BhcmFtSW5kZXgiPjxCPnBhcmFtSW5kZXg8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9DYWxsUGFyYW1SdWxlLmh0bWwiPkNhbGxQYXJhbVJ1bGU8L0E+CjxERD5UaGUgemVyby1yZWxhdGl2ZSBpbmRleCBvZiB0aGUgcGFyYW1ldGVyIHdlIGFyZSBzYXZpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNwYXJhbU5hbWUiPjxCPnBhcmFtTmFtZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5UaGUgc2luZ2xlLXBhcmFtZXRlciBKU1AgYmVhbiBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3BhcmFtTmFtZSI+PEI+cGFyYW1OYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+VGhlIHNpbmdsZS1wYXJhbWV0ZXIgSlNQIGJlYW4gbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI3BhcmFtTmFtZSI+PEI+cGFyYW1OYW1lPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sIj5SZWRpcmVjdFRhZzwvQT4KPEREPlRoZSBzaW5nbGUtcGFyYW1ldGVyIEpTUCBiZWFuIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNwYXJhbVByb3BlcnR5Ij48Qj5wYXJhbVByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlRoZSBzaW5nbGUtcGFyYW1ldGVyIEpTUCBiZWFuIHByb3BlcnR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3BhcmFtUHJvcGVydHkiPjxCPnBhcmFtUHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5UaGUgc2luZ2xlLXBhcmFtZXRlciBKU1AgYmVhbiBwcm9wZXJ0eS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI3BhcmFtUHJvcGVydHkiPjxCPnBhcmFtUHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+VGhlIHNpbmdsZS1wYXJhbWV0ZXIgSlNQIGJlYW4gcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNwYXJhbVNjb3BlIj48Qj5wYXJhbVNjb3BlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlRoZSBzaW5nbGUtcGFyYW1ldGVyIEpTUCBiZWFuIHNjb3BlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3BhcmFtU2NvcGUiPjxCPnBhcmFtU2NvcGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5UaGUgc2luZ2xlLXBhcmFtZXRlciBKU1AgYmVhbiBzY29wZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI3BhcmFtU2NvcGUiPjxCPnBhcmFtU2NvcGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+VGhlIHNpbmdsZS1wYXJhbWV0ZXIgSlNQIGJlYW4gc2NvcGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXRUb3BSdWxlLmh0bWwjcGFyYW1UeXBlIj48Qj5wYXJhbVR5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXRUb3BSdWxlLmh0bWwiPlNldFRvcFJ1bGU8L0E+CjxERD5UaGUgSmF2YSBjbGFzcyBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSBleHBlY3RlZCBieSB0aGUgbWV0aG9kLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0TmV4dFJ1bGUuaHRtbCNwYXJhbVR5cGUiPjxCPnBhcmFtVHlwZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldE5leHRSdWxlLmh0bWwiPlNldE5leHRSdWxlPC9BPgo8REQ+VGhlIEphdmEgY2xhc3MgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGUgZXhwZWN0ZWQgYnkgdGhlIG1ldGhvZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxNZXRob2RSdWxlLmh0bWwjcGFyYW1UeXBlcyI+PEI+cGFyYW1UeXBlczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0NhbGxNZXRob2RSdWxlLmh0bWwiPkNhbGxNZXRob2RSdWxlPC9BPgo8REQ+VGhlIHBhcmFtZXRlciB0eXBlcyBvZiB0aGUgcGFyYW1ldGVycyB0byBiZSBjb2xsZWN0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3BhcnNlKGphdmEuaW8uRmlsZSkiPjxCPnBhcnNlKEZpbGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+UGFyc2UgdGhlIGNvbnRlbnQgb2YgdGhlIHNwZWNpZmllZCBmaWxlIHVzaW5nIHRoaXMgRGlnZXN0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3BhcnNlKG9yZy54bWwuc2F4LklucHV0U291cmNlKSI+PEI+cGFyc2UoSW5wdXRTb3VyY2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+UGFyc2UgdGhlIGNvbnRlbnQgb2YgdGhlIHNwZWNpZmllZCBpbnB1dCBzb3VyY2UgdXNpbmcgdGhpcyBEaWdlc3Rlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjcGFyc2UoamF2YS5pby5JbnB1dFN0cmVhbSkiPjxCPnBhcnNlKElucHV0U3RyZWFtKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPlBhcnNlIHRoZSBjb250ZW50IG9mIHRoZSBzcGVjaWZpZWQgaW5wdXQgc3RyZWFtIHVzaW5nIHRoaXMgRGlnZXN0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3BhcnNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5wYXJzZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+UGFyc2UgdGhlIGNvbnRlbnQgb2YgdGhlIHNwZWNpZmllZCBVUkkgdXNpbmcgdGhpcyBEaWdlc3Rlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sI3BhcnNlQm91bmRhcnkoamF2YS5sYW5nLlN0cmluZykiPjxCPnBhcnNlQm91bmRhcnkoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPlBhcnNlcyBhIGNvbnRlbnQtdHlwZSBTdHJpbmcgZm9yIHRoZSBib3VuZGFyeS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sI3BhcnNlQ29udGVudFR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnBhcnNlQ29udGVudFR5cGUoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPlBhcnNlcyB0aGUgIkNvbnRlbnQtVHlwZSIgbGluZSBvZiBhIG11bHRpcGFydCBmb3JtIGZvciBhIGNvbnRlbnQgdHlwZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwjcGFyc2VEaXNwb3NpdGlvbkZpbGVuYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5wYXJzZURpc3Bvc2l0aW9uRmlsZW5hbWUoU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPlJldHJpZXZlcyB0aGUgImZpbGVuYW1lIiBhdHRyaWJ1dGUgZnJvbSBhIGNvbnRlbnQgZGlzcG9zaXRpb24gbGluZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwjcGFyc2VEaXNwb3NpdGlvbk5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnBhcnNlRGlzcG9zaXRpb25OYW1lKFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCI+TXVsdGlwYXJ0SXRlcmF0b3I8L0E+CjxERD5SZXRyaWV2ZXMgdGhlICJuYW1lIiBhdHRyaWJ1dGUgZnJvbSBhIGNvbnRlbnQgZGlzcG9zaXRpb24gbGluZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwjcGFyc2VGb3JBdHRyaWJ1dGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPnBhcnNlRm9yQXR0cmlidXRlKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPlBhcnNlcyBhIHN0cmluZyBsb29raW5nIGZvciBhIGF0dHJpYnV0ZS12YWx1ZSBwYWlyLCBhbmQgcmV0dXJucyB0aGUgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3BhcnNlciI+PEI+cGFyc2VyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5UaGUgU0FYUGFyc2VyIHdlIHdpbGwgdXNlIHRvIHBhcnNlIHRoZSBpbnB1dCBzdHJlYW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNwYXJzZVJlcXVlc3QoKSI+PEI+cGFyc2VSZXF1ZXN0KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPkhhbmRsZXMgcmV0cmlldmluZyB0aGUgYm91bmRhcnkgYW5kIHNldHRpbmcgdGhlIGlucHV0IHN0cmVhbQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI3Bhc3N3b3JkIj48Qj5wYXNzd29yZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPlRoZSBkYXRhYmFzZSBwYXNzd29yZCBmb3IgdXNlIGluIGVzdGFibGlzaGluZyBhIGNvbm5lY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUGFzc3dvcmRUYWcuaHRtbCI+PEI+UGFzc3dvcmRUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUGFzc3dvcmRUYWcuaHRtbCI+UGFzc3dvcmRUYWc8L0E+LjxERD5DdXN0b20gdGFnIGZvciBpbnB1dCBmaWVsZHMgb2YgdHlwZSAidGV4dCIuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Bhc3N3b3JkVGFnLmh0bWwiPjxCPlBhc3N3b3JkVGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9QYXNzd29yZFRhZy5odG1sIj5QYXNzd29yZFRhZzwvQT4uPEREPkN1c3RvbSB0YWcgZm9yIGlucHV0IGZpZWxkcyBvZiB0eXBlICJ0ZXh0Ii48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Bhc3N3b3JkVGFnLmh0bWwjUGFzc3dvcmRUYWcoKSI+PEI+UGFzc3dvcmRUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Bhc3N3b3JkVGFnLmh0bWwiPlBhc3N3b3JkVGFnPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUGFzc3dvcmRUYWcuaHRtbCNQYXNzd29yZFRhZygpIj48Qj5QYXNzd29yZFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Bhc3N3b3JkVGFnLmh0bWwiPlBhc3N3b3JkVGFnPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNwYXRoIj48Qj5wYXRoPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5UaGUgY29udGV4dC1yZWxhdGl2ZSBwYXRoIG9mIHRoZSBzdWJtaXR0ZWQgcmVxdWVzdCwgc3RhcnRpbmcgd2l0aCBhCiAiLyIgY2hhcmFjdGVyLCBhbmQgd2l0aG91dCB0aGUgZmlsZW5hbWUgZXh0ZW5zaW9uIChpZiBhbnkpLCB0aGF0IGlzCiBtYXBwZWQgdG8gdGhpcyBhY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sI3BhdGgiPjxCPnBhdGg8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCI+QWN0aW9uRm9yd2FyZDwvQT4KPEREPlRoZSBjb250ZXh0LXJlbGF0aXZlIChmb3IgYSBmb3J3YXJkKSBvciByZWxhdGl2ZSBvciBhYnNvbHV0ZSAoZm9yIGEKIHJlZGlyZWN0KSBVUkkgcGF0aCB0byBiZSBmb3J3YXJkZWQgdG8uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3BlZWsoKSI+PEI+cGVlaygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+UmV0dXJuIHRoZSB0b3Agb2JqZWN0IG9uIHRoZSBzdGFjayB3aXRob3V0IHJlbW92aW5nIGl0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9BcnJheVN0YWNrLmh0bWwjcGVlaygpIj48Qj5wZWVrKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0FycmF5U3RhY2suaHRtbCI+QXJyYXlTdGFjazwvQT4KPEREPlJldHVybiB0aGUgdG9wIGl0ZW0gb2ZmIG9mIHRoaXMgc3RhY2sgd2l0aG91dCByZW1vdmluZyBpdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjcGVlayhpbnQpIj48Qj5wZWVrKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5SZXR1cm4gdGhlIG4ndGggb2JqZWN0IGRvd24gdGhlIHN0YWNrLCB3aGVyZSAwIGlzIHRoZSB0b3AgZWxlbWVudAogYW5kIFtnZXRDb3VudCgpLTFdIGlzIHRoZSBib3R0b20gZWxlbWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQXJyYXlTdGFjay5odG1sI3BlZWsoaW50KSI+PEI+cGVlayhpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9BcnJheVN0YWNrLmh0bWwiPkFycmF5U3RhY2s8L0E+CjxERD5SZXR1cm4gdGhlIG4ndGggaXRlbSBkb3duICh6ZXJvLXJlbGF0aXZlKSBmcm9tIHRoZSB0b3Agb2YgdGhpcwogc3RhY2sgd2l0aG91dCByZW1vdmluZyBpdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnRNYXBTdGFjay5odG1sI3BlZWsoamF2YXguc2VydmxldC5qc3AuUGFnZUNvbnRleHQpIj48Qj5wZWVrKFBhZ2VDb250ZXh0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL3V0aWwvQ29udGVudE1hcFN0YWNrLmh0bWwiPkNvbnRlbnRNYXBTdGFjazwvQT4KPEREPlBlZWsgYXQgdGhlIG1hcCBvbiB0b3Agb2YgdGhlIHN0YWNrLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI3BlcmZvcm0ob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3JtLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkiPjxCPnBlcmZvcm0oQWN0aW9uTWFwcGluZywgQWN0aW9uRm9ybSwgSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD5Qcm9jZXNzIHRoZSBzcGVjaWZpZWQgSFRUUCByZXF1ZXN0LCBhbmQgY3JlYXRlIHRoZSBjb3JyZXNwb25kaW5nIEhUVFAKIHJlc3BvbnNlIChvciBmb3J3YXJkIHRvIGFub3RoZXIgd2ViIGNvbXBvbmVudCB0aGF0IHdpbGwgY3JlYXRlIGl0KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvRGlzcGF0Y2hBY3Rpb24uaHRtbCNwZXJmb3JtKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9ybSwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj48Qj5wZXJmb3JtKEFjdGlvbk1hcHBpbmcsIEFjdGlvbkZvcm0sIEh0dHBTZXJ2bGV0UmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0Rpc3BhdGNoQWN0aW9uLmh0bWwiPkRpc3BhdGNoQWN0aW9uPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3BlY2lmaWVkIEhUVFAgcmVxdWVzdCwgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBIVFRQCiByZXNwb25zZSAob3IgZm9yd2FyZCB0byBhbm90aGVyIHdlYiBjb21wb25lbnQgdGhhdCB3aWxsIGNyZWF0ZSBpdCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0FkZEZvcndhcmRBY3Rpb24uaHRtbCNwZXJmb3JtKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9ybSwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj48Qj5wZXJmb3JtKEFjdGlvbk1hcHBpbmcsIEFjdGlvbkZvcm0sIEh0dHBTZXJ2bGV0UmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0FkZEZvcndhcmRBY3Rpb24uaHRtbCI+QWRkRm9yd2FyZEFjdGlvbjwvQT4KPEREPlByb2Nlc3MgdGhlIHNwZWNpZmllZCBIVFRQIHJlcXVlc3QsIGFuZCBjcmVhdGUgdGhlIGNvcnJlc3BvbmRpbmcgSFRUUAogcmVzcG9uc2UgKG9yIGZvcndhcmQgdG8gYW5vdGhlciB3ZWIgY29tcG9uZW50IHRoYXQgd2lsbCBjcmVhdGUgaXQpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9SZW1vdmVNYXBwaW5nQWN0aW9uLmh0bWwjcGVyZm9ybShvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZywgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm0sIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+cGVyZm9ybShBY3Rpb25NYXBwaW5nLCBBY3Rpb25Gb3JtLCBIdHRwU2VydmxldFJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9SZW1vdmVNYXBwaW5nQWN0aW9uLmh0bWwiPlJlbW92ZU1hcHBpbmdBY3Rpb248L0E+CjxERD5Qcm9jZXNzIHRoZSBzcGVjaWZpZWQgSFRUUCByZXF1ZXN0LCBhbmQgY3JlYXRlIHRoZSBjb3JyZXNwb25kaW5nIEhUVFAKIHJlc3BvbnNlIChvciBmb3J3YXJkIHRvIGFub3RoZXIgd2ViIGNvbXBvbmVudCB0aGF0IHdpbGwgY3JlYXRlIGl0KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvUmVsb2FkQWN0aW9uLmh0bWwjcGVyZm9ybShvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZywgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm0sIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+cGVyZm9ybShBY3Rpb25NYXBwaW5nLCBBY3Rpb25Gb3JtLCBIdHRwU2VydmxldFJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9SZWxvYWRBY3Rpb24uaHRtbCI+UmVsb2FkQWN0aW9uPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3BlY2lmaWVkIEhUVFAgcmVxdWVzdCwgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBIVFRQCiByZXNwb25zZSAob3IgZm9yd2FyZCB0byBhbm90aGVyIHdlYiBjb21wb25lbnQgdGhhdCB3aWxsIGNyZWF0ZSBpdCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0ZvcndhcmRBY3Rpb24uaHRtbCNwZXJmb3JtKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9ybSwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj48Qj5wZXJmb3JtKEFjdGlvbk1hcHBpbmcsIEFjdGlvbkZvcm0sIEh0dHBTZXJ2bGV0UmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0ZvcndhcmRBY3Rpb24uaHRtbCI+Rm9yd2FyZEFjdGlvbjwvQT4KPEREPlByb2Nlc3MgdGhlIHNwZWNpZmllZCBIVFRQIHJlcXVlc3QsIGFuZCBjcmVhdGUgdGhlIGNvcnJlc3BvbmRpbmcgSFRUUAogcmVzcG9uc2UgKG9yIGZvcndhcmQgdG8gYW5vdGhlciB3ZWIgY29tcG9uZW50IHRoYXQgd2lsbCBjcmVhdGUgaXQpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9BZGRNYXBwaW5nQWN0aW9uLmh0bWwjcGVyZm9ybShvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZywgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm0sIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+cGVyZm9ybShBY3Rpb25NYXBwaW5nLCBBY3Rpb25Gb3JtLCBIdHRwU2VydmxldFJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9BZGRNYXBwaW5nQWN0aW9uLmh0bWwiPkFkZE1hcHBpbmdBY3Rpb248L0E+CjxERD5Qcm9jZXNzIHRoZSBzcGVjaWZpZWQgSFRUUCByZXF1ZXN0LCBhbmQgY3JlYXRlIHRoZSBjb3JyZXNwb25kaW5nIEhUVFAKIHJlc3BvbnNlIChvciBmb3J3YXJkIHRvIGFub3RoZXIgd2ViIGNvbXBvbmVudCB0aGF0IHdpbGwgY3JlYXRlIGl0KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvUmVtb3ZlRm9yd2FyZEFjdGlvbi5odG1sI3BlcmZvcm0ob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3JtLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkiPjxCPnBlcmZvcm0oQWN0aW9uTWFwcGluZywgQWN0aW9uRm9ybSwgSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvUmVtb3ZlRm9yd2FyZEFjdGlvbi5odG1sIj5SZW1vdmVGb3J3YXJkQWN0aW9uPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3BlY2lmaWVkIEhUVFAgcmVxdWVzdCwgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBIVFRQCiByZXNwb25zZSAob3IgZm9yd2FyZCB0byBhbm90aGVyIHdlYiBjb21wb25lbnQgdGhhdCB3aWxsIGNyZWF0ZSBpdCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL1JlbW92ZUZvcm1CZWFuQWN0aW9uLmh0bWwjcGVyZm9ybShvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZywgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm0sIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+cGVyZm9ybShBY3Rpb25NYXBwaW5nLCBBY3Rpb25Gb3JtLCBIdHRwU2VydmxldFJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9SZW1vdmVGb3JtQmVhbkFjdGlvbi5odG1sIj5SZW1vdmVGb3JtQmVhbkFjdGlvbjwvQT4KPEREPlByb2Nlc3MgdGhlIHNwZWNpZmllZCBIVFRQIHJlcXVlc3QsIGFuZCBjcmVhdGUgdGhlIGNvcnJlc3BvbmRpbmcgSFRUUAogcmVzcG9uc2UgKG9yIGZvcndhcmQgdG8gYW5vdGhlciB3ZWIgY29tcG9uZW50IHRoYXQgd2lsbCBjcmVhdGUgaXQpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9JbmNsdWRlQWN0aW9uLmh0bWwjcGVyZm9ybShvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZywgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm0sIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+cGVyZm9ybShBY3Rpb25NYXBwaW5nLCBBY3Rpb25Gb3JtLCBIdHRwU2VydmxldFJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9JbmNsdWRlQWN0aW9uLmh0bWwiPkluY2x1ZGVBY3Rpb248L0E+CjxERD5Qcm9jZXNzIHRoZSBzcGVjaWZpZWQgSFRUUCByZXF1ZXN0LCBhbmQgY3JlYXRlIHRoZSBjb3JyZXNwb25kaW5nIEhUVFAKIHJlc3BvbnNlIChvciBmb3J3YXJkIHRvIGFub3RoZXIgd2ViIGNvbXBvbmVudCB0aGF0IHdpbGwgY3JlYXRlIGl0KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvQWRkRm9ybUJlYW5BY3Rpb24uaHRtbCNwZXJmb3JtKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9ybSwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCwgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj48Qj5wZXJmb3JtKEFjdGlvbk1hcHBpbmcsIEFjdGlvbkZvcm0sIEh0dHBTZXJ2bGV0UmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL0FkZEZvcm1CZWFuQWN0aW9uLmh0bWwiPkFkZEZvcm1CZWFuQWN0aW9uPC9BPgo8REQ+UHJvY2VzcyB0aGUgc3BlY2lmaWVkIEhUVFAgcmVxdWVzdCwgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBIVFRQCiByZXNwb25zZSAob3IgZm9yd2FyZCB0byBhbm90aGVyIHdlYiBjb21wb25lbnQgdGhhdCB3aWxsIGNyZWF0ZSBpdCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjcGVyZm9ybShvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZywgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm0sIGphdmF4LnNlcnZsZXQuU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuU2VydmxldFJlc3BvbnNlKSI+PEI+cGVyZm9ybShBY3Rpb25NYXBwaW5nLCBBY3Rpb25Gb3JtLCBTZXJ2bGV0UmVxdWVzdCwgU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD5Qcm9jZXNzIHRoZSBzcGVjaWZpZWQgbm9uLUhUVFAgcmVxdWVzdCwgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZwogbm9uLUhUVFAgcmVzcG9uc2UgKG9yIGZvcndhcmQgdG8gYW5vdGhlciB3ZWIgY29tcG9uZW50IHRoYXQgd2lsbCBjcmVhdGUKIGl0KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNwZXJmb3JtKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25TZXJ2bGV0LCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZywgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm0sIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+cGVyZm9ybShBY3Rpb25TZXJ2bGV0LCBBY3Rpb25NYXBwaW5nLCBBY3Rpb25Gb3JtLCBIdHRwU2VydmxldFJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwiPkFjdGlvbjwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSB0aGUgbmV3IHBlcmZvcm0oKSBtZXRob2Qgd2l0aG91dCBhIHNlcnZsZXQgYXJndW1lbnQ8L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjcGVyZm9ybShvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uU2VydmxldCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3JtLCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXNwb25zZSkiPjxCPnBlcmZvcm0oQWN0aW9uU2VydmxldCwgQWN0aW9uTWFwcGluZywgQWN0aW9uRm9ybSwgU2VydmxldFJlcXVlc3QsIFNlcnZsZXRSZXNwb25zZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+QWN0aW9uPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIHRoZSBuZXcgcGVyZm9ybSgpIG1ldGhvZCB3aXRob3V0IGEgc2VydmxldCBhcmd1bWVudDwvST4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNwaW5nKGphdmEuc3FsLkNvbm5lY3Rpb24pIj48Qj5waW5nKENvbm5lY3Rpb24pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPlBlcmZvcm0gYW55IGNvbmZpZ3VyZWQgPGNvZGU+cGluZ0NvbW1hbmQ8L2NvZGU+IGFuZC9vcgogPGNvZGU+cGluZ1F1ZXJ5PC9jb2RlPiBvbiB0aGUgc3BlY2lmaWVkIGNvbm5lY3Rpb24sIHJldHVybmluZyBhbnkKIFNRTEV4Y2VwdGlvbiB0aGF0IGlzIGVuY291bnRlcmVkIGFsb25nIHRoZSB3YXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjcGluZ0NvbW1hbmQiPjxCPnBpbmdDb21tYW5kPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+VGhlIG5vbi1xdWVyeSBTUUwgY29tbWFuZCB1c2VkIHRvIHBpbmcgYW4gYWxsb2NhdGVkIGNvbm5lY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjcGluZ1F1ZXJ5Ij48Qj5waW5nUXVlcnk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD5UaGUgcXVlcnkgU1FMIGNvbW1hbmQgdXNlZCB0byBwaW5nIGFuIGFsbG9jYXRlZCBjb25uZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNwb3AoKSI+PEI+cG9wKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5Qb3AgdGhlIHRvcCBvYmplY3Qgb2ZmIG9mIHRoZSBzdGFjaywgYW5kIHJldHVybiBpdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQXJyYXlTdGFjay5odG1sI3BvcCgpIj48Qj5wb3AoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQXJyYXlTdGFjay5odG1sIj5BcnJheVN0YWNrPC9BPgo8REQ+UG9wIHRoZSB0b3AgaXRlbSBvZmYgb2YgdGhpcyBzdGFjayBhbmQgcmV0dXJuIGl0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL3V0aWwvQ29udGVudE1hcFN0YWNrLmh0bWwjcG9wKGphdmF4LnNlcnZsZXQuanNwLlBhZ2VDb250ZXh0KSI+PEI+cG9wKFBhZ2VDb250ZXh0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL3V0aWwvQ29udGVudE1hcFN0YWNrLmh0bWwiPkNvbnRlbnRNYXBTdGFjazwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXF1ZXN0VXRpbHMuaHRtbCNwb3B1bGF0ZShqYXZhLmxhbmcuT2JqZWN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+cG9wdWxhdGUoT2JqZWN0LCBIdHRwU2VydmxldFJlcXVlc3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwiPlJlcXVlc3RVdGlsczwvQT4KPEREPlBvcHVsYXRlIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzcGVjaWZpZWQgSmF2YUJlYW4gZnJvbSB0aGUgc3BlY2lmaWVkCiBIVFRQIHJlcXVlc3QsIGJhc2VkIG9uIG1hdGNoaW5nIGVhY2ggcGFyYW1ldGVyIG5hbWUgYWdhaW5zdCB0aGUKIGNvcnJlc3BvbmRpbmcgSmF2YUJlYW5zICJwcm9wZXJ0eSBzZXR0ZXIiIG1ldGhvZHMgaW4gdGhlIGJlYW4ncyBjbGFzcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQmVhblV0aWxzLmh0bWwjcG9wdWxhdGUoamF2YS5sYW5nLk9iamVjdCwgamF2YS51dGlsLk1hcCkiPjxCPnBvcHVsYXRlKE9iamVjdCwgTWFwKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0JlYW5VdGlscy5odG1sIj5CZWFuVXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtQb3B1bGF0ZSB0aGUgSmF2YUJlYW5zIHByb3BlcnRpZXMgb2YgdGhlIHNwZWNpZmllZCBiZWFuLCBiYXNlZCBvbgogdGhlIHNwZWNpZmllZCBuYW1lL3ZhbHVlIHBhaXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXF1ZXN0VXRpbHMuaHRtbCNwb3B1bGF0ZShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+cG9wdWxhdGUoT2JqZWN0LCBTdHJpbmcsIFN0cmluZywgSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sIj5SZXF1ZXN0VXRpbHM8L0E+CjxERD5Qb3B1bGF0ZSB0aGUgcHJvcGVydGllcyBvZiB0aGUgc3BlY2lmaWVkIEphdmFCZWFuIGZyb20gdGhlIHNwZWNpZmllZAogSFRUUCByZXF1ZXN0LCBiYXNlZCBvbiBtYXRjaGluZyBlYWNoIHBhcmFtZXRlciBuYW1lIChwbHVzIGFuIG9wdGlvbmFsCiBwcmVmaXggYW5kL29yIHN1ZmZpeCkgYWdhaW5zdCB0aGUgY29ycmVzcG9uZGluZyBKYXZhQmVhbnMgInByb3BlcnR5CiBzZXR0ZXIiIG1ldGhvZHMgaW4gdGhlIGJlYW4ncyBjbGFzcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjcHJlZml4Ij48Qj5wcmVmaXg8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlRoZSBwYXJhbWV0ZXIgbmFtZSBwcmVmaXggdXNlZCB0byBzZWxlY3QgcGFyYW1ldGVycyBmb3IgdGhpcyBhY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjcHJlcGFyZUNhbGwoamF2YS5sYW5nLlN0cmluZykiPjxCPnByZXBhcmVDYWxsKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwiPkdlbmVyaWNDb25uZWN0aW9uPC9BPgo8REQ+Q3JlYXRlIGEgPGNvZGU+Q2FsbGFibGVTdGF0ZW1lbnQ8L2NvZGU+IG9iamVjdCBmb3IgY2FsbGluZyBkYXRhYmFzZQogc3RvcmVkIHByb2NlZHVyZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjcHJlcGFyZUNhbGwoamF2YS5sYW5nLlN0cmluZywgaW50LCBpbnQpIj48Qj5wcmVwYXJlQ2FsbChTdHJpbmcsIGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD4oSkRCQyAyLjApIENyZWF0ZSBhIENhbGxhYmxlU3RhdGVtZW50IG9iamVjdCB0aGF0IHdpbGwgZ2VuZXJhdGUKIFJlc3VsdFNldCBvYmplY3RzIHdpdGggdGhlIGdpdmVuIHR5cGUgYW5kIGNvbmN1cnJlbmN5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjcHJlcGFyZUV2ZW50SGFuZGxlcnMoKSI+PEI+cHJlcGFyZUV2ZW50SGFuZGxlcnMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UHJlcGFyZXMgdGhlIGV2ZW50IGhhbmRsZXJzIGZvciBpbmNsdXNpb24gaW4gdGhlIGNvbXBvbmVudCdzIEhUTUwgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNwcmVwYXJlRXZlbnRIYW5kbGVycygpIj48Qj5wcmVwYXJlRXZlbnRIYW5kbGVycygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UHJlcGFyZXMgdGhlIGV2ZW50IGhhbmRsZXJzIGZvciBpbmNsdXNpb24gaW4gdGhlIGNvbXBvbmVudCdzIEhUTUwgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjcHJlcGFyZUZvY3VzRXZlbnRzKGphdmEubGFuZy5TdHJpbmdCdWZmZXIpIj48Qj5wcmVwYXJlRm9jdXNFdmVudHMoU3RyaW5nQnVmZmVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UHJlcGFyZXMgdGhlIGZvY3VzIGV2ZW50IGhhbmRsZXJzLCBhcHBlbmRpbmcgdGhlbSB0byB0aGUgdGhlIGdpdmVuCiBTdHJpbmdCdWZmZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3ByZXBhcmVGb2N1c0V2ZW50cyhqYXZhLmxhbmcuU3RyaW5nQnVmZmVyKSI+PEI+cHJlcGFyZUZvY3VzRXZlbnRzKFN0cmluZ0J1ZmZlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5QcmVwYXJlcyB0aGUgZm9jdXMgZXZlbnQgaGFuZGxlcnMsIGFwcGVuZGluZyB0aGVtIHRvIHRoZSB0aGUgZ2l2ZW4KIFN0cmluZ0J1ZmZlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI3ByZXBhcmVLZXlFdmVudHMoamF2YS5sYW5nLlN0cmluZ0J1ZmZlcikiPjxCPnByZXBhcmVLZXlFdmVudHMoU3RyaW5nQnVmZmVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UHJlcGFyZXMgdGhlIGtleWJvYXJkIGV2ZW50IGhhbmRsZXJzLCBhcHBlbmRpbmcgdGhlbSB0byB0aGUgdGhlIGdpdmVuCiBTdHJpbmdCdWZmZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3ByZXBhcmVLZXlFdmVudHMoamF2YS5sYW5nLlN0cmluZ0J1ZmZlcikiPjxCPnByZXBhcmVLZXlFdmVudHMoU3RyaW5nQnVmZmVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlByZXBhcmVzIHRoZSBrZXlib2FyZCBldmVudCBoYW5kbGVycywgYXBwZW5kaW5nIHRoZW0gdG8gdGhlIHRoZSBnaXZlbgogU3RyaW5nQnVmZmVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjcHJlcGFyZU1vdXNlRXZlbnRzKGphdmEubGFuZy5TdHJpbmdCdWZmZXIpIj48Qj5wcmVwYXJlTW91c2VFdmVudHMoU3RyaW5nQnVmZmVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UHJlcGFyZXMgdGhlIG1vdXNlIGV2ZW50IGhhbmRsZXJzLCBhcHBlbmRpbmcgdGhlbSB0byB0aGUgdGhlIGdpdmVuCiBTdHJpbmdCdWZmZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3ByZXBhcmVNb3VzZUV2ZW50cyhqYXZhLmxhbmcuU3RyaW5nQnVmZmVyKSI+PEI+cHJlcGFyZU1vdXNlRXZlbnRzKFN0cmluZ0J1ZmZlcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5QcmVwYXJlcyB0aGUgbW91c2UgZXZlbnQgaGFuZGxlcnMsIGFwcGVuZGluZyB0aGVtIHRvIHRoZSB0aGUgZ2l2ZW4KIFN0cmluZ0J1ZmZlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCNwcmVwYXJlU3RhdGVtZW50KGphdmEubGFuZy5TdHJpbmcpIj48Qj5wcmVwYXJlU3RhdGVtZW50KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwiPkdlbmVyaWNDb25uZWN0aW9uPC9BPgo8REQ+Q3JlYXRlIGEgPGNvZGU+UHJlcGFyZWRTdGF0ZW1lbnQ8L2NvZGU+IG9iamVjdCBmb3Igc2VuZGluZwogcGFyYW1ldGVyaXplZCBTUUwgc3RhdGVtZW50cyB0byB0aGUgZGF0YWJhc2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjcHJlcGFyZVN0YXRlbWVudChqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGludCkiPjxCPnByZXBhcmVTdGF0ZW1lbnQoU3RyaW5nLCBpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwiPkdlbmVyaWNDb25uZWN0aW9uPC9BPgo8REQ+KEpEQkMgMi4wKSBDcmVhdGUgYSBQcmVwYXJlZFN0YXRlbWVudCBvYmplY3QgdGhhdCB3aWxsIGdlbmVyYXRlCiBSZXN1bHRTZXQgb2JqZWN0cyB3aXRoIHRoZSBnaXZlbiB0eXBlIGFuZCBjb25jdXJyZW5jeS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI3ByZXBhcmVTdHlsZXMoKSI+PEI+cHJlcGFyZVN0eWxlcygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5QcmVwYXJlcyB0aGUgc3R5bGUgYXR0cmlidXRlcyBmb3IgaW5jbHVzaW9uIGluIHRoZSBjb21wb25lbnQncyBIVE1MIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjcHJlcGFyZVN0eWxlcygpIj48Qj5wcmVwYXJlU3R5bGVzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5QcmVwYXJlcyB0aGUgc3R5bGUgYXR0cmlidXRlcyBmb3IgaW5jbHVzaW9uIGluIHRoZSBjb21wb25lbnQncyBIVE1MIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI3ByZXBhcmVUZXh0RXZlbnRzKGphdmEubGFuZy5TdHJpbmdCdWZmZXIpIj48Qj5wcmVwYXJlVGV4dEV2ZW50cyhTdHJpbmdCdWZmZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5QcmVwYXJlcyB0aGUgdGV4dCBldmVudCBoYW5kbGVycywgYXBwZW5kaW5nIHRoZW0gdG8gdGhlIHRoZSBnaXZlbgogU3RyaW5nQnVmZmVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNwcmVwYXJlVGV4dEV2ZW50cyhqYXZhLmxhbmcuU3RyaW5nQnVmZmVyKSI+PEI+cHJlcGFyZVRleHRFdmVudHMoU3RyaW5nQnVmZmVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlByZXBhcmVzIHRoZSB0ZXh0IGV2ZW50IGhhbmRsZXJzLCBhcHBlbmRpbmcgdGhlbSB0byB0aGUgdGhlIGdpdmVuCiBTdHJpbmdCdWZmZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sI3ByZXNlbnQoamF2YXguc2VydmxldC5qc3AuUGFnZUNvbnRleHQsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5wcmVzZW50KFBhZ2VDb250ZXh0LCBTdHJpbmcsIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sIj5SZXF1ZXN0VXRpbHM8L0E+CjxERD5SZXR1cm4gdHJ1ZSBpZiBhIG1lc3NhZ2Ugc3RyaW5nIGZvciB0aGUgc3BlY2lmaWVkIG1lc3NhZ2Uga2V5CiBpcyBwcmVzZW50IGZvciB0aGUgc3BlY2lmaWVkIExvY2FsZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9QcmVzZW50VGFnLmh0bWwiPjxCPlByZXNlbnRUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUHJlc2VudFRhZy5odG1sIj5QcmVzZW50VGFnPC9BPi48REQ+RXZhbHV0ZSB0aGUgbmVzdGVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyBpZiB0aGUgc3BlY2lmaWVkIHZhbHVlCiBpcyBwcmVzZW50IGZvciB0aGlzIHJlcXVlc3QuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9QcmVzZW50VGFnLmh0bWwjUHJlc2VudFRhZygpIj48Qj5QcmVzZW50VGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9QcmVzZW50VGFnLmh0bWwiPlByZXNlbnRUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCNwcmludChib29sZWFuKSI+PEI+cHJpbnQoYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+UHJpbnQgYSBib29sZWFuIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sI3ByaW50KGNoYXIpIj48Qj5wcmludChjaGFyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCI+U2VydmxldENvbnRleHRXcml0ZXI8L0E+CjxERD5QcmludCBhIGNoYXJhY3RlciB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCNwcmludChjaGFyW10pIj48Qj5wcmludChjaGFyW10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPlByaW50IGEgY2hhcmFjdGVyIGFycmF5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sI3ByaW50KGRvdWJsZSkiPjxCPnByaW50KGRvdWJsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+UHJpbnQgYSBkb3VibGUgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjcHJpbnQoZmxvYXQpIj48Qj5wcmludChmbG9hdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+UHJpbnQgYSBmbG9hdCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCNwcmludChpbnQpIj48Qj5wcmludChpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPlByaW50IGFuIGludGVnZXIgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjcHJpbnQobG9uZykiPjxCPnByaW50KGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPlByaW50IGEgbG9uZyB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCNwcmludChqYXZhLmxhbmcuT2JqZWN0KSI+PEI+cHJpbnQoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCI+U2VydmxldENvbnRleHRXcml0ZXI8L0E+CjxERD5QcmludCBhbiBvYmplY3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjcHJpbnQoamF2YS5sYW5nLlN0cmluZykiPjxCPnByaW50KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+UHJpbnQgYSBTdHJpbmcgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sI3ByaW50YWJsZVVSTChqYXZhLm5ldC5VUkwpIj48Qj5wcmludGFibGVVUkwoVVJMKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sIj5SZXF1ZXN0VXRpbHM8L0E+CjxERD5Db21wdXRlIHRoZSBwcmludGFibGUgcmVwcmVzZW50YXRpb24gb2YgYSBVUkwsIGxlYXZpbmcgb2ZmIHRoZQogc2NoZW1lL2hvc3QvcG9ydCBwYXJ0IGlmIG5vIGhvc3QgaXMgc3BlY2lmaWVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sI3ByaW50bG4oKSI+PEI+cHJpbnRsbigpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPlRlcm1pbmF0ZSB0aGUgY3VycmVudCBsaW5lIGFuZCBmbHVzaCB0aGUgYnVmZmVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sI3ByaW50bG4oYm9vbGVhbikiPjxCPnByaW50bG4oYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+UHJpbnQgYSBib29sZWFuIHZhbHVlIGFuZCB0ZXJtaW5hdGUgdGhlIGxpbmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjcHJpbnRsbihjaGFyKSI+PEI+cHJpbnRsbihjaGFyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCI+U2VydmxldENvbnRleHRXcml0ZXI8L0E+CjxERD5QcmludCBhIGNoYXJhY3RlciB2YWx1ZSBhbmQgdGVybWluYXRlIHRoZSBsaW5lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sI3ByaW50bG4oY2hhcltdKSI+PEI+cHJpbnRsbihjaGFyW10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPlByaW50IGEgY2hhcmFjdGVyIGFycmF5IGFuZCB0ZXJtaW5hdGUgdGhlIGxpbmUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjcHJpbnRsbihkb3VibGUpIj48Qj5wcmludGxuKGRvdWJsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+UHJpbnQgYSBkb3VibGUgdmFsdWUgYW5kIHRlcm1pbmF0ZSB0aGUgbGluZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCNwcmludGxuKGZsb2F0KSI+PEI+cHJpbnRsbihmbG9hdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+UHJpbnQgYSBmbG9hdCB2YWx1ZSBhbmQgdGVybWluYXRlIHRoZSBsaW5lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sI3ByaW50bG4oaW50KSI+PEI+cHJpbnRsbihpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPlByaW50IGFuIGludGVnZXIgdmFsdWUgYW5kIHRlcm1pbmF0ZSB0aGUgbGluZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCNwcmludGxuKGxvbmcpIj48Qj5wcmludGxuKGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPlByaW50IGEgbG9uZyB2YWx1ZSBhbmQgdGVybWluYXRlIHRoZSBsaW5lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sI3ByaW50bG4oamF2YS5sYW5nLk9iamVjdCkiPjxCPnByaW50bG4oT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCI+U2VydmxldENvbnRleHRXcml0ZXI8L0E+CjxERD5QcmludCBhbiBvYmplY3QgYW5kIHRlcm1pbmF0ZSB0aGUgbGluZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCNwcmludGxuKGphdmEubGFuZy5TdHJpbmcpIj48Qj5wcmludGxuKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+UHJpbnQgYSBTdHJpbmcgdmFsdWUgYW5kIHRlcm1pbmF0ZSB0aGUgbGluZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjcHJvY2VzcyhqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkiPjxCPnByb2Nlc3MoSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlByb2Nlc3MgYW4gSFRUUCByZXF1ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNwcm9jZXNzQWN0aW9uQ3JlYXRlKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+cHJvY2Vzc0FjdGlvbkNyZWF0ZShBY3Rpb25NYXBwaW5nLCBIdHRwU2VydmxldFJlcXVlc3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+Q3JlYXRlIG9yIHJldHJpZXZlIHRoZSBBY3Rpb24gaW5zdGFuY2UgdGhhdCB3aWxsIHByb2Nlc3MgdGhpcyByZXF1ZXN0LAogb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm8gc3VjaCBBY3Rpb24gaW5zdGFuY2UgY2FuIGJlIGNyZWF0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI3Byb2Nlc3NBY3Rpb25Gb3JtKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+cHJvY2Vzc0FjdGlvbkZvcm0oQWN0aW9uTWFwcGluZywgSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlJldHJpZXZlIGFuZCByZXR1cm4gdGhlIDxjb2RlPkFjdGlvbkZvcm08L2NvZGU+IGJlYW4gYXNzb2NpYXRlZCB3aXRoCiB0aGlzIG1hcHBpbmcsIGNyZWF0aW5nIGFuZCBzdGFzaGluZyBvbmUgaWYgbmVjZXNzYXJ5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNwcm9jZXNzQWN0aW9uRm9yd2FyZChvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9yd2FyZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3JtLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkiPjxCPnByb2Nlc3NBY3Rpb25Gb3J3YXJkKEFjdGlvbkZvcndhcmQsIEFjdGlvbk1hcHBpbmcsIEFjdGlvbkZvcm0sIEh0dHBTZXJ2bGV0UmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5Gb3J3YXJkIHRvIHRoZSBzcGVjaWZpZWQgZGVzdGluYXRpb24sIGJ5IHRoZSBzcGVjaWZpZWQgbWVjaGFuaXNtLAogaWYgYW4gPGNvZGU+QWN0aW9uRm9yd2FyZDwvY29kZT4gaW5zdGFuY2Ugd2FzIHJldHVybmVkIGJ5IHRoZQogPGNvZGU+QWN0aW9uPC9jb2RlPi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjcHJvY2Vzc0FjdGlvblBlcmZvcm0ob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbiwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3JtLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkiPjxCPnByb2Nlc3NBY3Rpb25QZXJmb3JtKEFjdGlvbiwgQWN0aW9uTWFwcGluZywgQWN0aW9uRm9ybSwgSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkFzayB0aGUgc3BlY2lmaWVkIEFjdGlvbiBpbnN0YW5jZSB0byBoYW5kbGUgdGhpcyByZXF1ZXN0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNwcm9jZXNzQ29udGVudChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkiPjxCPnByb2Nlc3NDb250ZW50KEh0dHBTZXJ2bGV0UmVzcG9uc2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+U2V0IHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSAod2l0aCBvcHRpb25hbCBjaGFyYWN0ZXIgZW5jb2RpbmcpIGZvcgogYWxsIHJlc3BvbnNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjcHJvY2Vzc0ZvcndhcmQob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+cHJvY2Vzc0ZvcndhcmQoQWN0aW9uTWFwcGluZywgSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlByb2Nlc3MgYSBmb3J3YXJkIHJlcXVlc3RlZCBieSB0aGlzIG1hcHBpbmcsIGlmIGFueS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjcHJvY2Vzc0luY2x1ZGUob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+cHJvY2Vzc0luY2x1ZGUoQWN0aW9uTWFwcGluZywgSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlByb2Nlc3MgYW4gaW5jbHVkZSByZXF1ZXN0ZWQgYnkgdGhpcyBtYXBwaW5nLCBpZiBhbnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3Byb2Nlc3NpbmdJbnN0cnVjdGlvbihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cHJvY2Vzc2luZ0luc3RydWN0aW9uKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPlByb2Nlc3Mgbm90aWZpY2F0aW9uIG9mIGEgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiB0aGF0IHdhcyBlbmNvdW50ZXJlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjcHJvY2Vzc0xvY2FsZShqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+cHJvY2Vzc0xvY2FsZShIdHRwU2VydmxldFJlcXVlc3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+QXV0b21hdGljYWxseSBjYWxjdWxhdGUgYW4gYXBwcm9wcmlhdGUgPGNvZGU+amF2YS51dGlsLkxvY2FsZTwvY29kZT4KIGZvciB0aGlzIHVzZXIsIGFuZCBzdG9yZSBpdCBpbiB0aGVpciBzZXNzaW9uLCBpZiB0aGVyZSBpcyBubyBzdWNoCiBMb2NhbGUgb2JqZWN0IHByZXNlbnQgYWxyZWFkeS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjcHJvY2Vzc01hcHBpbmcoamF2YS5sYW5nLlN0cmluZywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxCPnByb2Nlc3NNYXBwaW5nKFN0cmluZywgSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPklkZW50aWZ5IGFuZCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgQWN0aW9uTWFwcGluZyBmb3IgdGhlIHNwZWNpZmllZAogcGF0aC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjcHJvY2Vzc05vQ2FjaGUoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2UpIj48Qj5wcm9jZXNzTm9DYWNoZShIdHRwU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlJlbmRlciB0aGUgSFRUUCBoZWFkZXJzIHRvIGRlZmVhdCBicm93c2VyIGNhY2hpbmcgaWYgcmVxdWVzdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNwcm9jZXNzUGF0aChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+cHJvY2Vzc1BhdGgoSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPklkZW50aWZ5IGFuZCByZXR1cm4gdGhlIHBhdGggY29tcG9uZW50IChmcm9tIHRoZSByZXF1ZXN0IFVSSSkgdGhhdAogd2Ugd2lsbCB1c2UgdG8gc2VsZWN0IGFuIEFjdGlvbk1hcHBpbmcgdG8gZGlzcGF0Y2ggd2l0aC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjcHJvY2Vzc1BvcHVsYXRlKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3JtLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxCPnByb2Nlc3NQb3B1bGF0ZShBY3Rpb25Gb3JtLCBBY3Rpb25NYXBwaW5nLCBIdHRwU2VydmxldFJlcXVlc3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+UG9wdWxhdGUgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNwZWNpZmllZCBBY3Rpb25Gb3JtIGZyb20gdGhlIHJlcXVlc3QKIHBhcmFtZXRlcnMgaW5jbHVkZWQgd2l0aCB0aGlzIHJlcXVlc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI3Byb2Nlc3NQcmVwcm9jZXNzKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKSI+PEI+cHJvY2Vzc1ByZXByb2Nlc3MoSHR0cFNlcnZsZXRSZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkdlbmVyYWwgcHVycG9zZSBwcmVwcm9jZXNzaW5nIGhvb2sgdGhhdCBjYW4gYmUgb3ZlcnJpZGRlbiB0byBzdXBwb3J0CiBhcHBsaWNhdGlvbiBzcGVjaWZpYyBwcmVwcm9jZXNzaW5nIGFjdGl2aXR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNwcm9jZXNzVmFsaWRhdGUob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3JtLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkiPjxCPnByb2Nlc3NWYWxpZGF0ZShBY3Rpb25NYXBwaW5nLCBBY3Rpb25Gb3JtLCBIdHRwU2VydmxldFJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+Q2FsbCB0aGUgPGNvZGU+dmFsaWRhdGUoKTwvY29kZT4gbWV0aG9kIG9mIHRoZSBzcGVjaWZpZWQgQWN0aW9uRm9ybSwKIGFuZCBmb3J3YXJkIGJhY2sgdG8gdGhlIGlucHV0IGZvcm0gaWYgdGhlcmUgYXJlIGFueSBlcnJvcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjcHJvcGVydGllcyI+PEI+cHJvcGVydGllczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPlRoZSBjb25uZWN0aW9uIHByb3BlcnRpZXMgZm9yIHVzZSBpbiBlc3RhYmxpc2hpbmcgY29ubmVjdGlvbnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwjcHJvcGVydGllcygpIj48Qj5wcm9wZXJ0aWVzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPgo8REQ+UmV0dXJuIHRoZSBzZXQgb2YgcHJvcGVydHkgbmFtZXMgZm9yIHdoaWNoIGF0IGxlYXN0IG9uZSBlcnJvciBoYXMKIGJlZW4gcmVjb3JkZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+VGhlIEpTUCBiZWFuIHByb3BlcnR5IG5hbWUgZm9yIHF1ZXJ5IHBhcmFtZXRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSHRtbFByb3BlcnR5VGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9IdG1sUHJvcGVydHlUYWcuaHRtbCI+SHRtbFByb3BlcnR5VGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGdldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTXVsdGlib3hUYWcuaHRtbCI+TXVsdGlib3hUYWc8L0E+CjxERD5UaGUgcHJvcGVydHkgbmFtZSBmb3IgdGhpcyBmaWVsZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCI+T3B0aW9uczFUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gdXNlIHRvIGJ1aWxkIHRoZSB2YWx1ZXMgY29sbGVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCNwcm9wZXJ0eSI+PEI+cHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sIj5FbnVtZXJhdGVUYWc8L0E+CjxERD5UaGUgcHJvcGVydHkgbmFtZSBjb250YWluaW5nIHRoZSBjb2xsZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnNUYWcuaHRtbCNwcm9wZXJ0eSI+PEI+cHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byB1c2UgdG8gYnVpbGQgdGhlIHZhbHVlcyBjb2xsZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0dldFByb3BlcnR5VGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sIj5HZXRQcm9wZXJ0eVRhZzwvQT4KPEREPlRoZSBwcm9wZXJ0eSBuYW1lIHRvIGJlIGV4cG9zZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmFkaW9UYWcuaHRtbCNwcm9wZXJ0eSI+PEI+cHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JhZGlvVGFnLmh0bWwiPlJhZGlvVGFnPC9BPgo8REQ+VGhlIHByb3BlcnR5IG5hbWUgZm9yIHRoaXMgZmllbGQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGZpZWxkIChhbmQgYXNzb2NpYXRlZCBwcm9wZXJ0eSkgYmVpbmcgcHJvY2Vzc2VkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1N1Ym1pdFRhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU3VibWl0VGFnLmh0bWwiPlN1Ym1pdFRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgaW5wdXQgZmllbGQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2hlY2tib3hUYWcuaHRtbCNwcm9wZXJ0eSI+PEI+cHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPgo8REQ+VGhlIHByb3BlcnR5IG5hbWUgZm9yIHRoaXMgZmllbGQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQnV0dG9uVGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCI+QnV0dG9uVGFnPC9BPgo8REQ+VGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBidXR0b24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2FuY2VsVGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DYW5jZWxUYWcuaHRtbCI+Q2FuY2VsVGFnPC9BPgo8REQ+VGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBidXR0b24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGluazFUYWcuaHRtbCNwcm9wZXJ0eSI+PEI+cHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwiPkxpbmsxVGFnPC9BPgo8REQ+VGhlIEpTUCBiZWFuIHByb3BlcnR5IG5hbWUgZm9yIHF1ZXJ5IHBhcmFtZXRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQcm9wZXJ0eUVxdWFsc1RhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQcm9wZXJ0eUVxdWFsc1RhZy5odG1sIj5JZlByb3BlcnR5RXF1YWxzVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGdldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD5UaGUgcHJvcGVydHkgbmFtZSBjb250YWluaW5nIHRoZSBjb2xsZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlOb3RFcXVhbHNUYWcuaHRtbCNwcm9wZXJ0eSI+PEI+cHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUHJvcGVydHlOb3RFcXVhbHNUYWcuaHRtbCI+SWZQcm9wZXJ0eU5vdEVxdWFsc1RhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+VGhlIHByb3BlcnR5IG5hbWUgd2UgYXJlIGFzc29jaWF0ZWQgd2l0aC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCI+V3JpdGVUYWc8L0E+CjxERD5OYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBiZSBhY2Nlc3NlZCBvbiB0aGUgc3BlY2lmaWVkIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCNwcm9wZXJ0eSI+PEI+cHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCI+RGVmaW5lVGFnPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGJlIHJldHJpZXZlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1NpemVUYWcuaHRtbCNwcm9wZXJ0eSI+PEI+cHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwiPlNpemVUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgcmV0cmlldmVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFnZVRhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhZ2VUYWcuaHRtbCI+UGFnZVRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBwYWdlIGNvbnRleHQgcHJvcGVydHkgdG8gYmUgcmV0cmlldmVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlRoZSBKU1AgYmVhbiBwcm9wZXJ0eSBuYW1lIGZvciBxdWVyeSBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byB1c2UgdG8gYnVpbGQgdGhlIHZhbHVlcyBjb2xsZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwiPkJhc2VJbnB1dFRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBmaWVsZCAoYW5kIGFzc29jaWF0ZWQgcHJvcGVydHkpIGJlaW5nIHByb2Nlc3NlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCI+UmFkaW9UYWc8L0E+CjxERD5UaGUgcHJvcGVydHkgbmFtZSBmb3IgdGhpcyBmaWVsZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NhbmNlbFRhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NhbmNlbFRhZy5odG1sIj5DYW5jZWxUYWc8L0E+CjxERD5UaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIGJ1dHRvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sIj5FcnJvcnNUYWc8L0E+CjxERD5UaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgZm9yIHdoaWNoIGVycm9yIG1lc3NhZ2VzIHNob3VsZCBiZSByZXR1cm5lZCwKIG9yIDxjb2RlPm51bGw8L2NvZGU+IHRvIHJldHVybiBhbGwgZXJyb3JzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCNwcm9wZXJ0eSI+PEI+cHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPlRoZSBwcm9wZXJ0eSBuYW1lIGZvciB0aGlzIGZpZWxkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQnV0dG9uVGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQnV0dG9uVGFnLmh0bWwiPkJ1dHRvblRhZzwvQT4KPEREPlRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgYnV0dG9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU3VibWl0VGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU3VibWl0VGFnLmh0bWwiPlN1Ym1pdFRhZzwvQT4KPEREPlRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgaW5wdXQgZmllbGQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+VGhlIG5hbWUgYXR0cmlidXRlIGZvciB0aGUgaW1hZ2UgYnV0dG9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPlRoZSBKU1AgYmVhbiBwcm9wZXJ0eSBuYW1lIGZvciBxdWVyeSBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPlRoZSBwcm9wZXJ0eSBuYW1lIHdlIGFyZSBhc3NvY2lhdGVkIHdpdGguCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sI3Byb3BlcnR5Ij48Qj5wcm9wZXJ0eTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPgo8REQ+VGhlIHByb3BlcnR5IG5hbWUgZm9yIHRoaXMgZmllbGQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjcHJvcGVydHkiPjxCPnByb3BlcnR5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCI+Q29uZGl0aW9uYWxUYWdCYXNlPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIGJlYW4gcHJvcGVydHkgdG8gYmUgdXNlZCBhcyBhIHZhcmlhYmxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNwcm9wZXJ0eSI+PEI+cHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlRoZSBwcm9wZXJ0eSBuYW1lIGNvbnRhaW5pbmcgdGhlIGNvbGxlY3Rpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNwcm9wZXJ0eSI+PEI+cHJvcGVydHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+VGhlIEpTUCBiZWFuIHByb3BlcnR5IG5hbWUgZm9yIHF1ZXJ5IHBhcmFtZXRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5TWVzc2FnZVJlc291cmNlcy5odG1sIj48Qj5Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXM8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+UHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzPC9BPi48REQ+Q29uY3JldGUgc3ViY2xhc3Mgb2YgPGNvZGU+TWVzc2FnZVJlc291cmNlczwvY29kZT4gdGhhdCByZWFkcyBtZXNzYWdlIGtleXMKIGFuZCBjb3JyZXNwb25kaW5nIHN0cmluZ3MgZnJvbSBuYW1lZCBwcm9wZXJ0eSByZXNvdXJjZXMgaW4gdGhlIHNhbWUgbWFubmVyCiB0aGF0IDxjb2RlPmphdmEudXRpbC5Qcm9wZXJ0eVJlc291cmNlQnVuZGxlPC9jb2RlPiBkb2VzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5TWVzc2FnZVJlc291cmNlcy5odG1sI1Byb3BlcnR5TWVzc2FnZVJlc291cmNlcyhvcmcuYXBhY2hlLnN0cnV0cy51dGlsLk1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+UHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzKE1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5LCBTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+UHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IFByb3BlcnR5TWVzc2FnZVJlc291cmNlcyBhY2NvcmRpbmcgdG8gdGhlCiBzcGVjaWZpZWQgcGFyYW1ldGVycy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzLmh0bWwjUHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzKG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuTWVzc2FnZVJlc291cmNlc0ZhY3RvcnksIGphdmEubGFuZy5TdHJpbmcsIGJvb2xlYW4pIj48Qj5Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXMoTWVzc2FnZVJlc291cmNlc0ZhY3RvcnksIFN0cmluZywgYm9vbGVhbik8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5TWVzc2FnZVJlc291cmNlcy5odG1sIj5Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXM8L0E+CjxERD5Db25zdHJ1Y3QgYSBuZXcgUHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzIGFjY29yZGluZyB0byB0aGUKIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwiPjxCPlByb3BlcnR5TWVzc2FnZVJlc291cmNlc0ZhY3Rvcnk8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwiPlByb3BlcnR5TWVzc2FnZVJlc291cmNlc0ZhY3Rvcnk8L0E+LjxERD5GYWN0b3J5IGZvciA8Y29kZT5Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXM8L2NvZGU+IGluc3RhbmNlcy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwjUHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzRmFjdG9yeSgpIj48Qj5Qcm9wZXJ0eU1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5KCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5TWVzc2FnZVJlc291cmNlc0ZhY3RvcnkuaHRtbCI+UHJvcGVydHlNZXNzYWdlUmVzb3VyY2VzRmFjdG9yeTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Byb3BlcnR5VGFnLmh0bWwiPjxCPlByb3BlcnR5VGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Byb3BlcnR5VGFnLmh0bWwiPlByb3BlcnR5VGFnPC9BPi48REQ+RGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBiZWFuIHByb3BlcnR5IGFzIHJlYWQtb25seSBIVE1MIHRleHQuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Qcm9wZXJ0eVRhZy5odG1sI1Byb3BlcnR5VGFnKCkiPjxCPlByb3BlcnR5VGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Qcm9wZXJ0eVRhZy5odG1sIj5Qcm9wZXJ0eVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPjxCPlByb3BlcnR5VXRpbHM8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPlByb3BlcnR5VXRpbHM8L0E+LjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BdCBzb21lIHBvaW50IGFmdGVyIFN0cnV0cyAxLjAgZmluYWwsIHdpbGwgYmUgcmVwbGFjZWQgYnkKICBhbiBlcXVpdmFsZW50IGNsYXNzIGluIHRoZSBKYWthcnRhIENvbW1vbnMgQmVhbnV0aWxzIHBhY2thZ2UuPC9JPjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCNQcm9wZXJ0eVV0aWxzKCkiPjxCPlByb3BlcnR5VXRpbHMoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3B1c2goamF2YS5sYW5nLk9iamVjdCkiPjxCPnB1c2goT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPlB1c2ggYSBuZXcgb2JqZWN0IG9udG8gdGhlIHRvcCBvZiB0aGUgb2JqZWN0IHN0YWNrLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9BcnJheVN0YWNrLmh0bWwjcHVzaChqYXZhLmxhbmcuT2JqZWN0KSI+PEI+cHVzaChPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9BcnJheVN0YWNrLmh0bWwiPkFycmF5U3RhY2s8L0E+CjxERD5QdXNoIGEgbmV3IGl0ZW0gb250byB0aGUgdG9wIG9mIHRoaXMgc3RhY2suCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50TWFwU3RhY2suaHRtbCNwdXNoKGphdmF4LnNlcnZsZXQuanNwLlBhZ2VDb250ZXh0LCBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUudXRpbC5Db250ZW50TWFwKSI+PEI+cHVzaChQYWdlQ29udGV4dCwgQ29udGVudE1hcCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnRNYXBTdGFjay5odG1sIj5Db250ZW50TWFwU3RhY2s8L0E+CjxERD5QdXNoIGEgY29udGVudCBtYXAgb250byB0aGUgc3RhY2suCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwjcHV0KGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3QpIj48Qj5wdXQoT2JqZWN0LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sIj5GYXN0SGFzaE1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0Fzc29jaWF0ZSB0aGUgc3BlY2lmaWVkIHZhbHVlIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgaW4gdGhpcyBtYXAuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjcHV0KGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3QpIj48Qj5wdXQoT2JqZWN0LCBPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0Fzc29jaWF0ZSB0aGUgc3BlY2lmaWVkIHZhbHVlIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgaW4gdGhpcyBtYXAuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvSW5zZXJ0VGFnLmh0bWwjcHV0KGphdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS51dGlsLkNvbnRlbnQpIj48Qj5wdXQoU3RyaW5nLCBDb250ZW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0luc2VydFRhZy5odG1sIj5JbnNlcnRUYWc8L0E+CjxERD5UaGlzIG1ldGhvZCBpcyBhIGNvbnZlbmllbmNlIGZvciAmbHQ7dGVtcGxhdGU6cHV0Jmd0OyB0YWdzIGZvcgogcHV0dGluZyBjb250ZW50IGludG8gdGhlIG1hcC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnRNYXAuaHRtbCNwdXQoamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLnV0aWwuQ29udGVudCkiPjxCPnB1dChTdHJpbmcsIENvbnRlbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS91dGlsL0NvbnRlbnRNYXAuaHRtbCI+Q29udGVudE1hcDwvQT4KPEREPlB1dCBuYW1lZCBjb250ZW50IGludG8gbWFwLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sI3B1dEFsbChqYXZhLnV0aWwuTWFwKSI+PEI+cHV0QWxsKE1hcCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPkZhc3RIYXNoTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Q29weSBhbGwgb2YgdGhlIG1hcHBpbmdzIGZyb20gdGhlIHNwZWNpZmllZCBtYXAgdG8gdGhpcyBvbmUsIHJlcGxhY2luZwogYW55IG1hcHBpbmdzIHdpdGggdGhlIHNhbWUga2V5cy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCNwdXRBbGwoamF2YS51dGlsLk1hcCkiPjxCPnB1dEFsbChNYXApPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sIj5GYXN0VHJlZU1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO0NvcHkgYWxsIG9mIHRoZSBtYXBwaW5ncyBmcm9tIHRoZSBzcGVjaWZpZWQgbWFwIHRvIHRoaXMgb25lLCByZXBsYWNpbmcKIGFueSBtYXBwaW5ncyB3aXRoIHRoZSBzYW1lIGtleXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwiPjxCPlB1dFRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9QdXRUYWcuaHRtbCI+UHV0VGFnPC9BPi48REQ+VGFnIGhhbmRsZXIgZm9yICZsdDt0ZW1wbGF0ZTpwdXQmZ3Q7LCB3aGljaCBwdXRzIGNvbnRlbnQgaW50byByZXF1ZXN0IHNjb3BlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwjUHV0VGFnKCkiPjxCPlB1dFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwiPlB1dFRhZzwvQT4KPEREPiZuYnNwOwo8L0RMPgo8SFI+CjxBIE5BTUU9Il9SXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5SPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sIj48Qj5SYWRpb1RhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4uPEREPlRhZyBmb3IgaW5wdXQgZmllbGRzIG9mIHR5cGUgInJhZGlvIi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCI+PEI+UmFkaW9UYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwiPlJhZGlvVGFnPC9BPi48REQ+VGFnIGZvciBpbnB1dCBmaWVsZHMgb2YgdHlwZSAicmFkaW8iLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmFkaW9UYWcuaHRtbCNSYWRpb1RhZygpIj48Qj5SYWRpb1RhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmFkaW9UYWcuaHRtbCI+UmFkaW9UYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwjUmFkaW9UYWcoKSI+PEI+UmFkaW9UYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFZhbHVlU3RyZWFtLmh0bWwjcmVhZCgpIj48Qj5yZWFkKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sIj5NdWx0aXBhcnRWYWx1ZVN0cmVhbTwvQT4KPEREPlJlYWQgdGhlIG5leHQgYnl0ZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCNyZWFkKCkiPjxCPnJlYWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCI+QnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbTwvQT4KPEREPlRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG5leHQgYnl0ZSBpbiB0aGUgYnVmZmVyLCBhbmQgcmVmaWxscyBpdCBpZiBuZWNlc3NhcnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sI3JlYWQoYnl0ZVtdKSI+PEI+cmVhZChieXRlW10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sIj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtPC9BPgo8REQ+VGhpcyBtZXRob2QgcG9wdWxhdGVzIHRoZSBieXRlIGFycmF5IDxjb2RlPmI8L2NvZGU+IHdpdGggZGF0YSB1cCB0bwogPGNvZGU+Yi5sZW5ndGg8L2NvZGU+IGJ5dGVzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sI3JlYWQoYnl0ZVtdLCBpbnQsIGludCkiPjxCPnJlYWQoYnl0ZVtdLCBpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwiPkJ1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW08L0E+CjxERD5UaGlzIG1ldGhvZCBwb3B1bGF0ZXMgdGhlIGJ5dGUgYXJyYXkgPGNvZGU+YjwvY29kZT4gd2l0aCBkYXRhIHVwIHRvIAogPGNvZGU+bGVuZ3RoPC9jb2RlPiBzdGFydGluZyBhdCBiW29mZnNldF0KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sI3JlYWRBaGVhZEJ1ZmZlckVuZEkiPjxCPnJlYWRBaGVhZEJ1ZmZlckVuZEk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFZhbHVlU3RyZWFtLmh0bWwiPk11bHRpcGFydFZhbHVlU3RyZWFtPC9BPgo8REQ+VGhlIGVuZCBpbmRleCBmb3IgdGhlIHJlYWQgYWhlYWQgY3ljbGljIGJ1ZmZlciAocG9pbnRzIHRvIHRoZSBsYXN0IGJ5dGUpCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0VmFsdWVTdHJlYW0uaHRtbCNyZWFkQWhlYWRCdWZmZXJTdGFydEkiPjxCPnJlYWRBaGVhZEJ1ZmZlclN0YXJ0STwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0VmFsdWVTdHJlYW0uaHRtbCI+TXVsdGlwYXJ0VmFsdWVTdHJlYW08L0E+CjxERD5UaGUgc3RhcnQgaW5kZXggZm9yIHRoZSByZWFkIGFoZWFkIGN5Y2xpYyBidWZmZXIgKHBvaW50cyB0byB0aGUgZmlyc3QgYnl0ZSkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRWYWx1ZVN0cmVhbS5odG1sI3JlYWRBaGVhZEJ5dGVzIj48Qj5yZWFkQWhlYWRCeXRlczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0VmFsdWVTdHJlYW0uaHRtbCI+TXVsdGlwYXJ0VmFsdWVTdHJlYW08L0E+CjxERD50aGUgcmVhZCBhaGVhZCBidWZmZXIgKGN5Y2xpYykKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sI3JlYWRMaW5lKCkiPjxCPnJlYWRMaW5lKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPlJlYWRzIHRoZSBpbnB1dCBzdHJlYW0gdW50aWwgaXQgcmVhY2hlcyBhIG5ldyBsaW5lCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sI3JlYWRMaW5lKGJ5dGVbXSwgaW50LCBpbnQpIj48Qj5yZWFkTGluZShieXRlW10sIGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCI+QnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbTwvQT4KPEREPlRoaXMgbWV0aG9kIHJlYWRzIGludG8gdGhlIGJ5dGUgYXJyYXkgPGNvZGU+YjwvY29kZT4gdW50aWwKIGEgbmV3bGluZSAoJ1xuJykgY2hhcmFjdGVyIGlzIGVuY291bnRlcmVkIG9yIHRoZSBudW1iZXIgb2YgYnl0ZXMKIHNwZWNpZmllZCBieSA8Y29kZT5sZW5ndGg8L2NvZGU+IGhhdmUgYmVlbiByZWFkCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3JlYWRvbmx5Ij48Qj5yZWFkb25seTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+Q29tcG9uZW50IGlzIHJlYWRvbmx5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI3JlYWRPbmx5Ij48Qj5yZWFkT25seTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sIj5HZW5lcmljQ29ubmVjdGlvbjwvQT4KPEREPlRoZSBpbml0aWFsIHJlYWQtb25seSBzdGF0ZSB0byB3aGljaCB3ZSBzaG91bGQgcmV0dXJuIGFmdGVyIHJlbGVhc2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjcmVhZE9ubHkiPjxCPnJlYWRPbmx5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+VGhlIGRlZmF1bHQgcmVhZC1vbmx5IHN0YXRlIGZvciBuZXdseSBjcmVhdGVkIGNvbm5lY3Rpb25zLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCNyZWRpcmVjdCI+PEI+cmVkaXJlY3Q8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCI+QWN0aW9uRm9yd2FyZDwvQT4KPEREPlNob3VsZCB0aGlzIGJlIGEgcmVkaXJlY3QgaW5zdGVhZCBvZiBhIGZvcndhcmQ/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vUmVkaXJlY3RpbmdBY3Rpb25Gb3J3YXJkLmh0bWwiPjxCPlJlZGlyZWN0aW5nQWN0aW9uRm9yd2FyZDwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9SZWRpcmVjdGluZ0FjdGlvbkZvcndhcmQuaHRtbCI+UmVkaXJlY3RpbmdBY3Rpb25Gb3J3YXJkPC9BPi48REQ+QSBzdWJjbGFzcyBvZiA8c3Ryb25nPkFjdGlvbkZvcndhcmQ8L3N0cm9uZz4gdGhhdCBkZWZhdWx0cyB0aGUKIDxjb2RlPnJlZGlyZWN0PC9jb2RlPiBhdHRyaWJ1dGUgdG8gPGNvZGU+dHJ1ZTwvY29kZT4uPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9SZWRpcmVjdGluZ0FjdGlvbkZvcndhcmQuaHRtbCNSZWRpcmVjdGluZ0FjdGlvbkZvcndhcmQoKSI+PEI+UmVkaXJlY3RpbmdBY3Rpb25Gb3J3YXJkKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9SZWRpcmVjdGluZ0FjdGlvbkZvcndhcmQuaHRtbCI+UmVkaXJlY3RpbmdBY3Rpb25Gb3J3YXJkPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IGluc3RhbmNlIHdpdGggZGVmYXVsdCB2YWx1ZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vUmVkaXJlY3RpbmdBY3Rpb25Gb3J3YXJkLmh0bWwjUmVkaXJlY3RpbmdBY3Rpb25Gb3J3YXJkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5SZWRpcmVjdGluZ0FjdGlvbkZvcndhcmQoU3RyaW5nKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1JlZGlyZWN0aW5nQWN0aW9uRm9yd2FyZC5odG1sIj5SZWRpcmVjdGluZ0FjdGlvbkZvcndhcmQ8L0E+CjxERD5Db25zdHJ1Y3QgYSBuZXcgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHBhdGguCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVkaXJlY3RUYWcuaHRtbCI+PEI+UmVkaXJlY3RUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+LjxERD5QZXJmb3JtIGEgc2VuZFJlZGlyZWN0KCkgdG8gdGhlIHNwZWNpZmllZCBVUkwsIGFuZCBza2lwIGV2YWx1YXRpbmcKIHRoZSByZW1haW5kZXIgb2YgdGhlIGN1cnJlbnQgcGFnZS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPjxCPlJlZGlyZWN0VGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPi48REQ+R2VuZXJhdGUgYSBVUkwtZW5jb2RlZCByZWRpcmVjdCB0byB0aGUgc3BlY2lmaWVkIFVSSS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JlZGlyZWN0VGFnLmh0bWwjUmVkaXJlY3RUYWcoKSI+PEI+UmVkaXJlY3RUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNSZWRpcmVjdFRhZygpIj48Qj5SZWRpcmVjdFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VGaWVsZFRhZy5odG1sI3JlZGlzcGxheSI+PEI+cmVkaXNwbGF5PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwiPkJhc2VGaWVsZFRhZzwvQT4KPEREPlRoZSAicmVkaXNwbGF5IGNvbnRlbnRzIiBmbGFnICh1c2VkIG9ubHkgb24gPGNvZGU+cGFzc3dvcmQ8L2NvZGU+KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjcmVnaXN0ZXIoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPnJlZ2lzdGVyKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPlJlZ2lzdGVyIHRoZSBzcGVjaWZpZWQgRFREIFVSTCBmb3IgdGhlIHNwZWNpZmllZCBwdWJsaWMgaWRlbnRpZmllci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjcmVnaXN0cmF0aW9ucyI+PEI+cmVnaXN0cmF0aW9uczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+VGhlIHNldCBvZiBwdWJsaWMgaWRlbnRpZmllcnMsIGFuZCBjb3JyZXNwb25kaW5nIHJlc291cmNlIG5hbWVzLCBmb3IKIHRoZSB2ZXJzaW9ucyBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIERURHMgdGhhdCB3ZSBrbm93IGFib3V0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9IdG1sUHJvcGVydHlUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0h0bWxQcm9wZXJ0eVRhZy5odG1sIj5IdG1sUHJvcGVydHlUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJFcXVhbHNUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyRXF1YWxzVGFnLmh0bWwiPklmUGFyYW1ldGVyRXF1YWxzVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTXVsdGlib3hUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL011bHRpYm94VGFnLmh0bWwiPk11bHRpYm94VGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1BhcmFtZXRlclRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUGFyYW1ldGVyVGFnLmh0bWwiPlBhcmFtZXRlclRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zMVRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCI+T3B0aW9uczFUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Vycm9yc1RhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sIj5FbnVtZXJhdGVUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uc1RhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uc1RhZy5odG1sIj5PcHRpb25zVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0dldFByb3BlcnR5VGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sIj5HZXRQcm9wZXJ0eVRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmFkaW9UYWcuaHRtbCI+UmFkaW9UYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVzZXRUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Jlc2V0VGFnLmh0bWwiPlJlc2V0VGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VuY29kZVJlZGlyZWN0VVJMVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbmNvZGVSZWRpcmVjdFVSTFRhZy5odG1sIj5FbmNvZGVSZWRpcmVjdFVSTFRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JbmNsdWRlVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VGaWVsZFRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUZpZWxkVGFnLmh0bWwiPkJhc2VGaWVsZFRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlQXR0cmlidXRlVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlQXR0cmlidXRlVGFnLmh0bWwiPkJhc2VBdHRyaWJ1dGVUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9yd2FyZFRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9yd2FyZFRhZy5odG1sIj5Gb3J3YXJkVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTm90RXF1YWxzVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdEVxdWFsc1RhZy5odG1sIj5JZlBhcmFtZXRlck5vdEVxdWFsc1RhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZWRpcmVjdFRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU3VibWl0VGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1RleHRhcmVhVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9UZXh0YXJlYVRhZy5odG1sIj5UZXh0YXJlYVRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2hlY2tib3hUYWcuaHRtbCI+Q2hlY2tib3hUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQnV0dG9uVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCI+QnV0dG9uVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyTm90TnVsbFRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOb3ROdWxsVGFnLmh0bWwiPklmUGFyYW1ldGVyTm90TnVsbFRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DYW5jZWxUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NhbmNlbFRhZy5odG1sIj5DYW5jZWxUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sIj5MaW5rMVRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Qcm9wZXJ0eVRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUHJvcGVydHlUYWcuaHRtbCI+UHJvcGVydHlUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQcm9wZXJ0eUVxdWFsc1RhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQcm9wZXJ0eUVxdWFsc1RhZy5odG1sIj5JZlByb3BlcnR5RXF1YWxzVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwiPklmUHJvcGVydHlOb3RFcXVhbHNUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VuY29kZVVSTFRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlVVJMVGFnLmh0bWwiPkVuY29kZVVSTFRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sIj5IZWFkZXJUYWc8L0E+CjxERD5SZWxlYXNlIGFsbCBhbGxvY2F0ZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sIj5Xcml0ZVRhZzwvQT4KPEREPlJlbGVhc2UgYWxsIGFsbG9jYXRlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCI+RGVmaW5lVGFnPC9BPgo8REQ+UmVsZWFzZSBhbGwgYWxsb2NhdGVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1NpemVUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwiPlNpemVUYWc8L0E+CjxERD5SZWxlYXNlIGFsbCBhbGxvY2F0ZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vQ29va2llVGFnLmh0bWwiPkNvb2tpZVRhZzwvQT4KPEREPlJlbGVhc2UgYWxsIGFsbG9jYXRlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCI+UGFyYW1ldGVyVGFnPC9BPgo8REQ+UmVsZWFzZSBhbGwgYWxsb2NhdGVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1Jlc291cmNlVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCI+UmVzb3VyY2VUYWc8L0E+CjxERD5SZWxlYXNlIGFsbCBhbGxvY2F0ZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCI+SW5jbHVkZVRhZzwvQT4KPEREPlJlbGVhc2UgYWxsIGFsbG9jYXRlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCI+U3RydXRzVGFnPC9BPgo8REQ+UmVsZWFzZSBhbGwgYWxsb2NhdGVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhZ2VUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYWdlVGFnLmh0bWwiPlBhZ2VUYWc8L0E+CjxERD5SZWxlYXNlIGFsbCBhbGxvY2F0ZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0h0bWxUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9IdG1sVGFnLmh0bWwiPkh0bWxUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwiPkJhc2VGaWVsZFRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCI+UmFkaW9UYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DYW5jZWxUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DYW5jZWxUYWcuaHRtbCI+Q2FuY2VsVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL011bHRpYm94VGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCI+TXVsdGlib3hUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SZXNldFRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jlc2V0VGFnLmh0bWwiPlJlc2V0VGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQnV0dG9uVGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQnV0dG9uVGFnLmh0bWwiPkJ1dHRvblRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1N1Ym1pdFRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1N1Ym1pdFRhZy5odG1sIj5TdWJtaXRUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2hlY2tib3hUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sIj5DaGVja2JveFRhZzwvQT4KPEREPlJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9UZXh0YXJlYVRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1RleHRhcmVhVGFnLmh0bWwiPlRleHRhcmVhVGFnPC9BPgo8REQ+UmVsZWFzZSBhbnkgYWNxdWlyZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPkNvbmRpdGlvbmFsVGFnQmFzZTwvQT4KPEREPlJlbGVhc2UgYWxsIGFsbG9jYXRlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTWF0Y2hUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL01hdGNoVGFnLmh0bWwiPk1hdGNoVGFnPC9BPgo8REQ+UmVsZWFzZSBhbGwgYWxsb2NhdGVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db21wYXJlVGFnQmFzZS5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29tcGFyZVRhZ0Jhc2UuaHRtbCI+Q29tcGFyZVRhZ0Jhc2U8L0E+CjxERD5SZWxlYXNlIGFsbCBhbGxvY2F0ZWQgcmVzb3VyY2VzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNyZWxlYXNlKCkiPjxCPnJlbGVhc2UoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlJlbGVhc2UgYWxsIGFsbG9jYXRlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvRm9yd2FyZFRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvRm9yd2FyZFRhZy5odG1sIj5Gb3J3YXJkVGFnPC9BPgo8REQ+UmVsZWFzZSBhbGwgYWxsb2NhdGVkIHJlc291cmNlcy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI3JlbGVhc2UoKSI+PEI+cmVsZWFzZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD5SZWxlYXNlIGFueSBhY3F1aXJlZCByZXNvdXJjZXMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9QdXRUYWcuaHRtbCI+UHV0VGFnPC9BPgo8REQ+UmVzZXQgbWVtYmVyIHZhbHVlcyBmb3IgcmV1c2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvR2V0VGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9HZXRUYWcuaHRtbCI+R2V0VGFnPC9BPgo8REQ+UmVzZXQgbWVtYmVyIHZhbHVlcyBmb3IgcmV1c2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvSW5zZXJ0VGFnLmh0bWwjcmVsZWFzZSgpIj48Qj5yZWxlYXNlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9JbnNlcnRUYWcuaHRtbCI+SW5zZXJ0VGFnPC9BPgo8REQ+UmVzZXQgbWVtYmVyIHZhbHVlcyBmb3IgcmV1c2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI3JlbG9hZCgpIj48Qj5yZWxvYWQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlJlbG9hZCB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGlzIGNvbnRyb2xsZXIgc2VydmxldCBmcm9tIG91cgogdW5kZXJseWluZyBjb25maWd1cmF0aW9uIGZpbGVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9SZWxvYWRBY3Rpb24uaHRtbCI+PEI+UmVsb2FkQWN0aW9uPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvUmVsb2FkQWN0aW9uLmh0bWwiPlJlbG9hZEFjdGlvbjwvQT4uPEREPkEgc3RhbmRhcmQgPHN0cm9uZz5BY3Rpb248L3N0cm9uZz4gdGhhdCBjYWxscyB0aGUKIDxjb2RlPnJlbG9hZCgpPC9jb2RlPiBtZXRob2Qgb2Ygb3VyIGNvbnRyb2xsZXIgc2VydmxldCB0bwogcmVsb2FkIGl0cyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24KIGZpbGVzICh3aGljaCBoYXZlIHByZXN1bWFibHkgYmVlbiB1cGRhdGVkKSBkeW5hbWljYWxseS48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9SZWxvYWRBY3Rpb24uaHRtbCNSZWxvYWRBY3Rpb24oKSI+PEI+UmVsb2FkQWN0aW9uKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL1JlbG9hZEFjdGlvbi5odG1sIj5SZWxvYWRBY3Rpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvSXRlcmF0b3JBZGFwdGVyLmh0bWwjcmVtb3ZlKCkiPjxCPnJlbW92ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9JdGVyYXRvckFkYXB0ZXIuaHRtbCI+SXRlcmF0b3JBZGFwdGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNyZW1vdmUoaW50KSI+PEI+cmVtb3ZlKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JlbW92ZSB0aGUgZWxlbWVudCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIHRoZSBsaXN0LCBhbmQgc2hpZnQKIGFueSBzdWJzZXF1ZW50IGVsZW1lbnRzIGRvd24gb25lIHBvc2l0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sI3JlbW92ZShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+cmVtb3ZlKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPkZhc3RIYXNoTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmVtb3ZlIGFueSBtYXBwaW5nIGZvciB0aGlzIGtleSwgYW5kIHJldHVybiBhbnkgcHJldmlvdXNseQogbWFwcGVkIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjcmVtb3ZlKGphdmEubGFuZy5PYmplY3QpIj48Qj5yZW1vdmUoT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBmcm9tIHRoZSBsaXN0LAogYW5kIHNoaWZ0IGFueSBzdWJzZXF1ZW50IGVsZW1lbnRzIGRvd24gb25lIHBvc2l0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sI3JlbW92ZShqYXZhLmxhbmcuT2JqZWN0KSI+PEI+cmVtb3ZlKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwiPkZhc3RUcmVlTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmVtb3ZlIGFueSBtYXBwaW5nIGZvciB0aGlzIGtleSwgYW5kIHJldHVybiBhbnkgcHJldmlvdXNseQogbWFwcGVkIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjcmVtb3ZlQWxsKGphdmEudXRpbC5Db2xsZWN0aW9uKSI+PEI+cmVtb3ZlQWxsKENvbGxlY3Rpb24pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwiPkZhc3RBcnJheUxpc3Q8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZW1vdmUgZnJvbSB0aGlzIGNvbGxlY3Rpb24gYWxsIG9mIGl0cyBlbGVtZW50cyB0aGF0IGFyZSBjb250YWluZWQKIGluIHRoZSBzcGVjaWZpZWQgY29sbGVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI3JlbW92ZUF0dHJpYnV0ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cmVtb3ZlQXR0cmlidXRlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNyZW1vdmVGb3JtQmVhbihvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9ybUJlYW4pIj48Qj5yZW1vdmVGb3JtQmVhbihBY3Rpb25Gb3JtQmVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5EZXJlZ2lzdGVyIGEgZm9ybSBiZWFuIGRlZmluaXRpb24gZnJvbSB0aGUgc2V0IGNvbmZpZ3VyZWQgZm9yCiB0aGlzIHNlcnZsZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW5zLmh0bWwjcmVtb3ZlRm9ybUJlYW4ob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkZvcm1CZWFuKSI+PEI+cmVtb3ZlRm9ybUJlYW4oQWN0aW9uRm9ybUJlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW5zLmh0bWwiPkFjdGlvbkZvcm1CZWFuczwvQT4KPEREPkRlcmVnaXN0ZXIgYSBmb3JtQmVhbiBmcm9tIHRoZSBzZXQgY29uZmlndXJlZCBmb3IgdGhpcyBzZXJ2bGV0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9SZW1vdmVGb3JtQmVhbkFjdGlvbi5odG1sIj48Qj5SZW1vdmVGb3JtQmVhbkFjdGlvbjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL1JlbW92ZUZvcm1CZWFuQWN0aW9uLmh0bWwiPlJlbW92ZUZvcm1CZWFuQWN0aW9uPC9BPi48REQ+QSBzdGFuZGFyZCA8c3Ryb25nPkFjdGlvbjwvc3Ryb25nPiB0aGF0IGNhbGxzIHRoZQogPGNvZGU+cmVtb3ZlRm9ybUJlYW4oKTwvY29kZT4gbWV0aG9kIG9mIG91ciBjb250cm9sbGVyIHNlcnZsZXQgdG8gcmVtb3ZlIGFuCiBhY3Rpb24gZm9ybSBkZWZpbml0aW9uIGR5bmFtaWNhbGx5LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL1JlbW92ZUZvcm1CZWFuQWN0aW9uLmh0bWwjUmVtb3ZlRm9ybUJlYW5BY3Rpb24oKSI+PEI+UmVtb3ZlRm9ybUJlYW5BY3Rpb24oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvUmVtb3ZlRm9ybUJlYW5BY3Rpb24uaHRtbCI+UmVtb3ZlRm9ybUJlYW5BY3Rpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjcmVtb3ZlRm9yd2FyZChvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRm9yd2FyZCkiPjxCPnJlbW92ZUZvcndhcmQoQWN0aW9uRm9yd2FyZCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5SZW1vdmUgYSA8Y29kZT5BY3Rpb25Gb3J3YXJkPC9jb2RlPiBhc3NvY2lhdGVkIHdpdGggdGhpcyBtYXBwaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNyZW1vdmVGb3J3YXJkKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3J3YXJkKSI+PEI+cmVtb3ZlRm9yd2FyZChBY3Rpb25Gb3J3YXJkKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkRlcmVnaXN0ZXIgYSBmb3J3YXJkaW5nIGZyb20gdGhlIHNldCBjb25maWd1cmVkIGZvciB0aGlzIHNlcnZsZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZHMuaHRtbCNyZW1vdmVGb3J3YXJkKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25Gb3J3YXJkKSI+PEI+cmVtb3ZlRm9yd2FyZChBY3Rpb25Gb3J3YXJkKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmRzLmh0bWwiPkFjdGlvbkZvcndhcmRzPC9BPgo8REQ+RGVyZWdpc3RlciBhIGZvcndhcmRpbmcgZnJvbSB0aGUgc2V0IGNvbmZpZ3VyZWQgZm9yIHRoaXMgc2VydmxldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvUmVtb3ZlRm9yd2FyZEFjdGlvbi5odG1sIj48Qj5SZW1vdmVGb3J3YXJkQWN0aW9uPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvUmVtb3ZlRm9yd2FyZEFjdGlvbi5odG1sIj5SZW1vdmVGb3J3YXJkQWN0aW9uPC9BPi48REQ+QSBzdGFuZGFyZCA8c3Ryb25nPkFjdGlvbjwvc3Ryb25nPiB0aGF0IGNhbGxzIHRoZQogPGNvZGU+cmVtb3ZlRm9yd2FyZCgpPC9jb2RlPiBtZXRob2Qgb2Ygb3VyIGNvbnRyb2xsZXIgc2VydmxldCB0byByZW1vdmUgYW4KIGFjdGlvbiBmb3J3YXJkIGRlZmluaXRpb24gZHluYW1pY2FsbHkuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvUmVtb3ZlRm9yd2FyZEFjdGlvbi5odG1sI1JlbW92ZUZvcndhcmRBY3Rpb24oKSI+PEI+UmVtb3ZlRm9yd2FyZEFjdGlvbigpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9SZW1vdmVGb3J3YXJkQWN0aW9uLmh0bWwiPlJlbW92ZUZvcndhcmRBY3Rpb248L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjcmVtb3ZlTWFwcGluZyhvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZykiPjxCPnJlbW92ZU1hcHBpbmcoQWN0aW9uTWFwcGluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5EZXJlZ2lzdGVyIGEgbWFwcGluZyBmcm9tIHRoZSBzZXQgY29uZmlndXJlZCBmb3IgdGhpcyBzZXJ2bGV0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmdzLmh0bWwjcmVtb3ZlTWFwcGluZyhvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZykiPjxCPnJlbW92ZU1hcHBpbmcoQWN0aW9uTWFwcGluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sIj5BY3Rpb25NYXBwaW5nczwvQT4KPEREPkRlcmVnaXN0ZXIgYSBtYXBwaW5nIGZyb20gdGhlIHNldCBjb25maWd1cmVkIGZvciB0aGlzIHNlcnZsZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL1JlbW92ZU1hcHBpbmdBY3Rpb24uaHRtbCI+PEI+UmVtb3ZlTWFwcGluZ0FjdGlvbjwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9ucy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL1JlbW92ZU1hcHBpbmdBY3Rpb24uaHRtbCI+UmVtb3ZlTWFwcGluZ0FjdGlvbjwvQT4uPEREPkEgc3RhbmRhcmQgPHN0cm9uZz5BY3Rpb248L3N0cm9uZz4gdGhhdCBjYWxscyB0aGUKIDxjb2RlPnJlbW92ZU1hcHBpbmcoKTwvY29kZT4gbWV0aG9kIG9mIG91ciBjb250cm9sbGVyIHNlcnZsZXQgdG8gcmVtb3ZlIGFuCiBhY3Rpb24gbWFwcGluZyBkZWZpbml0aW9uIGR5bmFtaWNhbGx5LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb25zL1JlbW92ZU1hcHBpbmdBY3Rpb24uaHRtbCNSZW1vdmVNYXBwaW5nQWN0aW9uKCkiPjxCPlJlbW92ZU1hcHBpbmdBY3Rpb24oKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb25zLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbnMvUmVtb3ZlTWFwcGluZ0FjdGlvbi5odG1sIj5SZW1vdmVNYXBwaW5nQWN0aW9uPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNyZXF1ZXN0Ij48Qj5yZXF1ZXN0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPlRoZSByZXF1ZXN0IGluc3RhbmNlIGZvciB0aGlzIGNsYXNzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCNyZXF1ZXN0Ij48Qj5yZXF1ZXN0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPlRoZSB1bmRlcmx5aW5nIEh0dHBTZXJ2bGV0UmVxdWVzdAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1JlcXVlc3RBY3Rpb25NYXBwaW5nLmh0bWwiPjxCPlJlcXVlc3RBY3Rpb25NYXBwaW5nPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1JlcXVlc3RBY3Rpb25NYXBwaW5nLmh0bWwiPlJlcXVlc3RBY3Rpb25NYXBwaW5nPC9BPi48REQ+U3ViY2xhc3Mgb2YgPGNvZGU+QWN0aW9uTWFwcGluZzwvY29kZT4gdGhhdCBkZWZhdWx0cyB0aGUgZm9ybSBiZWFuCiBzY29wZSB0byA8Y29kZT5yZXF1ZXN0PC9jb2RlPi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1JlcXVlc3RBY3Rpb25NYXBwaW5nLmh0bWwjUmVxdWVzdEFjdGlvbk1hcHBpbmcoKSI+PEI+UmVxdWVzdEFjdGlvbk1hcHBpbmcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1JlcXVlc3RBY3Rpb25NYXBwaW5nLmh0bWwiPlJlcXVlc3RBY3Rpb25NYXBwaW5nPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3Mgd2l0aCB0aGUgZGVzaXJlZCBkZWZhdWx0CiBmb3JtIGJlYW4gc2NvcGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sI3JlcXVlc3RVUkwoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxCPnJlcXVlc3RVUkwoSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sIj5SZXF1ZXN0VXRpbHM8L0E+CjxERD5SZXR1cm4gdGhlIFVSTCByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgcmVxdWVzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwiPjxCPlJlcXVlc3RVdGlsczwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sIj5SZXF1ZXN0VXRpbHM8L0E+LjxERD5HZW5lcmFsIHB1cnBvc2UgdXRpbGl0eSBtZXRob2RzIHJlbGF0ZWQgdG8gcHJvY2Vzc2luZyBhIHNlcnZsZXQgcmVxdWVzdAogaW4gdGhlIFN0cnV0cyBjb250cm9sbGVyIGZyYW1ld29yay48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXF1ZXN0VXRpbHMuaHRtbCNSZXF1ZXN0VXRpbHMoKSI+PEI+UmVxdWVzdFV0aWxzKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sIj5SZXF1ZXN0VXRpbHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtLmh0bWwjcmVzZXQoKSI+PEI+cmVzZXQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0J1ZmZlcmVkTXVsdGlwYXJ0SW5wdXRTdHJlYW0uaHRtbCI+QnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbTwvQT4KPEREPlRoaXMgbWV0aG9kIG1ha2VzIGEgY2FsbCB0byB0aGUgcmVzZXQoKSBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcKIElucHV0U3RyZWFtCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sI3Jlc2V0KG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+cmVzZXQoQWN0aW9uTWFwcGluZywgSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm0uaHRtbCI+QWN0aW9uRm9ybTwvQT4KPEREPlJlc2V0IGFsbCBiZWFuIHByb3BlcnRpZXMgdG8gdGhlaXIgZGVmYXVsdCBzdGF0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtLmh0bWwjcmVzZXQob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcsIGphdmF4LnNlcnZsZXQuU2VydmxldFJlcXVlc3QpIj48Qj5yZXNldChBY3Rpb25NYXBwaW5nLCBTZXJ2bGV0UmVxdWVzdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtLmh0bWwiPkFjdGlvbkZvcm08L0E+CjxERD5SZXNldCBhbGwgYmVhbiBwcm9wZXJ0aWVzIHRvIHRoZWlyIGRlZmF1bHQgc3RhdGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVzZXRUYWcuaHRtbCI+PEI+UmVzZXRUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVzZXRUYWcuaHRtbCI+UmVzZXRUYWc8L0E+LjxERD5UYWcgZm9yIGlucHV0IGZpZWxkcyBvZiB0eXBlICJyZXNldCIuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jlc2V0VGFnLmh0bWwiPjxCPlJlc2V0VGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SZXNldFRhZy5odG1sIj5SZXNldFRhZzwvQT4uPEREPlRhZyBmb3IgaW5wdXQgZmllbGRzIG9mIHR5cGUgInJlc2V0Ii48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Jlc2V0VGFnLmh0bWwjUmVzZXRUYWcoKSI+PEI+UmVzZXRUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Jlc2V0VGFnLmh0bWwiPlJlc2V0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SZXNldFRhZy5odG1sI1Jlc2V0VGFnKCkiPjxCPlJlc2V0VGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCI+UmVzZXRUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNyZXNldFRva2VuKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Qj5yZXNldFRva2VuKEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+QWN0aW9uPC9BPgo8REQ+UmVzZXQgdGhlIHNhdmVkIHRyYW5zYWN0aW9uIHRva2VuIGluIHRoZSB1c2VyJ3Mgc2Vzc2lvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjcmVzb2x2ZUVudGl0eShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cmVzb2x2ZUVudGl0eShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5SZXNvbHZlIHRoZSByZXF1ZXN0ZWQgZXh0ZXJuYWwgZW50aXR5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCI+PEI+UmVzb3VyY2VUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1Jlc291cmNlVGFnLmh0bWwiPlJlc291cmNlVGFnPC9BPi48REQ+RGVmaW5lIGEgc2NyaXB0aW5nIHZhcmlhYmxlIGJhc2VkIG9uIHRoZSBjb250ZW50cyBvZiB0aGUgc3BlY2lmaWVkCiB3ZWIgYXBwbGljYXRpb24gcmVzb3VyY2UuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1Jlc291cmNlVGFnLmh0bWwjUmVzb3VyY2VUYWcoKSI+PEI+UmVzb3VyY2VUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9SZXNvdXJjZVRhZy5odG1sIj5SZXNvdXJjZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUZWkuaHRtbCI+PEI+UmVzb3VyY2VUZWk8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1Jlc291cmNlVGVpLmh0bWwiPlJlc291cmNlVGVpPC9BPi48REQ+SW1wbGVtZW50YXRpb24gb2YgPGNvZGU+VGFnRXh0cmFJbmZvPC9jb2RlPiBmb3IgdGhlIDxiPnJlc291cmNlPC9iPgogdGFnLCBpZGVudGlmeWluZyB0aGUgc2NyaXB0aW5nIG9iamVjdChzKSB0byBiZSBtYWRlIHZpc2libGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1Jlc291cmNlVGVpLmh0bWwjUmVzb3VyY2VUZWkoKSI+PEI+UmVzb3VyY2VUZWkoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9SZXNvdXJjZVRlaS5odG1sIj5SZXNvdXJjZVRlaTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXNwb25zZVV0aWxzLmh0bWwiPjxCPlJlc3BvbnNlVXRpbHM8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXNwb25zZVV0aWxzLmh0bWwiPlJlc3BvbnNlVXRpbHM8L0E+LjxERD5HZW5lcmFsIHB1cnBvc2UgdXRpbGl0eSBtZXRob2RzIHJlbGF0ZWQgdG8gZ2VuZXJhdGluZyBhIHNlcnZsZXQgcmVzcG9uc2UKIGluIHRoZSBTdHJ1dHMgY29udHJvbGxlciBmcmFtZXdvcmsuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVzcG9uc2VVdGlscy5odG1sI1Jlc3BvbnNlVXRpbHMoKSI+PEI+UmVzcG9uc2VVdGlscygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXNwb25zZVV0aWxzLmh0bWwiPlJlc3BvbnNlVXRpbHM8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sI3JldGFpbkFsbChqYXZhLnV0aWwuQ29sbGVjdGlvbikiPjxCPnJldGFpbkFsbChDb2xsZWN0aW9uKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmVtb3ZlIGZyb20gdGhpcyBjb2xsZWN0aW9uIGFsbCBvZiBpdHMgZWxlbWVudHMgZXhjZXB0IHRob3NlIHRoYXQgYXJlCiBjb250YWluZWQgaW4gdGhlIHNwZWNpZmllZCBjb2xsZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI3JldHJpZXZlVGVtcERpcigpIj48Qj5yZXRyaWV2ZVRlbXBEaXIoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sIj5EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXI8L0E+CjxERD5SZXRyaWV2ZXMgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZnJvbSBlaXRoZXIgQWN0aW9uU2VydmxldCwgYSBjb250ZXh0CiBwcm9wZXJ0eSwgb3IgYSBzeXN0ZW0gcHJvcGVydHksIGluIHRoYXQgb3JkZXIKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNyZXR1cm5Db25uZWN0aW9uKG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuR2VuZXJpY0Nvbm5lY3Rpb24pIj48Qj5yZXR1cm5Db25uZWN0aW9uKEdlbmVyaWNDb25uZWN0aW9uKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD5SZXR1cm4gdGhpcyBjb25uZWN0aW9uIHRvIHRoZSBhdmFpbGFibGUgY29ubmVjdGlvbiBwb29sLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwjcmV0dXJuTnVsbCI+PEI+cmV0dXJuTnVsbDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXM8L0E+CjxERD5TaG91bGQgd2UgcmV0dXJuIDxjb2RlPm51bGw8L2NvZGU+IGluc3RlYWQgb2YgYW4gZXJyb3IgbWVzc2FnZSBzdHJpbmcKIGlmIGFuIHVua25vd24gTG9jYWxlIG9yIGtleSBpcyByZXF1ZXN0ZWQ/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwjcmV0dXJuTnVsbCI+PEI+cmV0dXJuTnVsbDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeS5odG1sIj5NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeTwvQT4KPEREPlRoZSAicmV0dXJuIG51bGwiIHByb3BlcnR5IHZhbHVlIHRvIHdoaWNoIG5ld2x5IGNyZWF0ZWQKIE1lc3NhZ2VSZXNvdXJjZXNzIHNob3VsZCBiZSBpbml0aWFsaXplZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jld3JpdGVUYWcuaHRtbCI+PEI+UmV3cml0ZVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmV3cml0ZVRhZy5odG1sIj5SZXdyaXRlVGFnPC9BPi48REQ+R2VuZXJhdGUgYSBVUkwtZW5jb2RlZCBVUkkgYXMgYSBzdHJpbmcuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jld3JpdGVUYWcuaHRtbCNSZXdyaXRlVGFnKCkiPjxCPlJld3JpdGVUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SZXdyaXRlVGFnLmh0bWwiPlJld3JpdGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCNyb2xlIj48Qj5yb2xlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCI+Q29uZGl0aW9uYWxUYWdCYXNlPC9BPgo8REQ+VGhlIG5hbWUgb2YgdGhlIHNlY3VyaXR5IHJvbGUgdG8gYmUgY2hlY2tlZCBmb3IuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwjcm9sZSI+PEI+cm9sZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwiPlB1dFRhZzwvQT4KPEREPlRoZSByb2xlIHRoYXQgdGhlIHVzZXIgbXVzdCBiZSBpbiB0byBzdG9yZSBjb250ZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0dldFRhZy5odG1sI3JvbGUiPjxCPnJvbGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0dldFRhZy5odG1sIj5HZXRUYWc8L0E+CjxERD5UaGUgcm9sZSB0aGF0IHRoZSB1c2VyIG11c3QgYmUgaW4gdG8gcmV0cmlldmUgY29udGVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI3JvbGxiYWNrKCkiPjxCPnJvbGxiYWNrKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXI8L0E+CjxERD5UaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gd2hlbiB0aGVyZSdzIHNvbWUgc29ydCBvZiBwcm9ibGVtCiBhbmQgdGhlIGZvcm0gcG9zdCBuZWVkcyB0byBiZSByb2xsZWQgYmFjay4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCNyb2xsYmFjaygpIj48Qj5yb2xsYmFjaygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwiPkRpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQT4KPEREPkRlbGV0ZSBhbGwgdGhlIGZpbGVzIHVwbG9hZGVkCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjcm9sbGJhY2soKSI+PEI+cm9sbGJhY2soKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5Ecm9wIGFsbCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIHByZXZpb3VzIGNvbW1pdCBvciByb2xsYmFjay4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjcm9vdCI+PEI+cm9vdDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+VGhlICJyb290IiBlbGVtZW50IG9mIHRoZSBzdGFjayAoaW4gb3RoZXIgd29yZHMsIHRoZSBsYXN0IG9iamVjdAogdGhhdCB3YXMgcG9wcGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sI3Jvd3MiPjxCPnJvd3M8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5UaGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoaXMgZmllbGQsIG9yIG5lZ2F0aXZlIGZvciBubyBsaW1pdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sI3Jvd3MiPjxCPnJvd3M8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+VGhlIG51bWJlciBvZiByb3dzIGZvciB0aGlzIGZpZWxkLCBvciBuZWdhdGl2ZSBmb3Igbm8gbGltaXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9SdWxlLmh0bWwiPjxCPlJ1bGU8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1J1bGUuaHRtbCI+UnVsZTwvQT4uPEREPkNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGNsYXNzIGltcGxlbWVudCBhY3Rpb25zIHRvIGJlIHRha2VuIHdoZW4KIGEgY29ycmVzcG9uZGluZyBuZXN0ZWQgcGF0dGVybiBvZiBYTUwgZWxlbWVudHMgaGFzIGJlZW4gbWF0Y2hlZC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvUnVsZS5odG1sI1J1bGUob3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuRGlnZXN0ZXIpIj48Qj5SdWxlKERpZ2VzdGVyKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9SdWxlLmh0bWwiPlJ1bGU8L0E+CjxERD5EZWZhdWx0IGNvbnN0cnVjdG9yIHNldHMgb25seSB0aGUgdGhlIGFzc29jaWF0ZWQgRGlnZXN0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3J1bGVzIj48Qj5ydWxlczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+VGhlIHNldCBvZiBSdWxlcyB0aGF0IGhhdmUgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhpcyBEaWdlc3Rlci4KPC9ETD4KPEhSPgo8QSBOQU1FPSJfU18iPjwhLS0gLS0+PC9BPjxIMj4KPEI+UzwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCNzYXZlQm9keSI+PEI+c2F2ZUJvZHk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+VGhlIHNhdmVkIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNzYXZlRXJyb3JzKGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMpIj48Qj5zYXZlRXJyb3JzKEh0dHBTZXJ2bGV0UmVxdWVzdCwgQWN0aW9uRXJyb3JzKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD5TYXZlIHRoZSBzcGVjaWZpZWQgZXJyb3IgbWVzc2FnZXMga2V5cyBpbnRvIHRoZSBhcHByb3ByaWF0ZSByZXF1ZXN0CiBhdHRyaWJ1dGUgZm9yIHVzZSBieSB0aGUgJmx0O3N0cnV0czplcnJvcnMmZ3Q7IHRhZywgaWYgYW55IG1lc3NhZ2VzCiBhcmUgcmVxdWlyZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1JlcXVlc3RVdGlscy5odG1sI3NhdmVFeGNlcHRpb24oamF2YXguc2VydmxldC5qc3AuUGFnZUNvbnRleHQsIGphdmEubGFuZy5UaHJvd2FibGUpIj48Qj5zYXZlRXhjZXB0aW9uKFBhZ2VDb250ZXh0LCBUaHJvd2FibGUpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwiPlJlcXVlc3RVdGlsczwvQT4KPEREPlNhdmUgdGhlIHNwZWNpZmllZCBleGNlcHRpb24gYXMgYSByZXF1ZXN0IGF0dHJpYnV0ZSBmb3IgbGF0ZXIgdXNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0dldFRhZy5odG1sI3NhdmVFeGNlcHRpb24oamF2YS5sYW5nLlRocm93YWJsZSkiPjxCPnNhdmVFeGNlcHRpb24oVGhyb3dhYmxlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0dldFRhZy5odG1sIj5HZXRUYWc8L0E+CjxERD5TYXZlIHRoZSBzcGVjaWZpZWQgZXhjZXB0aW9uIGluIHJlcXVlc3Qgc2NvcGUgaWYgdGhlcmUgaXMgbm90IGFscmVhZHkKIG9uZSBwcmVzZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0luc2VydFRhZy5odG1sI3NhdmVFeGNlcHRpb24oamF2YS5sYW5nLlRocm93YWJsZSkiPjxCPnNhdmVFeGNlcHRpb24oVGhyb3dhYmxlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0luc2VydFRhZy5odG1sIj5JbnNlcnRUYWc8L0E+CjxERD5TYXZlIHRoZSBzcGVjaWZpZWQgZXhjZXB0aW9uIGluIHJlcXVlc3Qgc2NvcGUgaWYgdGhlcmUgaXMgbm90IGFscmVhZHkKIG9uZSBwcmVzZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI3NhdmVUb2tlbihqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+c2F2ZVRva2VuKEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+QWN0aW9uPC9BPgo8REQ+U2F2ZSBhIG5ldyB0cmFuc2FjdGlvbiB0b2tlbiBpbiB0aGUgdXNlcidzIGN1cnJlbnQgc2Vzc2lvbiwgY3JlYXRpbmcKIGEgbmV3IHNlc3Npb24gaWYgbmVjZXNzYXJ5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzY29wZSI+PEI+c2NvcGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlRoZSBpZGVudGlmaWVyIG9mIHRoZSBzY29wZSAoInJlcXVlc3QiIG9yICJzZXNzaW9uIikgdW5kZXIgd2hpY2ggdGhlCiBmb3JtIGJlYW4gYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWFwcGluZywgaWYgYW55LCBzaG91bGQgYmUgY3JlYXRlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjc2NvcGUiPjxCPnNjb3BlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgc2NvcGUgKHJlcXVlc3Qgb3Igc2Vzc2lvbikgdW5kZXIgd2hpY2ggb3VyIGFzc29jaWF0ZWQgYmVhbgogaXMgc3RvcmVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VBdHRyaWJ1dGVUYWcuaHRtbCNzY29wZSI+PEI+c2NvcGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VBdHRyaWJ1dGVUYWcuaHRtbCI+QmFzZUF0dHJpYnV0ZVRhZzwvQT4KPEREPlRoZSBzY29wZSBvZiB0aGUgYXR0cmlidXRlIGJlaW5nIHRlc3RlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwjc2NvcGUiPjxCPnNjb3BlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCI+V3JpdGVUYWc8L0E+CjxERD5UaGUgc2NvcGUgdG8gYmUgc2VhcmNoZWQgdG8gcmV0cmlldmUgdGhlIHNwZWNpZmllZCBiZWFuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwjc2NvcGUiPjxCPnNjb3BlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwiPkRlZmluZVRhZzwvQT4KPEREPlRoZSBzY29wZSB3aXRoaW4gd2hpY2ggdG8gc2VhcmNoIGZvciB0aGUgc3BlY2lmaWVkIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwjc2NvcGUiPjxCPnNjb3BlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sIj5TaXplVGFnPC9BPgo8REQ+VGhlIHNjb3BlIHdpdGhpbiB3aGljaCB0byBzZWFyY2ggZm9yIHRoZSBzcGVjaWZpZWQgYmVhbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI3Njb3BlIj48Qj5zY29wZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5UaGUgc2NvcGUgb2YgdGhlIGJlYW4gc3BlY2lmaWVkIGJ5IHRoZSBuYW1lIHByb3BlcnR5LCBpZiBhbnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjc2NvcGUiPjxCPnNjb3BlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+VGhlIHNjb3BlIG9mIHRoZSBiZWFuIHNwZWNpZmllZCBieSB0aGUgbmFtZSBwcm9wZXJ0eSwgaWYgYW55Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI3Njb3BlIj48Qj5zY29wZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlRoZSBzY29wZSAocmVxdWVzdCBvciBzZXNzaW9uKSB1bmRlciB3aGljaCBvdXIgYXNzb2NpYXRlZCBiZWFuCiBpcyBzdG9yZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjc2NvcGUiPjxCPnNjb3BlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCI+Q29uZGl0aW9uYWxUYWdCYXNlPC9BPgo8REQ+VGhlIHNjb3BlIHRvIHNlYXJjaCBmb3IgdGhlIGJlYW4gbmFtZWQgYnkgdGhlIG5hbWUgcHJvcGVydHksIG9yCiAiYW55IHNjb3BlIiBpZiBudWxsLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNzY29wZSI+PEI+c2NvcGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlRoZSBzY29wZSBvZiB0aGUgYmVhbiBzcGVjaWZpZWQgYnkgdGhlIG5hbWUgcHJvcGVydHksIGlmIGFueS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI3Njb3BlIj48Qj5zY29wZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD5UaGUgc2NvcGUgb2YgdGhlIGJlYW4gc3BlY2lmaWVkIGJ5IHRoZSBuYW1lIHByb3BlcnR5LCBpZiBhbnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ29uc3RhbnRzLmh0bWwjU0VMRUNUX0tFWSI+PEI+U0VMRUNUX0tFWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NvbnN0YW50cy5odG1sIj5Db25zdGFudHM8L0E+CjxERD5UaGUgYXR0cmlidXRlIGtleSBmb3IgdGhlIHNlbGVjdCB0YWcgaXRzZWxmLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ29uc3RhbnRzLmh0bWwjU0VMRUNUX0tFWSI+PEI+U0VMRUNUX0tFWTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Db25zdGFudHMuaHRtbCI+Q29uc3RhbnRzPC9BPgo8REQ+VGhlIGF0dHJpYnV0ZSBrZXkgZm9yIHRoZSBzZWxlY3QgdGFnIGl0c2VsZi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCI+PEI+U2VsZWN0VGFnPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+LjxERD5DdXN0b20gdGFnIHRoYXQgcmVwcmVzZW50cyBhbiBIVE1MIHNlbGVjdCBlbGVtZW50LCBhc3NvY2lhdGVkIHdpdGggYQogYmVhbiBwcm9wZXJ0eSBzcGVjaWZpZWQgYnkgb3VyIGF0dHJpYnV0ZXMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj48Qj5TZWxlY3RUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+LjxERD5DdXN0b20gdGFnIHRoYXQgcmVwcmVzZW50cyBhbiBIVE1MIHNlbGVjdCBlbGVtZW50LCBhc3NvY2lhdGVkIHdpdGggYQogYmVhbiBwcm9wZXJ0eSBzcGVjaWZpZWQgYnkgb3VyIGF0dHJpYnV0ZXMuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCNTZWxlY3RUYWcoKSI+PEI+U2VsZWN0VGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCNTZWxlY3RUYWcoKSI+PEI+U2VsZWN0VGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXF1ZXN0VXRpbHMuaHRtbCNzZXJ2ZXJVUkwoamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxCPnNlcnZlclVSTChIdHRwU2VydmxldFJlcXVlc3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVxdWVzdFV0aWxzLmh0bWwiPlJlcXVlc3RVdGlsczwvQT4KPEREPlJldHVybiB0aGUgVVJMIHJlcHJlc2VudGluZyB0aGUgc2NoZW1lLCBzZXJ2ZXIsIGFuZCBwb3J0IG51bWJlciBvZgogdGhlIGN1cnJlbnQgcmVxdWVzdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCNzZXJ2bGV0Ij48Qj5zZXJ2bGV0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+QWN0aW9uPC9BPgo8REQ+VGhlIGNvbnRyb2xsZXIgc2VydmxldCB0byB3aGljaCB3ZSBhcmUgYXR0YWNoZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sI3NlcnZsZXQiPjxCPnNlcnZsZXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm0uaHRtbCI+QWN0aW9uRm9ybTwvQT4KPEREPlRoZSBjb250cm9sbGVyIHNlcnZsZXQgaW5zdGFuY2UgdG8gd2hpY2ggd2UgYXJlIGF0dGFjaGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmdzLmh0bWwjc2VydmxldCI+PEI+c2VydmxldDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZ3MuaHRtbCI+QWN0aW9uTWFwcGluZ3M8L0E+CjxERD5UaGUgQWN0aW9uU2VydmxldCBpbnN0YW5jZSBvZiBvdXIgb3duaW5nIGFwcGxpY2F0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI3NlcnZsZXQiPjxCPnNlcnZsZXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgQWN0aW9uU2VydmxldCBpbnN0YW5jZSB3ZSBhcmUgYXNzb2NpYXRlZCB3aXRoIChzbyB0aGF0IHdlIGNhbgogaW5pdGlhbGl6ZSB0aGUgPGNvZGU+c2VydmxldDwvY29kZT4gcHJvcGVydHkgb24gYW55IGZvcm0gYmVhbiB0aGF0CiB3ZSBjcmVhdGUpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI3NlcnZsZXQiPjxCPnNlcnZsZXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sIj5EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXI8L0E+CjxERD5UaGUgQWN0aW9uU2VydmxldCBpbnN0YW5jZSB1c2VkIGZvciB0aGlzIGNsYXNzCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjU0VSVkxFVF9LRVkiPjxCPlNFUlZMRVRfS0VZPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwiPkFjdGlvbjwvQT4KPEREPlRoZSBjb250ZXh0IGF0dHJpYnV0ZXMga2V5IHVuZGVyIHdoaWNoIHdlIHN0b3JlIHRoZSBtYXBwaW5nIGRlZmluZWQKIGZvciBvdXIgY29udHJvbGxlciBzZXJsZXQsIHdoaWNoIHdpbGwgYmUgZWl0aGVyIGEgcGF0aC1tYXBwZWQgcGF0dGVybgogKDxjb2RlPi9hY3Rpb24vKjwvY29kZT4pIG9yIGFuIGV4dGVuc2lvbiBtYXBwZWQgcGF0dGVybgogKDxjb2RlPiouZG88L2NvZGU+KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCI+PEI+U2VydmxldENvbnRleHRXcml0ZXI8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4uPEREPkEgUHJpbnRXcml0ZXIgaW1wbGVtZW50YXRpb24gdGhhdCB1c2VzIHRoZSBsb2dnaW5nIGZhY2lsaXRpZXMgb2YgYQogPGNvZGU+amF2YXguc2VydmxldC5TZXJ2bGV0Q29udGV4dDwvY29kZT4gdG8gb3V0cHV0IGl0cyByZXN1bHRzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjU2VydmxldENvbnRleHRXcml0ZXIoamF2YXguc2VydmxldC5TZXJ2bGV0Q29udGV4dCkiPjxCPlNlcnZsZXRDb250ZXh0V3JpdGVyKFNlcnZsZXRDb250ZXh0KTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCI+U2VydmxldENvbnRleHRXcml0ZXI8L0E+CjxERD5Db25zdHJ1Y3QgYSBTZXJ2bGV0Q29udGV4dFdyaXRlciBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAogU2VydmxldENvbnRleHQgaW5zdGFuY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI3NlcnZsZXRNYXBwaW5nIj48Qj5zZXJ2bGV0TWFwcGluZzwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+VGhlIFVSTCBwYXR0ZXJuIHRvIHdoaWNoIHdlIGFyZSBtYXBwZWQgaW4gb3VyIHdlYiBhcHBsaWNhdGlvbgogZGVwbG95bWVudCBkZXNjcmlwdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNzZXJ2bGV0TmFtZSI+PEI+c2VydmxldE5hbWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlRoZSBzZXJ2bGV0IG5hbWUgdW5kZXIgd2hpY2ggd2UgYXJlIHJlZ2lzdGVyZWQgaW4gb3VyIHdlYiBhcHBsaWNhdGlvbgogZGVwbG95bWVudCBkZXNjcmlwdG9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1Nlc3Npb25BY3Rpb25NYXBwaW5nLmh0bWwiPjxCPlNlc3Npb25BY3Rpb25NYXBwaW5nPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1Nlc3Npb25BY3Rpb25NYXBwaW5nLmh0bWwiPlNlc3Npb25BY3Rpb25NYXBwaW5nPC9BPi48REQ+U3ViY2xhc3Mgb2YgPGNvZGU+QWN0aW9uTWFwcGluZzwvY29kZT4gdGhhdCBkZWZhdWx0cyB0aGUgZm9ybSBiZWFuCiBzY29wZSB0byA8Y29kZT5zZXNzaW9uPC9jb2RlPi48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1Nlc3Npb25BY3Rpb25NYXBwaW5nLmh0bWwjU2Vzc2lvbkFjdGlvbk1hcHBpbmcoKSI+PEI+U2Vzc2lvbkFjdGlvbk1hcHBpbmcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1Nlc3Npb25BY3Rpb25NYXBwaW5nLmh0bWwiPlNlc3Npb25BY3Rpb25NYXBwaW5nPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3Mgd2l0aCB0aGUgZGVzaXJlZCBkZWZhdWx0CiBmb3JtIGJlYW4gc2NvcGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNzZXQoaW50LCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+c2V0KGludCwgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmVwbGFjZSB0aGUgZWxlbWVudCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIHRoaXMgbGlzdCB3aXRoCiB0aGUgc3BlY2lmaWVkIGVsZW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUZpZWxkVGFnLmh0bWwjc2V0QWNjZXB0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRBY2NlcHQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VGaWVsZFRhZy5odG1sIj5CYXNlRmllbGRUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VGaWVsZFRhZy5odG1sI3NldEFjY2VwdChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QWNjZXB0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwiPkJhc2VGaWVsZFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRBY2Nlc3NrZXkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEFjY2Vzc2tleShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgYWNjZXNzS2V5IGNoYXJhY3Rlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI3NldEFjY2Vzc0tleShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QWNjZXNzS2V5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIGFjY2Vzc0tleSBjaGFyYWN0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI3NldEFjdGlvbihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QWN0aW9uKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5TZXQgdGhlIGFjdGlvbiBVUkwgdG8gd2hpY2ggdGhpcyBmb3JtIHNob3VsZCBiZSBzdWJtaXR0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwjc2V0QWN0aW9uKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRBY3Rpb24oU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5TZXQgdGhlIGFjdGlvbiBVUkwgdG8gd2hpY2ggdGhpcyBmb3JtIHNob3VsZCBiZSBzdWJtaXR0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI3NldEFjdGlvbkNsYXNzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRBY3Rpb25DbGFzcyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIHNldFR5cGUoU3RyaW5nKSBpbnN0ZWFkPC9JPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjc2V0QWxpZ24oamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEFsaWduKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjc2V0QWx0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRBbHQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sI3NldEFsdChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QWx0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+SW1hZ2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI3NldEFsdEtleShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QWx0S2V5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNzZXRBbHRLZXkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEFsdEtleShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwjc2V0QW5jaG9yKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRBbmNob3IoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNzZXRBbmNob3IoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEFuY2hvcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwjc2V0QW5jaG9yKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRBbmNob3IoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI3NldEFyZzAoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEFyZzAoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlNldCB0aGUgZmlyc3Qgb3B0aW9uYWwgYXJndW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjc2V0QXJnMChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QXJnMChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCNzZXRBcmcxKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRBcmcxKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5TZXQgdGhlIHNlY29uZCBvcHRpb25hbCBhcmd1bWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCNzZXRBcmcxKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRBcmcxKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI3NldEFyZzIoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEFyZzIoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlNldCB0aGUgdGhpcmQgb3B0aW9uYWwgYXJndW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjc2V0QXJnMihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QXJnMihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCNzZXRBcmczKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRBcmczKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5TZXQgdGhlIGZvdXJ0aCBvcHRpb25hbCBhcmd1bWVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCNzZXRBcmczKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRBcmczKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI3NldEFyZzQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEFyZzQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlNldCB0aGUgZmlmdGggb3B0aW9uYWwgYXJndW1lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjc2V0QXJnNChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QXJnNChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRBdHRyaWJ1dGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEF0dHJpYnV0ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+U2V0IHRoZSBhdHRyaWJ1dGUgbmFtZSBmb3Igb3VyIGZvcm0gYmVhbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sI3NldEF0dHJpYnV0ZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+c2V0QXR0cmlidXRlKFN0cmluZywgT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RXcmFwcGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjc2V0QXV0b0NvbW1pdChib29sZWFuKSI+PEI+c2V0QXV0b0NvbW1pdChib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5TZXRzIHRoaXMgY29ubmVjdGlvbidzIGF1dG8tY29tbWl0IG1vZGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjc2V0QXV0b0NvbW1pdChib29sZWFuKSI+PEI+c2V0QXV0b0NvbW1pdChib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI3NldEJvcmRlcihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Qm9yZGVyKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNzZXRCb3JkZXIoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEJvcmRlcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI3NldEJ1ZmZlclNpemUoaW50KSI+PEI+c2V0QnVmZmVyU2l6ZShpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+U2V0IHRoZSBidWZmZXIgc2l6ZSAoaG93IGxhcmdlIG9mIGEgY2h1bmsgb2YgZGF0YSBpcwogcmVjaWV2ZWQgYnkgdGhlIGlucHV0IHN0cmVhbSBhdCBvbmNlKSB1c2VkIGZvciBmaWxlCiB1cGxvYWRpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNzZXRCdWZmZXJTaXplKGludCkiPjxCPnNldEJ1ZmZlclNpemUoaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwiPk11bHRpcGFydEl0ZXJhdG9yPC9BPgo8REQ+U2V0IHRoZSBtYXhpbXVtIGFtb3VudCBvZiBieXRlcyByZWFkIGZyb20gYSBsaW5lIGF0IG9uZSB0aW1lCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sI3NldEJ1bmRsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QnVuZGxlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD5TZXQgdGhlIGJ1bmRsZSBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjc2V0QnVuZGxlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRCdW5kbGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI3NldEJ1bmRsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QnVuZGxlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwjc2V0QnVuZGxlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRCdW5kbGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9FcnJvcnNUYWcuaHRtbCI+RXJyb3JzVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sI3NldEJ1bmRsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QnVuZGxlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+SW1hZ2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvblRhZy5odG1sI3NldEJ1bmRsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0QnVuZGxlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwiPk9wdGlvblRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI3NldENhdGFsb2coamF2YS5sYW5nLlN0cmluZykiPjxCPnNldENhdGFsb2coU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5TZXQgdGhlIGNhdGFsb2cgbmFtZSBmb3IgdGhpcyBDb25uZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjc2V0Q2hhcmFjdGVyRW5jb2RpbmcoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldENoYXJhY3RlckVuY29kaW5nKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlci5odG1sIj5NdWx0aXBhcnRSZXF1ZXN0V3JhcHBlcjwvQT4KPEREPlRoaXMgbWV0aG9kIGRvZXMgbm90aGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCNzZXRDbG9zZWQoYm9vbGVhbikiPjxCPnNldENsb3NlZChib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5TZXQgdGhlIGNsb3NlZCBzdGF0dXMgb2YgdGhpcyBjb25uZWN0aW9uIHdyYXBwZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwjc2V0Q29sbGVjdGlvbihqYXZhLmxhbmcuT2JqZWN0KSI+PEI+c2V0Q29sbGVjdGlvbihPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPlNldCB0aGUgY29sbGVjdGlvbiBvdmVyIHdoaWNoIHdlIHdpbGwgYmUgZW51bWVyYXRpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI3NldENvbGxlY3Rpb24oamF2YS5sYW5nLk9iamVjdCkiPjxCPnNldENvbGxlY3Rpb24oT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlNldCB0aGUgY29sbGVjdGlvbiBvdmVyIHdoaWNoIHdlIHdpbGwgYmUgaXRlcmF0aW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sI3NldENvbGxlY3Rpb24oamF2YS5sYW5nLk9iamVjdCkiPjxCPnNldENvbGxlY3Rpb24oT2JqZWN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwiPlNpemVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwjc2V0Q29sbGVjdGlvbihqYXZhLmxhbmcuT2JqZWN0KSI+PEI+c2V0Q29sbGVjdGlvbihPYmplY3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwjc2V0Q29sbGVjdGlvbihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Q29sbGVjdGlvbihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sI3NldENvbHMoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldENvbHMoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5TZXQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGZvciB0aGlzIGZpZWxkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwjc2V0Q29scyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Q29scyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5TZXQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGZvciB0aGlzIGZpZWxkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL1B1dFRhZy5odG1sI3NldENvbnRlbnQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldENvbnRlbnQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL1B1dFRhZy5odG1sIj5QdXRUYWc8L0E+CjxERD5TZXQgdGhlIGNvbnRlbnQncyBVUkkgKGlmIGl0J3MgdG8gYmUgaW5jbHVkZWQpIG9yIHRleHQgKGlmIGl0J3MgdG8KIGJlIHByaW50ZWQpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tGaWxlLmh0bWwjc2V0Q29udGVudFR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldENvbnRlbnRUeXBlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sIj5EaXNrRmlsZTwvQT4KPEREPlNldCB0aGUgY29udGVudCB0eXBlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRm9ybUZpbGUuaHRtbCNzZXRDb250ZW50VHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Q29udGVudFR5cGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9Gb3JtRmlsZS5odG1sIj5Gb3JtRmlsZTwvQT4KPEREPlNldCB0aGUgY29udGVudCB0eXBlIGZvciB0aGlzIGZpbGUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwjc2V0Q29udGVudFR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldENvbnRlbnRUeXBlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwiPk11bHRpcGFydEVsZW1lbnQ8L0E+CjxERD5TZXQgdGhlIGNvbnRlbnQgdHlwZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sI3NldENvb2tpZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Q29va2llKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCI+Q29uZGl0aW9uYWxUYWdCYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sI3NldERhdGEoYnl0ZVtdKSI+PEI+c2V0RGF0YShieXRlW10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sIj5NdWx0aXBhcnRFbGVtZW50PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIHRoZSBzZXRGaWxlIG1ldGhvZCB0byBzZXQgdGhlIGZpbGUKICAgICAgICAgICAgIHRoYXQgcmVwcmVzZW50cyB0aGUgZGF0YSBvZiB0aGlzIGVsZW1lbnQ8L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3NldERlYnVnKGludCkiPjxCPnNldERlYnVnKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5TZXQgdGhlIGRlYnVnZ2luZyBkZXRhaWwgbGV2ZWwgb2YgdGhpcyBEaWdlc3Rlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI3NldERlYnVnKGludCkiPjxCPnNldERlYnVnKGludCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPlByb3BlcnR5VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQmVhblV0aWxzLmh0bWwjc2V0RGVidWcoaW50KSI+PEI+c2V0RGVidWcoaW50KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0JlYW5VdGlscy5odG1sIj5CZWFuVXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNzZXREZWJ1ZyhpbnQpIj48Qj5zZXREZWJ1ZyhpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNzZXREZWZhdWx0Qm9vbGVhbihib29sZWFuKSI+PEI+c2V0RGVmYXVsdEJvb2xlYW4oYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwjc2V0RGVmYXVsdEJ5dGUoYnl0ZSkiPjxCPnNldERlZmF1bHRCeXRlKGJ5dGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI3NldERlZmF1bHRDaGFyYWN0ZXIoY2hhcikiPjxCPnNldERlZmF1bHRDaGFyYWN0ZXIoY2hhcik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwjc2V0RGVmYXVsdERvdWJsZShkb3VibGUpIj48Qj5zZXREZWZhdWx0RG91YmxlKGRvdWJsZSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwjc2V0RGVmYXVsdEZsb2F0KGZsb2F0KSI+PEI+c2V0RGVmYXVsdEZsb2F0KGZsb2F0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwiPkNvbnZlcnRVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOyZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNzZXREZWZhdWx0SW50ZWdlcihpbnQpIj48Qj5zZXREZWZhdWx0SW50ZWdlcihpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sI3NldERlZmF1bHRMb25nKGxvbmcpIj48Qj5zZXREZWZhdWx0TG9uZyhsb25nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQ29udmVydFV0aWxzLmh0bWwiPkNvbnZlcnRVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOyZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNzZXREZWZhdWx0U2hvcnQoc2hvcnQpIj48Qj5zZXREZWZhdWx0U2hvcnQoc2hvcnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCI+Q29udmVydFV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjc2V0RGVzY3JpcHRpb24oamF2YS5sYW5nLlN0cmluZykiPjxCPnNldERlc2NyaXB0aW9uKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwjc2V0RGlyZWN0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXREaXJlY3QoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL1B1dFRhZy5odG1sIj5QdXRUYWc8L0E+CjxERD5TZXQgZGlyZWN0IHRvIHRydWUsIGFuZCBjb250ZW50IHdpbGwgYmUgcHJpbnRlZCBkaXJlY3RseSwgaW5zdGVhZAogb2YgaW5jbHVkZWQgKGRpcmVjdCA9PSBmYWxzZSkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3NldERpc2FibGVkKGJvb2xlYW4pIj48Qj5zZXREaXNhYmxlZChib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIGRpc2FibGVkIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCNzZXREaXNhYmxlZChib29sZWFuKSI+PEI+c2V0RGlzYWJsZWQoYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwiPk9wdGlvblRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNzZXREb2N1bWVudExvY2F0b3Iob3JnLnhtbC5zYXguTG9jYXRvcikiPjxCPnNldERvY3VtZW50TG9jYXRvcihMb2NhdG9yKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPlNldCB0aGUgZG9jdW1lbnQgbG9jYXRvciBhc3NvY2lhdGVkIHdpdGggb3VyIHBhcnNlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNzZXREcml2ZXJDbGFzcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0RHJpdmVyQ2xhc3MoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjc2V0RW5jdHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0RW5jdHlwZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwjc2V0RW5jdHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0RW5jdHlwZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sI3NldEVycm9yKCkiPjxCPnNldEVycm9yKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+U2V0IHRoZSBlcnJvciBzdGF0ZSBmb3IgdGhpcyBzdHJlYW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3NldEVycm9ySGFuZGxlcihvcmcueG1sLnNheC5FcnJvckhhbmRsZXIpIj48Qj5zZXRFcnJvckhhbmRsZXIoRXJyb3JIYW5kbGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPlNldCB0aGUgZXJyb3IgaGFuZGxlciBmb3IgdGhpcyBEaWdlc3Rlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlc0ZhY3RvcnkuaHRtbCNzZXRGYWN0b3J5Q2xhc3MoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEZhY3RvcnlDbGFzcyhTdHJpbmcpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlc0ZhY3RvcnkuaHRtbCI+TWVzc2FnZVJlc291cmNlc0ZhY3Rvcnk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkcy5odG1sI3NldEZhc3QoYm9vbGVhbikiPjxCPnNldEZhc3QoYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkcy5odG1sIj5BY3Rpb25Gb3J3YXJkczwvQT4KPEREPlNldCB0aGUgImZhc3QiIG1vZGUgZmxhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbnMuaHRtbCNzZXRGYXN0KGJvb2xlYW4pIj48Qj5zZXRGYXN0KGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW5zLmh0bWwiPkFjdGlvbkZvcm1CZWFuczwvQT4KPEREPlNldCB0aGUgImZhc3QiIG1vZGUgZmxhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sI3NldEZhc3QoYm9vbGVhbikiPjxCPnNldEZhc3QoYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5ncy5odG1sIj5BY3Rpb25NYXBwaW5nczwvQT4KPEREPlNldCB0aGUgImZhc3QiIG1vZGUgZmxhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCNzZXRGYXN0KGJvb2xlYW4pIj48Qj5zZXRGYXN0KGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0SGFzaE1hcC5odG1sIj5GYXN0SGFzaE1hcDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOyZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjc2V0RmFzdChib29sZWFuKSI+PEI+c2V0RmFzdChib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sIj5GYXN0QXJyYXlMaXN0PC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjc2V0RmFzdChib29sZWFuKSI+PEI+c2V0RmFzdChib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCI+RmFzdFRyZWVNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwjc2V0RmlsZShqYXZhLmlvLkZpbGUpIj48Qj5zZXRGaWxlKEZpbGUpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sIj5NdWx0aXBhcnRFbGVtZW50PC9BPgo8REQ+U2V0IHRoZSBmaWxlIHRoYXQgcmVwcmVzZW50cyB0aGlzIGVsZW1lbnQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sI3NldEZpbGVOYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRGaWxlTmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza0ZpbGUuaHRtbCI+RGlza0ZpbGU8L0E+CjxERD5TZXQgdGhlIGZpbGUgbmFtZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Zvcm1GaWxlLmh0bWwjc2V0RmlsZU5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEZpbGVOYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRm9ybUZpbGUuaHRtbCI+Rm9ybUZpbGU8L0E+CjxERD5TZXQgdGhlIGZpbGVuYW1lIG9mIHRoaXMgZmlsZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCNzZXRGaWxlTmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0RmlsZU5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPlNldCB0aGUgZmlsZSBuYW1lIGZvciB0aGlzIGVsZW1lbnQKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sI3NldEZpbGVTaXplKGludCkiPjxCPnNldEZpbGVTaXplKGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrRmlsZS5odG1sIj5EaXNrRmlsZTwvQT4KPEREPlNldCB0aGUgZmlsZSBzaXplCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRm9ybUZpbGUuaHRtbCNzZXRGaWxlU2l6ZShpbnQpIj48Qj5zZXRGaWxlU2l6ZShpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Zvcm1GaWxlLmh0bWwiPkZvcm1GaWxlPC9BPgo8REQ+U2V0IHRoZSBmaWxlIHNpemUKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwjc2V0RmlsdGVyKGJvb2xlYW4pIj48Qj5zZXRGaWx0ZXIoYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCI+V3JpdGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9HZXRUYWcuaHRtbCNzZXRGbHVzaChib29sZWFuKSI+PEI+c2V0Rmx1c2goYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9HZXRUYWcuaHRtbCI+R2V0VGFnPC9BPgo8REQ+U2V0IHRoZSBmbHVzaC1iZWZvcmUtaW5jbHVkZSBwcm9wZXJ0eQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNzZXRGb2N1cyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Rm9jdXMoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlNldCB0aGUgZm9jdXMgZmllbGQgbmFtZSBmb3IgdGhpcyBmb3JtLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI3NldEZvY3VzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRGb2N1cyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlNldCB0aGUgZm9jdXMgZmllbGQgbmFtZSBmb3IgdGhpcyBmb3JtLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRGb3JtQXR0cmlidXRlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRGb3JtQXR0cmlidXRlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5Vc2Ugc2V0QXR0cmlidXRlKFN0cmluZykgaW5zdGVhZDwvST4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1N0cnV0c1RhZy5odG1sI3NldEZvcm1CZWFuKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRGb3JtQmVhbihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1N0cnV0c1RhZy5odG1sIj5TdHJ1dHNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjc2V0Rm9ybUJlYW5DbGFzcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Rm9ybUJlYW5DbGFzcyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+U2V0IHRoZSBKYXZhIGNsYXNzIG5hbWUgb2YgdGhlIGNsYXNzIHVzZWQgdG8gaW5zdGFudGlhdGUKIDxjb2RlPkFjdGlvbkZvcm1CZWFuPC9jb2RlPiBvYmplY3RzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRGb3JtQ2xhc3MoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEZvcm1DbGFzcyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+TW9kaWZ5IHRoZSBjb3JyZXNwb25kaW5nIEFjdGlvbkZvcm1CZWFuIGluc3RlYWQ8L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI3NldEZvcm1QcmVmaXgoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEZvcm1QcmVmaXgoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlVzZSBzZXRQcmVmaXgoU3RyaW5nKSBpbnN0ZWFkPC9JPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRGb3JtU2NvcGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEZvcm1TY29wZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIHNldFNjb3BlKFN0cmluZykgaW5zdGVhZDwvST4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjc2V0Rm9ybVN1ZmZpeChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Rm9ybVN1ZmZpeChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIHNldFN1ZmZpeChTdHJpbmcpIGluc3RlYWQ8L0k+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI3NldEZvcndhcmQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEZvcndhcmQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlNldCB0aGUgZm9yd2FyZCBwYXRoIGZvciB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sI3NldEZvcndhcmQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEZvcndhcmQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPlNldCB0aGUgbG9naWNhbCBmb3J3YXJkIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGluazFUYWcuaHRtbCNzZXRGb3J3YXJkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRGb3J3YXJkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sIj5MaW5rMVRhZzwvQT4KPEREPlNldCB0aGUgbG9naWNhbCBmb3J3YXJkIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwjc2V0Rm9yd2FyZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Rm9yd2FyZChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCI+SW5jbHVkZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwjc2V0Rm9yd2FyZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Rm9yd2FyZChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1N0cnV0c1RhZy5odG1sIj5TdHJ1dHNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNzZXRGb3J3YXJkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRGb3J3YXJkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNzZXRGb3J3YXJkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRGb3J3YXJkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sIj5SZWRpcmVjdFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNzZXRGb3J3YXJkQ2xhc3MoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEZvcndhcmRDbGFzcyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+U2V0IHRoZSBKYXZhIGNsYXNzIG5hbWUgb2YgdGhlIGNsYXNzIHVzZWQgdG8gaW5zdGFudGlhdGUKIDxjb2RlPkFjdGlvbkZvcndhcmQ8L2NvZGU+IG9iamVjdHMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjc2V0SGVhZGVyKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRIZWFkZXIoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbmRpdGlvbmFsVGFnQmFzZS5odG1sIj5Db25kaXRpb25hbFRhZ0Jhc2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI3NldEhlaWdodChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0SGVpZ2h0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCNzZXRIcmVmKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRIcmVmKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5TZXQgdGhlIGh5cGVybGluayBVUkkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVkaXJlY3RUYWcuaHRtbCNzZXRIcmVmKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRIcmVmKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZWRpcmVjdFRhZy5odG1sIj5SZWRpcmVjdFRhZzwvQT4KPEREPlNldCB0aGUgaHlwZXJsaW5rIFVSSS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sI3NldEhyZWYoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEhyZWYoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwiPkxpbmsxVGFnPC9BPgo8REQ+U2V0IHRoZSBoeXBlcmxpbmsgVVJJLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sI3NldEhyZWYoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEhyZWYoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwiPkluY2x1ZGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNzZXRIcmVmKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRIcmVmKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNzZXRIcmVmKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRIcmVmKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sIj5SZWRpcmVjdFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjc2V0SHNwYWNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRIc3BhY2UoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwjc2V0SWQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldElkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCI+RW51bWVyYXRlVGFnPC9BPgo8REQ+U2V0IHRoZSBuYW1lIG9mIHRoZSBzY3JpcHRpbmcgdmFyaWFibGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvR2V0UHJvcGVydHlUYWcuaHRtbCNzZXRJZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0SWQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0dldFByb3BlcnR5VGFnLmh0bWwiPkdldFByb3BlcnR5VGFnPC9BPgo8REQ+U2V0IHRoZSBuYW1lIG9mIHRoZSBzY3JpcHRpbmcgdmFyaWFibGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI3NldElkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRJZChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+U2V0IHRoZSBuYW1lIG9mIHRoZSBzY3JpcHRpbmcgdmFyaWFibGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9IZWFkZXJUYWcuaHRtbCNzZXRJZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0SWQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9IZWFkZXJUYWcuaHRtbCI+SGVhZGVyVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCNzZXRJZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0SWQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCI+RGVmaW5lVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwjc2V0SWQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldElkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sIj5TaXplVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCNzZXRJZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0SWQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCI+Q29va2llVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCNzZXRJZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0SWQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCI+UGFyYW1ldGVyVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9SZXNvdXJjZVRhZy5odG1sI3NldElkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRJZChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1Jlc291cmNlVGFnLmh0bWwiPlJlc291cmNlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwjc2V0SWQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldElkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sIj5JbmNsdWRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCNzZXRJZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0SWQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCI+U3RydXRzVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYWdlVGFnLmh0bWwjc2V0SWQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldElkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFnZVRhZy5odG1sIj5QYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI3NldElkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRJZChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sI3NldElnbm9yZShib29sZWFuKSI+PEI+c2V0SWdub3JlKGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwiPldyaXRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNzZXRJbWFnZU5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEltYWdlTmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjc2V0SW5jbHVkZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0SW5jbHVkZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+U2V0IHRoZSBpbmNsdWRlIHBhdGggZm9yIHRoaXMgbWFwcGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI3NldEluZGV4ZWRQcm9wZXJ0eShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGphdmEubGFuZy5PYmplY3QpIj48Qj5zZXRJbmRleGVkUHJvcGVydHkoT2JqZWN0LCBTdHJpbmcsIGludCwgT2JqZWN0KTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCI+UHJvcGVydHlVdGlsczwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1NldCB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBpbmRleGVkIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpZWQKIGJlYW4sIHdpdGggbm8gdHlwZSBjb252ZXJzaW9ucy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sI3NldEluZGV4ZWRQcm9wZXJ0eShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+c2V0SW5kZXhlZFByb3BlcnR5KE9iamVjdCwgU3RyaW5nLCBPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7U2V0IHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGluZGV4ZWQgcHJvcGVydHkgb2YgdGhlIHNwZWNpZmllZAogYmVhbiwgd2l0aCBubyB0eXBlIGNvbnZlcnNpb25zLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCNzZXRJbmRleElkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRJbmRleElkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjc2V0SW5wdXQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldElucHV0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5TZXQgdGhlIGlucHV0IGZvcm0gcGF0aCBmb3IgdGhpcyBtYXBwaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCNzZXRJbnB1dChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0SW5wdXQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9SZXNvdXJjZVRhZy5odG1sIj5SZXNvdXJjZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRJbnB1dEZvcm0oamF2YS5sYW5nLlN0cmluZykiPjxCPnNldElucHV0Rm9ybShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VXNlIHNldElucHV0KFN0cmluZykgaW5zdGVhZDwvST4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI3NldElzbWFwKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRJc21hcChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NZXNzYWdlVGFnLmh0bWwjc2V0S2V5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRLZXkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCI+TWVzc2FnZVRhZzwvQT4KPEREPlNldCB0aGUgbWVzc2FnZSBrZXkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwjc2V0S2V5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRLZXkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9NZXNzYWdlVGFnLmh0bWwiPk1lc3NhZ2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvblRhZy5odG1sI3NldEtleShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0S2V5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwiPk9wdGlvblRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwjc2V0TGFiZWxOYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRMYWJlbE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwiPk9wdGlvbnMxVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uc1RhZy5odG1sI3NldExhYmVsTmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TGFiZWxOYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwiPk9wdGlvbnNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCNzZXRMYWJlbE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldExhYmVsTmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwjc2V0TGFiZWxQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TGFiZWxQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCI+T3B0aW9uczFUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwjc2V0TGFiZWxQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TGFiZWxQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uc1RhZy5odG1sIj5PcHRpb25zVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25zVGFnLmh0bWwjc2V0TGFiZWxQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TGFiZWxQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sI3NldExlbmd0aChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TGVuZ3RoKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCI+RW51bWVyYXRlVGFnPC9BPgo8REQ+U2V0IHRoZSBsZW5ndGguCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI3NldExlbmd0aChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TGVuZ3RoKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD5TZXQgdGhlIGxlbmd0aC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwjc2V0TGVuZ3RoKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRMZW5ndGgoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3NldExpbmtOYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRMaW5rTmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSHRtbFRhZy5odG1sI3NldExvY2FsZShib29sZWFuKSI+PEI+c2V0TG9jYWxlKGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0h0bWxUYWcuaHRtbCI+SHRtbFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI3NldExvY2FsZShqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0LCBqYXZhLnV0aWwuTG9jYWxlKSI+PEI+c2V0TG9jYWxlKEh0dHBTZXJ2bGV0UmVxdWVzdCwgTG9jYWxlKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sIj5BY3Rpb248L0E+CjxERD5TZXQgdGhlIHVzZXIncyBjdXJyZW50bHkgc2VsZWN0ZWQgTG9jYWxlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL01lc3NhZ2VUYWcuaHRtbCNzZXRMb2NhbGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldExvY2FsZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+U2V0IHRoZSBsb2NhbGUga2V5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sI3NldExvY2FsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TG9jYWxlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vTWVzc2FnZVRhZy5odG1sIj5NZXNzYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNzZXRMb2NhbGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldExvY2FsZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sI3NldExvY2FsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TG9jYWxlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNzZXRMb2NhbGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldExvY2FsZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCNzZXRMb2NhbGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldExvY2FsZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvblRhZy5odG1sIj5PcHRpb25UYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9NYXRjaFRhZy5odG1sI3NldExvY2F0aW9uKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRMb2NhdGlvbihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTWF0Y2hUYWcuaHRtbCI+TWF0Y2hUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNzZXRMb2dpblRpbWVvdXQoaW50KSI+PEI+c2V0TG9naW5UaW1lb3V0KGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+U2V0IHRoZSBsb2dpbiB0aW1lb3V0IGZvciB0aGlzIGRhdGEgc291cmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI3NldExvZ1dyaXRlcihqYXZhLmlvLlByaW50V3JpdGVyKSI+PEI+c2V0TG9nV3JpdGVyKFByaW50V3JpdGVyKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD5TZXQgdGhlIGxvZyB3cml0ZXIgZm9yIHRoaXMgZGF0YSBzb3VyY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNzZXRMb3dzcmMoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldExvd3NyYyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI3NldE1hcHBpbmcob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcpIj48Qj5zZXRNYXBwaW5nKEFjdGlvbk1hcHBpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGludGVyZmFjZSBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwiPk11bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPgo8REQ+Q29udmllbmllbmNlIG1ldGhvZCB0byBzZXQgYSByZWZlcmVuY2UgdG8gYSB3b3JraW5nCiBBY3Rpb25NYXBwaW5nIGluc3RhbmNlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI3NldE1hcHBpbmcob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbk1hcHBpbmcpIj48Qj5zZXRNYXBwaW5nKEFjdGlvbk1hcHBpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwiPkRpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlcjwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwjc2V0TWFwcGluZyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TWFwcGluZyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1N0cnV0c1RhZy5odG1sIj5TdHJ1dHNUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwjc2V0TWFwcGluZ0NsYXNzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRNYXBwaW5nQ2xhc3MoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlNldCB0aGUgSmF2YSBjbGFzcyBuYW1lIG9mIHRoZSBjbGFzcyB1c2VkIHRvIGluc3RhbnRpYXRlCiA8Y29kZT5BY3Rpb25NYXBwaW5nPC9jb2RlPiBvYmplY3RzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRNYXBwaW5ncyhvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uTWFwcGluZ3MpIj48Qj5zZXRNYXBwaW5ncyhBY3Rpb25NYXBwaW5ncyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5TZXQgdGhlIDxjb2RlPkFjdGlvbk1hcHBpbmdzPC9jb2RlPiBjb2xsZWN0aW9uIG9mIHdoaWNoCiB3ZSBhcmUgYSBwYXJ0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI3NldE1heENvdW50KGludCkiPjxCPnNldE1heENvdW50KGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI3NldE1heEZpbGVTaXplKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRNYXhGaWxlU2l6ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPgo8REQ+U2V0IHRoZSBtYXhpbXVtIGZpbGUgc2l6ZSB0aGF0IGEgY2xpZW50IGNhbiB1cGxvYWQsICBudW1iZXIgU3RyaW5nIHdpdGggYSB0cmFpbGluZwogbGV0dGVyIGluZGljYXRpbmcgdGhlIHNpemUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwjc2V0TWF4bGVuZ3RoKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRNYXhsZW5ndGgoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5TZXQgdGhlIG1heGltdW0gbGVuZ3RoIGFsbG93ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCNzZXRNYXhsZW5ndGgoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE1heGxlbmd0aChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5TZXQgdGhlIG1heGltdW0gbGVuZ3RoIGFsbG93ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCNzZXRNYXhTaXplKGxvbmcpIj48Qj5zZXRNYXhTaXplKGxvbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0SXRlcmF0b3IuaHRtbCI+TXVsdGlwYXJ0SXRlcmF0b3I8L0E+CjxERD5TZXQgdGhlIG1heGltdW0gcG9zdCBkYXRhIHNpemUgYWxsb3dlZCBmb3IgYSBtdWx0aXBhcnQgcmVxdWVzdAo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNzZXRNZXRob2QoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE1ldGhvZChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+U2V0IHRoZSByZXF1ZXN0IG1ldGhvZCB1c2VkIHdoZW4gc3VibWl0dGluZyB0aGlzIGZvcm0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwjc2V0TWV0aG9kKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRNZXRob2QoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5TZXQgdGhlIHJlcXVlc3QgbWV0aG9kIHVzZWQgd2hlbiBzdWJtaXR0aW5nIHRoaXMgZm9ybS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNzZXRNaW5Db3VudChpbnQpIj48Qj5zZXRNaW5Db3VudChpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRNdWx0aXBhcnRDbGFzcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TXVsdGlwYXJ0Q2xhc3MoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlNldCB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgdXNlZCB0byBoYW5kbGUgbXVsdGlwYXJ0IHJlcXVlc3QgZGF0YQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCNzZXRNdWx0aXBhcnRDbGFzcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TXVsdGlwYXJ0Q2xhc3MoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlNldCB0aGUgY2xhc3MgbmFtZSBvZiB0aGUgTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIgaW1wbGVtZW50YXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtLmh0bWwjc2V0TXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIob3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLk11bHRpcGFydFJlcXVlc3RIYW5kbGVyKSI+PEI+c2V0TXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIoTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sIj5BY3Rpb25Gb3JtPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwjc2V0TXVsdGlwbGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE11bHRpcGxlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9IZWFkZXJUYWcuaHRtbCNzZXRNdWx0aXBsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TXVsdGlwbGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9IZWFkZXJUYWcuaHRtbCI+SGVhZGVyVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCNzZXRNdWx0aXBsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TXVsdGlwbGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCI+Q29va2llVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCNzZXRNdWx0aXBsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TXVsdGlwbGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCI+UGFyYW1ldGVyVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCNzZXRNdWx0aXBsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TXVsdGlwbGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlNldCB0aGUgbmFtZSBvZiB0aGUgZm9ybSBiZWFuIGZvciB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW4uaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbi5odG1sIj5BY3Rpb25Gb3JtQmVhbjwvQT4KPEREPlNldCB0aGUgYmVhbiBuYW1lIG9mIHRoaXMgYWN0aW9uIGZvcm0gYmVhbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sIj5BY3Rpb25Gb3J3YXJkPC9BPgo8REQ+U2V0IHRoZSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5TZXQgdGhlIGJlYW4gbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9IdG1sUHJvcGVydHlUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9IdG1sUHJvcGVydHlUYWcuaHRtbCI+SHRtbFByb3BlcnR5VGFnPC9BPgo8REQ+U2V0IHRoZSBvYmplY3QgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlckVxdWFsc1RhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyRXF1YWxzVGFnLmh0bWwiPklmUGFyYW1ldGVyRXF1YWxzVGFnPC9BPgo8REQ+U2V0IHRoZSBwYXJhbWV0ZXIgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+U2V0IHRoZSBhdHRyaWJ1dGUga2V5IG5hbWUgb2Ygb3VyIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTXVsdGlib3hUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1BhcmFtZXRlclRhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1BhcmFtZXRlclRhZy5odG1sIj5QYXJhbWV0ZXJUYWc8L0E+CjxERD5TZXQgdGhlIHBhcmFtZXRlciBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCI+T3B0aW9uczFUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FcnJvcnNUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FcnJvcnNUYWcuaHRtbCI+RXJyb3JzVGFnPC9BPgo8REQ+U2V0IHRoZSBlcnJvcnMgYXR0cmlidXRlIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwiPkVudW1lcmF0ZVRhZzwvQT4KPEREPlNldCB0aGUgbmFtZSBvZiB0aGUgY29sbGVjdGlvbiBvciBvd25pbmcgYmVhbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25zVGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uc1RhZy5odG1sIj5PcHRpb25zVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvR2V0UHJvcGVydHlUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sIj5HZXRQcm9wZXJ0eVRhZzwvQT4KPEREPlNldCB0aGUgbmFtZSBvZiB0aGUgYmVhbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck51bGxUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck51bGxUYWcuaHRtbCI+SWZQYXJhbWV0ZXJOdWxsVGFnPC9BPgo8REQ+U2V0IHRoZSBwYXJhbWV0ZXIgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JhZGlvVGFnLmh0bWwiPlJhZGlvVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmVzZXRUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZXNldFRhZy5odG1sIj5SZXNldFRhZzwvQT4KPEREPlNldCB0aGUgZmllbGQgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JbmNsdWRlVGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSW5jbHVkZVRhZy5odG1sIj5JbmNsdWRlVGFnPC9BPgo8REQ+U2V0IHRoZSBsb2dpY2wgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlRmllbGRUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlRmllbGRUYWcuaHRtbCI+QmFzZUZpZWxkVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUF0dHJpYnV0ZVRhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VBdHRyaWJ1dGVUYWcuaHRtbCI+QmFzZUF0dHJpYnV0ZVRhZzwvQT4KPEREPlNldCB0aGUgYXR0cmlidXRlIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9yd2FyZFRhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0ZvcndhcmRUYWcuaHRtbCI+Rm9yd2FyZFRhZzwvQT4KPEREPlNldCB0aGUgbG9naWNsIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOb3RFcXVhbHNUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdEVxdWFsc1RhZy5odG1sIj5JZlBhcmFtZXRlck5vdEVxdWFsc1RhZzwvQT4KPEREPlNldCB0aGUgcGFyYW1ldGVyIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvVGV4dGFyZWFUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9UZXh0YXJlYVRhZy5odG1sIj5UZXh0YXJlYVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NoZWNrYm94VGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2hlY2tib3hUYWcuaHRtbCI+Q2hlY2tib3hUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdE51bGxUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdE51bGxUYWcuaHRtbCI+SWZQYXJhbWV0ZXJOb3ROdWxsVGFnPC9BPgo8REQ+U2V0IHRoZSBwYXJhbWV0ZXIgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmsxVGFnLmh0bWwiPkxpbmsxVGFnPC9BPgo8REQ+U2V0IHRoZSBiZWFuIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUHJvcGVydHlUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Qcm9wZXJ0eVRhZy5odG1sIj5Qcm9wZXJ0eVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD5TZXQgdGhlIG5hbWUgb2YgdGhlIGNvbGxlY3Rpb24gb3Igb3duaW5nIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSGVhZGVyVGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sIj5IZWFkZXJUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwiPldyaXRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwiPkRlZmluZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwiPlNpemVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Db29raWVUYWcuaHRtbCI+Q29va2llVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9QYXJhbWV0ZXJUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFyYW1ldGVyVGFnLmh0bWwiPlBhcmFtZXRlclRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUmVzb3VyY2VUYWcuaHRtbCI+UmVzb3VyY2VUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sIj5JbmNsdWRlVGFnPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+dXNlIHNldFBhZ2UoU3RyaW5nKSBpbnN0ZWFkPC9JPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sIj5PcHRpb25zVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlRmllbGRUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUZpZWxkVGFnLmh0bWwiPkJhc2VGaWVsZFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCI+UmFkaW9UYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Vycm9yc1RhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9FcnJvcnNUYWcuaHRtbCI+RXJyb3JzVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmVzZXRUYWcuaHRtbCI+UmVzZXRUYWc8L0E+CjxERD5TZXQgdGhlIGZpZWxkIG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwiPkNoZWNrYm94VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlNldCB0aGUgYXR0cmlidXRlIGtleSBuYW1lIG9mIG91ciBiZWFuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvVGV4dGFyZWFUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvVGV4dGFyZWFUYWcuaHRtbCI+VGV4dGFyZWFUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCI+Q29uZGl0aW9uYWxUYWdCYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0ZvcndhcmRUYWcuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Gb3J3YXJkVGFnLmh0bWwiPkZvcndhcmRUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvUHV0VGFnLmh0bWwiPlB1dFRhZzwvQT4KPEREPlNldCB0aGUgY29udGVudCBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0dldFRhZy5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0dldFRhZy5odG1sIj5HZXRUYWc8L0E+CjxERD5TZXQgdGhlIG5hbWUgYXR0cmlidXRlCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0RWxlbWVudC5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPlNldCB0aGUgbmFtZSBmb3IgdGhpcyBlbGVtZW50CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCNzZXROZXN0ZWRQcm9wZXJ0eShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+c2V0TmVzdGVkUHJvcGVydHkoT2JqZWN0LCBTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPlByb3BlcnR5VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtTZXQgdGhlIHZhbHVlIG9mIHRoZSAocG9zc2libHkgbmVzdGVkKSBwcm9wZXJ0eSBvZiB0aGUgc3BlY2lmaWVkCiBuYW1lLCBmb3IgdGhlIHNwZWNpZmllZCBiZWFuLCB3aXRoIG5vIHR5cGUgY29udmVyc2lvbnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXROZXh0UnVsZS5odG1sIj48Qj5TZXROZXh0UnVsZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0TmV4dFJ1bGUuaHRtbCI+U2V0TmV4dFJ1bGU8L0E+LjxERD5SdWxlIGltcGxlbWVudGF0aW9uIHRoYXQgY2FsbHMgYSBtZXRob2Qgb24gdGhlICh0b3AtMSkgKHBhcmVudCkKIG9iamVjdCwgcGFzc2luZyB0aGUgdG9wIG9iamVjdCAoY2hpbGQpIGFzIGFuIGFyZ3VtZW50LjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXROZXh0UnVsZS5odG1sI1NldE5leHRSdWxlKG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLkRpZ2VzdGVyLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+U2V0TmV4dFJ1bGUoRGlnZXN0ZXIsIFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0TmV4dFJ1bGUuaHRtbCI+U2V0TmV4dFJ1bGU8L0E+CjxERD5Db25zdHJ1Y3QgYSAic2V0IG5leHQiIHJ1bGUgd2l0aCB0aGUgc3BlY2lmaWVkIG1ldGhvZCBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0TmV4dFJ1bGUuaHRtbCNTZXROZXh0UnVsZShvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci5EaWdlc3RlciwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPlNldE5leHRSdWxlKERpZ2VzdGVyLCBTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0TmV4dFJ1bGUuaHRtbCI+U2V0TmV4dFJ1bGU8L0E+CjxERD5Db25zdHJ1Y3QgYSAic2V0IG5leHQiIHJ1bGUgd2l0aCB0aGUgc3BlY2lmaWVkIG1ldGhvZCBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VudW1lcmF0ZVRhZy5odG1sI3NldE9mZnNldChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T2Zmc2V0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCI+RW51bWVyYXRlVGFnPC9BPgo8REQ+U2V0IHRoZSBvZmZzZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSXRlcmF0ZVRhZy5odG1sI3NldE9mZnNldChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T2Zmc2V0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JdGVyYXRlVGFnLmh0bWwiPkl0ZXJhdGVUYWc8L0E+CjxERD5TZXQgdGhlIG9mZnNldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9JdGVyYXRlVGFnLmh0bWwjc2V0T2Zmc2V0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPZmZzZXQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRPbmJsdXIoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE9uYmx1cihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgb25CbHVyIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRPbkJsdXIoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE9uQmx1cihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvbkJsdXIgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0T25jaGFuZ2UoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE9uY2hhbmdlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvbkNoYW5nZSBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0T25DaGFuZ2UoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE9uQ2hhbmdlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIG9uQ2hhbmdlIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3NldE9uY2xpY2soamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE9uY2xpY2soU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIG9uQ2xpY2sgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI3NldE9uQ2xpY2soamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE9uQ2xpY2soU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgb25DbGljayBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRPbmRibGNsaWNrKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPbmRibGNsaWNrKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvbkRibENsaWNrIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRPbkRibENsaWNrKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPbkRibENsaWNrKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIG9uRGJsQ2xpY2sgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0T25mb2N1cyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T25mb2N1cyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgb25Gb2N1cyBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0T25Gb2N1cyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T25Gb2N1cyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvbkZvY3VzIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3NldE9ua2V5ZG93bihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T25rZXlkb3duKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvbktleURvd24gZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI3NldE9uS2V5RG93bihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T25LZXlEb3duKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIG9uS2V5RG93biBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRPbmtleXByZXNzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPbmtleXByZXNzKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvbktleVByZXNzIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRPbktleVByZXNzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPbktleVByZXNzKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIG9uS2V5UHJlc3MgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0T25rZXl1cChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T25rZXl1cChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgb25LZXlVcCBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0T25LZXlVcChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T25LZXlVcChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvbktleVVwIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3NldE9ubW91c2Vkb3duKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPbm1vdXNlZG93bihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgb25Nb3VzZURvd24gZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI3NldE9uTW91c2VEb3duKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPbk1vdXNlRG93bihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvbk1vdXNlRG93biBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRPbm1vdXNlbW92ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T25tb3VzZW1vdmUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIG9uTW91c2VNb3ZlIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRPbk1vdXNlTW92ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T25Nb3VzZU1vdmUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgb25Nb3VzZU1vdmUgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0T25tb3VzZW91dChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T25tb3VzZW91dChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgb25Nb3VzZU91dCBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0T25Nb3VzZU91dChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T25Nb3VzZU91dChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvbk1vdXNlT3V0IGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3NldE9ubW91c2VvdmVyKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPbm1vdXNlb3ZlcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgb25Nb3VzZU92ZXIgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI3NldE9uTW91c2VPdmVyKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPbk1vdXNlT3ZlcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvbk1vdXNlT3ZlciBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRPbm1vdXNldXAoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE9ubW91c2V1cChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgb25Nb3VzZVVwIGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRPbk1vdXNlVXAoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE9uTW91c2VVcChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvbk1vdXNlVXAgZXZlbnQgaGFuZGxlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCNzZXRPbnJlc2V0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPbnJlc2V0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+U2V0IHRoZSBvblJlc2V0IGV2ZW50IHNjcmlwdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjc2V0T25SZXNldChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0T25SZXNldChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+U2V0IHRoZSBvblJlc2V0IGV2ZW50IHNjcmlwdC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0T25zZWxlY3QoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE9uc2VsZWN0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBvblNlbGVjdCBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0T25TZWxlY3QoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE9uU2VsZWN0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIG9uU2VsZWN0IGV2ZW50IGhhbmRsZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwjc2V0T25zdWJtaXQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE9uc3VibWl0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+U2V0IHRoZSBvblN1Ym1pdCBldmVudCBzY3JpcHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI3NldE9uU3VibWl0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRPblN1Ym1pdChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+U2V0IHRoZSBvblN1Ym1pdCBldmVudCBzY3JpcHQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwjc2V0UGFnZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UGFnZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCI+SW5jbHVkZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjc2V0UGFnZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UGFnZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjc2V0UGFnZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UGFnZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjc2V0UGFnZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UGFnZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwjc2V0UGFnZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UGFnZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI3NldFBhZ2VLZXkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhZ2VLZXkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sI3NldFBhZ2VLZXkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhZ2VLZXkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sIj5JbWFnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRQYXJhbWV0ZXIoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcmFtZXRlcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+U2V0IHRoZSBnZW5lcmFsIHB1cnBvc2UgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgZm9yIHRoaXMgbWFwcGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCNzZXRQYXJhbWV0ZXIoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcmFtZXRlcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPkNvbmRpdGlvbmFsVGFnQmFzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RXcmFwcGVyLmh0bWwjc2V0UGFyYW1ldGVyKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQYXJhbWV0ZXIoU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdFdyYXBwZXI8L0E+CjxERD5TZXRzIGEgcGFyYW1ldGVyIGZvciB0aGlzIHJlcXVlc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNzZXRQYXJhbUlkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQYXJhbUlkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3NldFBhcmFtSWQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcmFtSWQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI3NldFBhcmFtSWQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcmFtSWQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNzZXRQYXJhbU5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcmFtTmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCNzZXRQYXJhbU5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcmFtTmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwjc2V0UGFyYW1OYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQYXJhbU5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNzZXRQYXJhbVByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQYXJhbVByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3NldFBhcmFtUHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcmFtUHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI3NldFBhcmFtUHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcmFtUHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNzZXRQYXJhbVNjb3BlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQYXJhbVNjb3BlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3NldFBhcmFtU2NvcGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcmFtU2NvcGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI3NldFBhcmFtU2NvcGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcmFtU2NvcGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjc2V0UGFzc3dvcmQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhc3N3b3JkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI3NldFBhdGgoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhdGgoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlNldCB0aGUgcmVxdWVzdCBVUkkgcGF0aCB1c2VkIHRvIHNlbGVjdCB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sI3NldFBhdGgoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhdGgoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCI+QWN0aW9uRm9yd2FyZDwvQT4KPEREPlNldCB0aGUgcGF0aC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNzZXRQaW5nQ29tbWFuZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UGluZ0NvbW1hbmQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNzZXRQaW5nUXVlcnkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBpbmdRdWVyeShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRQcmVmaXgoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByZWZpeChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+U2V0IHRoZSBwYXJhbWV0ZXIgbmFtZSBwcmVmaXggZm9yIHRoaXMgbWFwcGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldFByb3BlcnRpZXNSdWxlLmh0bWwiPjxCPlNldFByb3BlcnRpZXNSdWxlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXRQcm9wZXJ0aWVzUnVsZS5odG1sIj5TZXRQcm9wZXJ0aWVzUnVsZTwvQT4uPEREPlJ1bGUgaW1wbGVtZW50YXRpb24gdGhhdCBzZXRzIHByb3BlcnRpZXMgb24gdGhlIG9iamVjdCBhdCB0aGUgdG9wIG9mIHRoZQogc3RhY2ssIGJhc2VkIG9uIGF0dHJpYnV0ZXMgd2l0aCBjb3JyZXNwb25kaW5nIG5hbWVzLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXRQcm9wZXJ0aWVzUnVsZS5odG1sI1NldFByb3BlcnRpZXNSdWxlKG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLkRpZ2VzdGVyKSI+PEI+U2V0UHJvcGVydGllc1J1bGUoRGlnZXN0ZXIpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldFByb3BlcnRpZXNSdWxlLmh0bWwiPlNldFByb3BlcnRpZXNSdWxlPC9BPgo8REQ+RGVmYXVsdCBjb25zdHJ1Y3RvciBzZXRzIG9ubHkgdGhlIHRoZSBhc3NvY2lhdGVkIERpZ2VzdGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkiPjxCPnNldFByb3BlcnR5KE9iamVjdCwgU3RyaW5nLCBPYmplY3QpPC9CPjwvQT4gLSAKU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUHJvcGVydHlVdGlscy5odG1sIj5Qcm9wZXJ0eVV0aWxzPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7U2V0IHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpZWQgYmVhbiwKIG5vIG1hdHRlciB3aGljaCBwcm9wZXJ0eSByZWZlcmVuY2UgZm9ybWF0IGlzIHVzZWQsIHdpdGggbm8KIHR5cGUgY29udmVyc2lvbnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+U2V0IHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0h0bWxQcm9wZXJ0eVRhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSHRtbFByb3BlcnR5VGFnLmh0bWwiPkh0bWxQcm9wZXJ0eVRhZzwvQT4KPEREPlNldCB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTXVsdGlib3hUYWcuaHRtbCI+TXVsdGlib3hUYWc8L0E+CjxERD5TZXQgdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uczFUYWcuaHRtbCNzZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnMxVGFnLmh0bWwiPk9wdGlvbnMxVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW51bWVyYXRlVGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbnVtZXJhdGVUYWcuaHRtbCI+RW51bWVyYXRlVGFnPC9BPgo8REQ+U2V0IHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnNUYWcuaHRtbCNzZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0dldFByb3BlcnR5VGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9HZXRQcm9wZXJ0eVRhZy5odG1sIj5HZXRQcm9wZXJ0eVRhZzwvQT4KPEREPlNldCB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvUmFkaW9UYWcuaHRtbCI+UmFkaW9UYWc8L0E+CjxERD5TZXQgdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+U2V0IHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1N1Ym1pdFRhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU3VibWl0VGFnLmh0bWwiPlN1Ym1pdFRhZzwvQT4KPEREPlNldCB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2hlY2tib3hUYWcuaHRtbCI+Q2hlY2tib3hUYWc8L0E+CjxERD5TZXQgdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQnV0dG9uVGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCI+QnV0dG9uVGFnPC9BPgo8REQ+U2V0IHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NhbmNlbFRhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2FuY2VsVGFnLmh0bWwiPkNhbmNlbFRhZzwvQT4KPEREPlNldCB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGluazFUYWcuaHRtbCI+TGluazFUYWc8L0E+CjxERD5TZXQgdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQcm9wZXJ0eUVxdWFsc1RhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQcm9wZXJ0eUVxdWFsc1RhZy5odG1sIj5JZlByb3BlcnR5RXF1YWxzVGFnPC9BPgo8REQ+U2V0IHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCNzZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlNldCB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwiPklmUHJvcGVydHlOb3RFcXVhbHNUYWc8L0E+CjxERD5TZXQgdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+U2V0IHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCNzZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sIj5Xcml0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwiPkRlZmluZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1NpemVUYWcuaHRtbCI+U2l6ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vUGFnZVRhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhZ2VUYWcuaHRtbCI+UGFnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uc1RhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvbnNUYWcuaHRtbCI+T3B0aW9uc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwiPkJhc2VJbnB1dFRhZzwvQT4KPEREPlNldCB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCI+UmFkaW9UYWc8L0E+CjxERD5TZXQgdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DYW5jZWxUYWcuaHRtbCNzZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DYW5jZWxUYWcuaHRtbCI+Q2FuY2VsVGFnPC9BPgo8REQ+U2V0IHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRXJyb3JzVGFnLmh0bWwiPkVycm9yc1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCNzZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPlNldCB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0J1dHRvblRhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0J1dHRvblRhZy5odG1sIj5CdXR0b25UYWc8L0E+CjxERD5TZXQgdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TdWJtaXRUYWcuaHRtbCNzZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+U2V0IHRoZSBwcm9wZXJ0eSBuYW1lLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNzZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sIj5JbWFnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPlNldCB0aGUgcHJvcGVydHkgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2hlY2tib3hUYWcuaHRtbCI+Q2hlY2tib3hUYWc8L0E+CjxERD5TZXQgdGhlIHByb3BlcnR5IG5hbWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjc2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFByb3BlcnR5KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCI+Q29uZGl0aW9uYWxUYWdCYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI3NldFByb3BlcnR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRQcm9wZXJ0eShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNzZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UHJvcGVydHkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXRQcm9wZXJ0eVJ1bGUuaHRtbCI+PEI+U2V0UHJvcGVydHlSdWxlPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9TZXRQcm9wZXJ0eVJ1bGUuaHRtbCI+U2V0UHJvcGVydHlSdWxlPC9BPi48REQ+UnVsZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHNldHMgYW4gaW5kaXZpZHVhbCBwcm9wZXJ0eSBvbiB0aGUgb2JqZWN0IGF0IHRoZQogdG9wIG9mIHRoZSBzdGFjaywgYmFzZWQgb24gYXR0cmlidXRlcyB3aXRoIHNwZWNpZmllZCBuYW1lcy48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0UHJvcGVydHlSdWxlLmh0bWwjU2V0UHJvcGVydHlSdWxlKG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLkRpZ2VzdGVyLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+U2V0UHJvcGVydHlSdWxlKERpZ2VzdGVyLCBTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0UHJvcGVydHlSdWxlLmh0bWwiPlNldFByb3BlcnR5UnVsZTwvQT4KPEREPkNvbnN0cnVjdCBhICJzZXQgcHJvcGVydHkiIHJ1bGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgYW5kIHZhbHVlCiBhdHRyaWJ1dGVzLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRSZWFkb25seShib29sZWFuKSI+PEI+c2V0UmVhZG9ubHkoYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSByZWFkb25seSBldmVudCBoYW5kbGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI3NldFJlYWRPbmx5KGJvb2xlYW4pIj48Qj5zZXRSZWFkT25seShib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5TZXQgdGhlIHJlYWQtb25seSBtb2RlIG9mIHRoaXMgY29ubmVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNzZXRSZWFkT25seShib29sZWFuKSI+PEI+c2V0UmVhZE9ubHkoYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sI3NldFJlZGlyZWN0KGJvb2xlYW4pIj48Qj5zZXRSZWRpcmVjdChib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcndhcmQuaHRtbCI+QWN0aW9uRm9yd2FyZDwvQT4KPEREPlNldCB0aGUgcmVkaXJlY3QgZmxhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VGaWVsZFRhZy5odG1sI3NldFJlZGlzcGxheShib29sZWFuKSI+PEI+c2V0UmVkaXNwbGF5KGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VGaWVsZFRhZy5odG1sIj5CYXNlRmllbGRUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvTWVzc2FnZVJlc291cmNlcy5odG1sI3NldFJldHVybk51bGwoYm9vbGVhbikiPjxCPnNldFJldHVybk51bGwoYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXMuaHRtbCI+TWVzc2FnZVJlc291cmNlczwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9NZXNzYWdlUmVzb3VyY2VzRmFjdG9yeS5odG1sI3NldFJldHVybk51bGwoYm9vbGVhbikiPjxCPnNldFJldHVybk51bGwoYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL01lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5Lmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5PC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjc2V0Um9sZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Um9sZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPkNvbmRpdGlvbmFsVGFnQmFzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL1B1dFRhZy5odG1sI3NldFJvbGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFJvbGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL1B1dFRhZy5odG1sIj5QdXRUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9HZXRUYWcuaHRtbCNzZXRSb2xlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRSb2xlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLnRlbXBsYXRlLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9HZXRUYWcuaHRtbCI+R2V0VGFnPC9BPgo8REQ+U2V0IHRoZSByb2xlIGF0dHJpYnV0ZQo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sI3NldFJvd3MoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFJvd3MoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5TZXQgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGlzIGZpZWxkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUlucHV0VGFnLmh0bWwjc2V0Um93cyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Um93cyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5TZXQgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGlzIGZpZWxkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRTY29wZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U2NvcGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlNldCB0aGUgYXR0cmlidXRlIHNjb3BlIGZvciB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI3NldFNjb3BlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTY29wZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+U2V0IHRoZSBhdHRyaWJ1dGUgc2NvcGUgb2Ygb3VyIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUF0dHJpYnV0ZVRhZy5odG1sI3NldFNjb3BlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTY29wZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUF0dHJpYnV0ZVRhZy5odG1sIj5CYXNlQXR0cmlidXRlVGFnPC9BPgo8REQ+U2V0IHRoZSBhdHRyaWJ1dGUgc2NvcGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sI3NldFNjb3BlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTY29wZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwiPldyaXRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCNzZXRTY29wZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U2NvcGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCI+RGVmaW5lVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwjc2V0U2NvcGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFNjb3BlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sIj5TaXplVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNzZXRTY29wZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U2NvcGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjc2V0U2NvcGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFNjb3BlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwjc2V0U2NvcGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFNjb3BlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+U2V0IHRoZSBhdHRyaWJ1dGUgc2NvcGUgb2Ygb3VyIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjc2V0U2NvcGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFNjb3BlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db25kaXRpb25hbFRhZ0Jhc2UuaHRtbCI+Q29uZGl0aW9uYWxUYWdCYXNlPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI3NldFNjb3BlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTY29wZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sIj5JdGVyYXRlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCNzZXRTY29wZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U2NvcGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwjc2V0U2VydmxldChvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uU2VydmxldCkiPjxCPnNldFNlcnZsZXQoQWN0aW9uU2VydmxldCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCI+QWN0aW9uPC9BPgo8REQ+U2V0IHRoZSBjb250cm9sbGVyIHNlcnZsZXQgaW5zdGFuY2UgdG8gd2hpY2ggd2UgYXJlIGF0dGFjaGVkIChpZgogPGNvZGU+c2VydmxldDwvY29kZT4gaXMgbm9uLW51bGwpLCBvciByZWxlYXNlIGFueSBhbGxvY2F0ZWQgcmVzb3VyY2VzCiAoaWYgPGNvZGU+c2VydmxldDwvY29kZT4gaXMgbnVsbCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sI3NldFNlcnZsZXQob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvblNlcnZsZXQpIj48Qj5zZXRTZXJ2bGV0KEFjdGlvblNlcnZsZXQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sIj5BY3Rpb25Gb3JtPC9BPgo8REQ+U2V0IHRoZSBjb250cm9sbGVyIHNlcnZsZXQgaW5zdGFuY2UgdG8gd2hpY2ggd2UgYXJlIGF0dGFjaGVkIChpZgogPGNvZGU+c2VydmxldDwvY29kZT4gaXMgbm9uLW51bGwpLCBvciByZWxlYXNlIGFueSBhbGxvY2F0ZWQgcmVzb3VyY2VzCiAoaWYgPGNvZGU+c2VydmxldDwvY29kZT4gaXMgbnVsbCkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZ3MuaHRtbCNzZXRTZXJ2bGV0KG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25TZXJ2bGV0KSI+PEI+c2V0U2VydmxldChBY3Rpb25TZXJ2bGV0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmdzLmh0bWwiPkFjdGlvbk1hcHBpbmdzPC9BPgo8REQ+U2V0IHRoZSA8Y29kZT5BY3Rpb25TZXJ2bGV0PC9jb2RlPiBpbnN0YW5jZSBvZiBvdXIgb3duaW5nIGFwcGxpY2F0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwjc2V0U2VydmxldChvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uU2VydmxldCkiPjxCPnNldFNlcnZsZXQoQWN0aW9uU2VydmxldCk8L0I+PC9BPiAtIApNZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+TXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXI8L0E+CjxERD5Db252aWVuaWVuY2UgbWV0aG9kIHRvIHNldCBhIHJlZmVyZW5jZSB0byBhIHdvcmtpbmcKIEFjdGlvblNlcnZsZXQgaW5zdGFuY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyLmh0bWwjc2V0U2VydmxldChvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uU2VydmxldCkiPjxCPnNldFNlcnZsZXQoQWN0aW9uU2VydmxldCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+RGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Byb3BlcnR5VXRpbHMuaHRtbCNzZXRTaW1wbGVQcm9wZXJ0eShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KSI+PEI+c2V0U2ltcGxlUHJvcGVydHkoT2JqZWN0LCBTdHJpbmcsIE9iamVjdCk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Qcm9wZXJ0eVV0aWxzLmh0bWwiPlByb3BlcnR5VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtTZXQgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgc2ltcGxlIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpZWQgYmVhbiwKIHdpdGggbm8gdHlwZSBjb252ZXJzaW9ucy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCNzZXRTaXplKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTaXplKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+U2V0IHRoZSBzaXplIG9mIHRoaXMgZmllbGQgKHN5bm9ueW0gZm9yIDxjb2RlPnNldENvbHMoKTwvY29kZT4pLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sI3NldFNpemUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFNpemUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sI3NldFNpemUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFNpemUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+U2V0IHRoZSBzaXplIG9mIHRoaXMgZmllbGQgKHN5bm9ueW0gZm9yIDxjb2RlPnNldENvbHMoKTwvY29kZT4pLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU2VsZWN0VGFnLmh0bWwjc2V0U2l6ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U2l6ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI3NldFNyYyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U3JjKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCNzZXRTcmMoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFNyYyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNzZXRTcmNLZXkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFNyY0tleShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjc2V0U3JjS2V5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTcmNLZXkoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sIj5JbWFnZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNzZXRTdHlsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U3R5bGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlNldCB0aGUgc3R5bGUgYXR0cmlidXRlIGZvciB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI3NldFN0eWxlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTdHlsZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSBzdHlsZSBhdHRyaWJ1dGUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3NldFN0eWxlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTdHlsZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgc3R5bGUgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI3NldFN0eWxlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTdHlsZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlNldCB0aGUgc3R5bGUgYXR0cmlidXRlIGZvciB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjc2V0U3R5bGVDbGFzcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U3R5bGVDbGFzcyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+U2V0IHRoZSBzdHlsZSBjbGFzcyBmb3IgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRTdHlsZUNsYXNzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTdHlsZUNsYXNzKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIHN0eWxlIGNsYXNzIGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0U3R5bGVDbGFzcyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U3R5bGVDbGFzcyhTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgc3R5bGUgY2xhc3MgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI3NldFN0eWxlQ2xhc3MoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFN0eWxlQ2xhc3MoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5TZXQgdGhlIHN0eWxlIGNsYXNzIGZvciB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjc2V0U3R5bGVJZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U3R5bGVJZChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+U2V0IHRoZSBzdHlsZSBpZCBmb3IgdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRTdHlsZUlkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTdHlsZUlkKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIHN0eWxlIGlkIGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0U3R5bGVJZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U3R5bGVJZChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+U2V0cyB0aGUgc3R5bGUgaWQgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI3NldFN0eWxlSWQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFN0eWxlSWQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5TZXQgdGhlIHN0eWxlIGlkZW50aWZpZXIgZm9yIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRTdWZmaXgoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFN1ZmZpeChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+U2V0IHRoZSBwYXJhbWV0ZXIgbmFtZSBzdWZmaXggZm9yIHRoaXMgbWFwcGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc2V0VGFiaW5kZXgoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFRhYmluZGV4KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSB0YWJJbmRleCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sI3NldFRhYkluZGV4KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRUYWJJbmRleChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5TZXRzIHRoZSB0YWJJbmRleCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rVGFnLmh0bWwjc2V0VGFyZ2V0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRUYXJnZXQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPlNldCB0aGUgd2luZG93IHRhcmdldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwjc2V0VGFyZ2V0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRUYXJnZXQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlNldCB0aGUgd2luZG93IHRhcmdldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sI3NldFRhcmdldChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VGFyZ2V0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sIj5MaW5rMVRhZzwvQT4KPEREPlNldCB0aGUgd2luZG93IHRhcmdldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VUYWcuaHRtbCNzZXRUYXJnZXQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFRhcmdldChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VUYWcuaHRtbCI+QmFzZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3NldFRhcmdldChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VGFyZ2V0KFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwjc2V0VGFyZ2V0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRUYXJnZXQoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5TZXQgdGhlIHdpbmRvdyB0YXJnZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI3NldFRlbXBEaXIoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFRlbXBEaXIoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlNldCB0aGUgZGlyZWN0b3J5IHVzZWQgdG8gdGVtcG9yYXJpbHkgc3RvcmUgZmlsZXMgZm9yIE11bHRpcGFydFJlcXVlc3RIYW5kbGVyCiBpbXBsZW1lbnRhdGlvbnMgdGhhdCB3cml0ZSB0byB0aGUgZGlzawo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0luc2VydFRhZy5odG1sI3NldFRlbXBsYXRlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRUZW1wbGF0ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi50ZW1wbGF0ZS48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvSW5zZXJ0VGFnLmh0bWwiPkluc2VydFRhZzwvQT4KPEREPlNldCB0aGUgdGVtcGxhdGUgYXR0cmlidXRlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNzZXRUaXRsZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VGl0bGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlNldHMgdGhlIGFkdmlzb3J5IHRpdGxlIGF0dHJpYnV0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldFRvcFJ1bGUuaHRtbCI+PEI+U2V0VG9wUnVsZTwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0VG9wUnVsZS5odG1sIj5TZXRUb3BSdWxlPC9BPi48REQ+UnVsZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGNhbGxzIGEgbWV0aG9kIG9uIHRoZSB0b3AgKHBhcmVudCkKIG9iamVjdCwgcGFzc2luZyB0aGUgKHRvcC0xKSAoY2hpbGQpIG9iamVjdCBhcyBhbiBhcmd1bWVudC48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvU2V0VG9wUnVsZS5odG1sI1NldFRvcFJ1bGUob3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuRGlnZXN0ZXIsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5TZXRUb3BSdWxlKERpZ2VzdGVyLCBTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldFRvcFJ1bGUuaHRtbCI+U2V0VG9wUnVsZTwvQT4KPEREPkNvbnN0cnVjdCBhICJzZXQgcGFyZW50IiBydWxlIHdpdGggdGhlIHNwZWNpZmllZCBtZXRob2QgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldFRvcFJ1bGUuaHRtbCNTZXRUb3BSdWxlKG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLkRpZ2VzdGVyLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+U2V0VG9wUnVsZShEaWdlc3RlciwgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldFRvcFJ1bGUuaHRtbCI+U2V0VG9wUnVsZTwvQT4KPEREPkNvbnN0cnVjdCBhICJzZXQgcGFyZW50IiBydWxlIHdpdGggdGhlIHNwZWNpZmllZCBtZXRob2QgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sI3NldFRvU2NvcGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFRvU2NvcGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCI+RGVmaW5lVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwjc2V0VHJhbnNhY3Rpb24oYm9vbGVhbikiPjxCPnNldFRyYW5zYWN0aW9uKGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0luY2x1ZGVUYWcuaHRtbCI+SW5jbHVkZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3NldFRyYW5zYWN0aW9uKGJvb2xlYW4pIj48Qj5zZXRUcmFuc2FjdGlvbihib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI3NldFRyYW5zYWN0aW9uKGJvb2xlYW4pIj48Qj5zZXRUcmFuc2FjdGlvbihib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL1JlZGlyZWN0VGFnLmh0bWwiPlJlZGlyZWN0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwjc2V0VHJhbnNhY3Rpb25Jc29sYXRpb24oaW50KSI+PEI+c2V0VHJhbnNhY3Rpb25Jc29sYXRpb24oaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD5TZXQgdGhlIHRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbCBmb3IgdGhpcyBDb25uZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzZXRUeXBlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRUeXBlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5TZXQgdGhlIGZ1bGx5IHF1YWxpZmllZCBBY3Rpb24gY2xhc3MgbmFtZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbi5odG1sI3NldFR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFR5cGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm1CZWFuLmh0bWwiPkFjdGlvbkZvcm1CZWFuPC9BPgo8REQ+U2V0IHRoZSBKYXZhIGNsYXNzIG5hbWUgb2YgdGhpcyBhY3Rpb24gZm9ybSBiZWFuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNzZXRUeXBlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRUeXBlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5TZXQgdGhlIEphdmEgY2xhc3Mgb2Ygb3VyIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9EZWZpbmVUYWcuaHRtbCNzZXRUeXBlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRUeXBlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwiPkRlZmluZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI3NldFR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFR5cGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5TZXQgdGhlIEphdmEgY2xhc3Mgb2Ygb3VyIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI3NldFR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFR5cGUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI3NldFR5cGVNYXAoamF2YS51dGlsLk1hcCkiPjxCPnNldFR5cGVNYXAoTWFwKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCI+R2VuZXJpY0Nvbm5lY3Rpb248L0E+CjxERD4oSkRCQyAyLjApIFNldCB0aGUgdHlwZSBtYXAgZm9yIHRoaXMgY29ubmVjdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjc2V0VW5rbm93bihib29sZWFuKSI+PEI+c2V0VW5rbm93bihib29sZWFuKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlNldCB0aGUgdW5rbm93biBmbGFnIGZvciB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlUmVkaXJlY3RVUkxUYWcuaHRtbCNzZXRVcmwoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFVybChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlUmVkaXJlY3RVUkxUYWcuaHRtbCI+RW5jb2RlUmVkaXJlY3RVUkxUYWc8L0E+CjxERD5TZXQgdGhlIFVSTCB0byBiZSBlbmNvZGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VuY29kZVVSTFRhZy5odG1sI3NldFVybChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VXJsKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9FbmNvZGVVUkxUYWcuaHRtbCI+RW5jb2RlVVJMVGFnPC9BPgo8REQ+U2V0IHRoZSBVUkwgdG8gYmUgZW5jb2RlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCNzZXRVcmwoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFVybChTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjc2V0VXNlbWFwKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRVc2VtYXAoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjc2V0VXNlcihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VXNlcihTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPkNvbmRpdGlvbmFsVGFnQmFzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI3NldFVzZXIoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFVzZXIoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjc2V0VmFsaWRhdGUoYm9vbGVhbikiPjxCPnNldFZhbGlkYXRlKGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+U2V0IHRoZSB2YWxpZGF0ZSBmbGFnIGZvciB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3NldFZhbGlkYXRpbmcoYm9vbGVhbikiPjxCPnNldFZhbGlkYXRpbmcoYm9vbGVhbik8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5TZXQgdGhlIHZhbGlkYXRpbmcgcGFyc2VyIGZsYWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJFcXVhbHNUYWcuaHRtbCNzZXRWYWx1ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VmFsdWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0lmUGFyYW1ldGVyRXF1YWxzVGFnLmh0bWwiPklmUGFyYW1ldGVyRXF1YWxzVGFnPC9BPgo8REQ+U2V0IHRoZSBjb21wYXJpc29uIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL011bHRpYm94VGFnLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPlNldCB0aGUgc2VydmVyIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JhZGlvVGFnLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4KPEREPlNldCB0aGUgc2VydmVyIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Jlc2V0VGFnLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZXNldFRhZy5odG1sIj5SZXNldFRhZzwvQT4KPEREPlNldCB0aGUgbGFiZWwgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+U2V0IHRoZSBmaWVsZCB2YWx1ZSAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdEVxdWFsc1RhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOb3RFcXVhbHNUYWcuaHRtbCI+SWZQYXJhbWV0ZXJOb3RFcXVhbHNUYWc8L0E+CjxERD5TZXQgdGhlIGNvbXBhcmlzb24gdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU3VibWl0VGFnLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+U2V0IHRoZSBsYWJlbCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2hlY2tib3hUYWcuaHRtbCI+Q2hlY2tib3hUYWc8L0E+CjxERD5TZXQgdGhlIHNlcnZlciB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCNzZXRWYWx1ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VmFsdWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0J1dHRvblRhZy5odG1sIj5CdXR0b25UYWc8L0E+CjxERD5TZXQgdGhlIGxhYmVsIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NhbmNlbFRhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2FuY2VsVGFnLmh0bWwiPkNhbmNlbFRhZzwvQT4KPEREPlNldCB0aGUgbGFiZWwgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvT3B0aW9uVGFnLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+U2V0IHRoZSBzZXJ2ZXIgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQcm9wZXJ0eUVxdWFsc1RhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQcm9wZXJ0eUVxdWFsc1RhZy5odG1sIj5JZlByb3BlcnR5RXF1YWxzVGFnPC9BPgo8REQ+U2V0IHRoZSBtYXRjaGluZyB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwiPklmUHJvcGVydHlOb3RFcXVhbHNUYWc8L0E+CjxERD5TZXQgdGhlIG1hdGNoaW5nIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU2VsZWN0VGFnLmh0bWwiPlNlbGVjdFRhZzwvQT4KPEREPlNldCB0aGUgY29tcGFyaXNvbiB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sIj5IZWFkZXJUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sIj5EZWZpbmVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sIj5Db29raWVUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sIj5QYXJhbWV0ZXJUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VJbnB1dFRhZy5odG1sIj5CYXNlSW5wdXRUYWc8L0E+CjxERD5TZXQgdGhlIGZpZWxkIHZhbHVlIChpZiBhbnkpLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCNzZXRWYWx1ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VmFsdWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4KPEREPlNldCB0aGUgc2VydmVyIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2FuY2VsVGFnLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2FuY2VsVGFnLmh0bWwiPkNhbmNlbFRhZzwvQT4KPEREPlNldCB0aGUgbGFiZWwgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL011bHRpYm94VGFnLmh0bWwiPk11bHRpYm94VGFnPC9BPgo8REQ+U2V0IHRoZSBzZXJ2ZXIgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SZXNldFRhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jlc2V0VGFnLmh0bWwiPlJlc2V0VGFnPC9BPgo8REQ+U2V0IHRoZSBsYWJlbCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0J1dHRvblRhZy5odG1sI3NldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0J1dHRvblRhZy5odG1sIj5CdXR0b25UYWc8L0E+CjxERD5TZXQgdGhlIGxhYmVsIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU3VibWl0VGFnLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU3VibWl0VGFnLmh0bWwiPlN1Ym1pdFRhZzwvQT4KPEREPlNldCB0aGUgbGFiZWwgdmFsdWUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCNzZXRWYWx1ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VmFsdWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+U2V0IHRoZSBjb21wYXJpc29uIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvT3B0aW9uVGFnLmh0bWwiPk9wdGlvblRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2hlY2tib3hUYWcuaHRtbCNzZXRWYWx1ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VmFsdWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sIj5DaGVja2JveFRhZzwvQT4KPEREPlNldCB0aGUgc2VydmVyIHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL01hdGNoVGFnLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9NYXRjaFRhZy5odG1sIj5NYXRjaFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbXBhcmVUYWdCYXNlLmh0bWwjc2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFZhbHVlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmxvZ2ljLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db21wYXJlVGFnQmFzZS5odG1sIj5Db21wYXJlVGFnQmFzZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCNzZXRWYWx1ZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VmFsdWUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEVsZW1lbnQuaHRtbCI+TXVsdGlwYXJ0RWxlbWVudDwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjc2V0VnNwYWNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWc3BhY2UoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNzZXRXaWR0aChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0V2lkdGgoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9IdG1sVGFnLmh0bWwjc2V0WGh0bWwoYm9vbGVhbikiPjxCPnNldFhodG1sKGJvb2xlYW4pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0h0bWxUYWcuaHRtbCI+SHRtbFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sI3NpemUiPjxCPnNpemU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5Ib3cgbWFueSBhdmFpbGFibGUgb3B0aW9ucyBzaG91bGQgYmUgZGlzcGxheWVkIHdoZW4gdGhpcyBlbGVtZW50CiBpcyByZW5kZXJlZD8KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1NlbGVjdFRhZy5odG1sI3NpemUiPjxCPnNpemU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+SG93IG1hbnkgYXZhaWxhYmxlIG9wdGlvbnMgc2hvdWxkIGJlIGRpc3BsYXllZCB3aGVuIHRoaXMgZWxlbWVudAogaXMgcmVuZGVyZWQ/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwjc2l6ZSgpIj48Qj5zaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPgo8REQ+UmV0dXJuIHRoZSBudW1iZXIgb2YgZXJyb3JzIHJlY29yZGVkIGZvciBhbGwgcHJvcGVydGllcyAoaW5jbHVkaW5nCiBnbG9iYWwgZXJyb3JzKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCNzaXplKCkiPjxCPnNpemUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCI+RmFzdEhhc2hNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gdGhlIG51bWJlciBvZiBrZXktdmFsdWUgbWFwcGluZ3MgaW4gdGhpcyBtYXAuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0FycmF5U3RhY2suaHRtbCNzaXplKCkiPjxCPnNpemUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvQXJyYXlTdGFjay5odG1sIj5BcnJheVN0YWNrPC9BPgo8REQ+UmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgb24gdGhpcyBzdGFjay4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sI3NpemUoKSI+PEI+c2l6ZSgpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwiPkZhc3RBcnJheUxpc3Q8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGlzIGxpc3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwjc2l6ZSgpIj48Qj5zaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwiPkZhc3RUcmVlTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIHRoZSBudW1iZXIgb2Yga2V5LXZhbHVlIG1hcHBpbmdzIGluIHRoaXMgbWFwLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sI3NpemUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNpemUoU3RyaW5nKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+CjxERD5SZXR1cm4gdGhlIG51bWJlciBvZiBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwiPjxCPlNpemVUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1NpemVUYWcuaHRtbCI+U2l6ZVRhZzwvQT4uPEREPkRlZmluZSBhIHNjcmlwdGluZyB2YXJpYWJsZSB0aGF0IHdpbGwgY29udGFpbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzCiBmb3VuZCBpbiBhIHNwZWNpZmllZCBhcnJheSwgQ29sbGVjdGlvbiwgb3IgTWFwLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGFnLmh0bWwjU2l6ZVRhZygpIj48Qj5TaXplVGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU2l6ZVRhZy5odG1sIj5TaXplVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGVpLmh0bWwiPjxCPlNpemVUZWk8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1NpemVUZWkuaHRtbCI+U2l6ZVRlaTwvQT4uPEREPkltcGxlbWVudGF0aW9uIG9mIDxjb2RlPlRhZ0V4dHJhSW5mbzwvY29kZT4gZm9yIHRoZSA8Yj5zaXplPC9iPgogdGFnLCBpZGVudGlmeWluZyB0aGUgc2NyaXB0aW5nIG9iamVjdChzKSB0byBiZSBtYWRlIHZpc2libGUuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1NpemVUZWkuaHRtbCNTaXplVGVpKCkiPjxCPlNpemVUZWkoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TaXplVGVpLmh0bWwiPlNpemVUZWk8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0Nvbm5lY3Rpb24uaHRtbCNzb3VyY2UiPjxCPnNvdXJjZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sIj5HZW5lcmljQ29ubmVjdGlvbjwvQT4KPEREPlRoZSBHZW5lcmljRGF0YVNvdXJjZSB0aGF0IG93bnMgdGhpcyBjb25uZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljQ29ubmVjdGlvbi5odG1sI1NRTEVYQ0VQVElPTl9DTE9TRUQiPjxCPlNRTEVYQ0VQVElPTl9DTE9TRUQ8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNDb25uZWN0aW9uLmh0bWwiPkdlbmVyaWNDb25uZWN0aW9uPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjU1FMRVhDRVBUSU9OX0dFVENPTk5FQ1RJT04iPjxCPlNRTEVYQ0VQVElPTl9HRVRDT05ORUNUSU9OPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sIj5HZW5lcmljRGF0YVNvdXJjZTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjc3JjIj48Qj5zcmM8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+VGhlIGltYWdlIHNvdXJjZSBVUkkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sI3NyYyI+PEI+c3JjPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1hZ2VUYWcuaHRtbCI+SW1hZ2VUYWc8L0E+CjxERD5UaGUgVVJMIG9mIHRoaXMgaW1hZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCNzcmMoKSI+PEI+c3JjKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlJldHVybiB0aGUgYmFzZSBzb3VyY2UgVVJMIHRoYXQgd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgPGNvZGU+c3JjPC9jb2RlPgogcHJvcGVydHkgZm9yIHRoaXMgZ2VuZXJhdGVkIGVsZW1lbnQsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZXJlIGlzCiBubyBzdWNoIFVSTC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjc3JjKCkiPjxCPnNyYygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwiPkltYWdlVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSBiYXNlIHNvdXJjZSBVUkwgdGhhdCB3aWxsIGJlIHJlbmRlcmVkIGluIHRoZSA8Y29kZT5zcmM8L2NvZGU+CiBwcm9wZXJ0eSBmb3IgdGhpcyBnZW5lcmF0ZWQgZWxlbWVudCwgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlcmUgaXMKIG5vIHN1Y2ggVVJMLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwjc3JjS2V5Ij48Qj5zcmNLZXk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCI+SW1nVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGtleSB1bmRlciB3aGljaCB3ZSBzaG91bGQgbG9vayB1cCB0aGUKIDxjb2RlPnNyYzwvY29kZT4gYXR0cmlidXRlIGZvciB0aGlzIGdlbmVyYXRlZCB0YWcsIGlmIGFueS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltYWdlVGFnLmh0bWwjc3JjS2V5Ij48Qj5zcmNLZXk8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWFnZVRhZy5odG1sIj5JbWFnZVRhZzwvQT4KPEREPlRoZSBtZXNzYWdlIHJlc291cmNlcyBrZXkgZm9yIHRoZSBVUkwgb2YgdGhpcyBpbWFnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjc3RhY2siPjxCPnN0YWNrPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5UaGUgb2JqZWN0IHN0YWNrIGJlaW5nIGNvbnN0cnVjdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCNzdGFydERvY3VtZW50KCkiPjxCPnN0YXJ0RG9jdW1lbnQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5kaWdlc3Rlci48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sIj5EaWdlc3RlcjwvQT4KPEREPlByb2Nlc3Mgbm90aWZpY2F0aW9uIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50IGJlaW5nIHJlYWNoZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI3N0YXJ0ZWQiPjxCPnN0YXJ0ZWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPkhhcyB0aGlzIHRhZyBpbnN0YW5jZSBiZWVuIHN0YXJ0ZWQ/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3N0YXJ0RWxlbWVudChqYXZhLmxhbmcuU3RyaW5nLCBvcmcueG1sLnNheC5BdHRyaWJ1dGVMaXN0KSI+PEI+c3RhcnRFbGVtZW50KFN0cmluZywgQXR0cmlidXRlTGlzdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5Qcm9jZXNzIG5vdGlmaWNhdGlvbiBvZiB0aGUgc3RhcnQgb2YgYW4gWE1MIGVsZW1lbnQgYmVpbmcgcmVhY2hlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9Db21wYXJlVGFnQmFzZS5odG1sI1NUUklOR19DT01QQVJFIj48Qj5TVFJJTkdfQ09NUEFSRTwvQj48L0E+IC0gClN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbXBhcmVUYWdCYXNlLmh0bWwiPkNvbXBhcmVUYWdCYXNlPC9BPgo8REQ+V2Ugd2lsbCBkbyBhIFN0cmluZyBjb21wYXJpc29uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9Db252ZXJ0VXRpbHMuaHRtbCNzdHJpbmdDbGFzcyI+PEI+c3RyaW5nQ2xhc3M8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0NvbnZlcnRVdGlscy5odG1sIj5Db252ZXJ0VXRpbHM8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtUaGUgQ2xhc3Mgb2JqZWN0IGZvciBqYXZhLmxhbmcuU3RyaW5nLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwiPjxCPlN0cnV0c1RhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGFnLmh0bWwiPlN0cnV0c1RhZzwvQT4uPEREPkRlZmluZSBhIHNjcmlwdGluZyB2YXJpYWJsZSB0aGF0IGV4cG9zZXMgdGhlIHJlcXVlc3RlZCBTdHJ1dHMKIGludGVybmFsIGNvbmZpZ3VyYXRvbiBvYmplY3QuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1N0cnV0c1RhZy5odG1sI1N0cnV0c1RhZygpIj48Qj5TdHJ1dHNUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUYWcuaHRtbCI+U3RydXRzVGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUZWkuaHRtbCI+PEI+U3RydXRzVGVpPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUZWkuaHRtbCI+U3RydXRzVGVpPC9BPi48REQ+SW1wbGVtZW50YXRpb24gb2YgPGNvZGU+VGFnRXh0cmFJbmZvPC9jb2RlPiBmb3IgdGhlIDxiPnN0cnV0czwvYj4KIHRhZywgaWRlbnRpZnlpbmcgdGhlIHNjcmlwdGluZyBvYmplY3QocykgdG8gYmUgbWFkZSB2aXNpYmxlLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9TdHJ1dHNUZWkuaHRtbCNTdHJ1dHNUZWkoKSI+PEI+U3RydXRzVGVpKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vU3RydXRzVGVpLmh0bWwiPlN0cnV0c1RlaTwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNzdHlsZSI+PEI+c3R5bGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlRoZSBzdHlsZSBhdHRyaWJ1dGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc3R5bGUiPjxCPnN0eWxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlN0eWxlIGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggY29tcG9uZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNzdHlsZSI+PEI+c3R5bGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlN0eWxlIGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggY29tcG9uZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI3N0eWxlIj48Qj5zdHlsZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlRoZSBzdHlsZSBhdHRyaWJ1dGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNzdHlsZUNsYXNzIj48Qj5zdHlsZUNsYXNzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgc3R5bGUgY2xhc3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc3R5bGVDbGFzcyI+PEI+c3R5bGVDbGFzczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5OYW1lZCBTdHlsZSBjbGFzcyBhc3NvY2lhdGVkIHdpdGggY29tcG9uZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCNzdHlsZUNsYXNzIj48Qj5zdHlsZUNsYXNzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5OYW1lZCBTdHlsZSBjbGFzcyBhc3NvY2lhdGVkIHdpdGggY29tcG9uZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI3N0eWxlQ2xhc3MiPjxCPnN0eWxlQ2xhc3M8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgc3R5bGUgY2xhc3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCNzdHlsZUlkIj48Qj5zdHlsZUlkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgaWRlbnRpZmllciBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUhhbmRsZXJUYWcuaHRtbCNzdHlsZUlkIj48Qj5zdHlsZUlkPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPklkZW50aWZpZXIgYXNzb2NpYXRlZCB3aXRoIGNvbXBvbmVudC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjc3R5bGVJZCI+PEI+c3R5bGVJZDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+SWRlbnRpZmllciBhc3NvY2lhdGVkIHdpdGggY29tcG9uZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sI3N0eWxlSWQiPjxCPnN0eWxlSWQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgaWRlbnRpZmllciBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YWcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCNzdWJMaXN0KGludCwgaW50KSI+PEI+c3ViTGlzdChpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiBhIHZpZXcgb2YgdGhlIHBvcnRpb24gb2YgdGhpcyBsaXN0IGJldHdlZW4gZnJvbUluZGV4CiAoaW5jbHVzaXZlKSBhbmQgdG9JbmRleCAoZXhjbHVzaXZlKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCNzdWJNYXAoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCkiPjxCPnN1Yk1hcChPYmplY3QsIE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwiPkZhc3RUcmVlTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIGEgdmlldyBvZiB0aGUgcG9ydGlvbiBvZiB0aGlzIG1hcCB3aG9zZSBrZXlzIGFyZSBpbiB0aGUKIHJhbmdlIGZyb21LZXkgKGluY2x1c2l2ZSkgdG8gdG9LZXkgKGV4Y2x1c2l2ZSkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvU3VibWl0VGFnLmh0bWwiPjxCPlN1Ym1pdFRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPi48REQ+VGFnIGZvciBpbnB1dCBmaWVsZHMgb2YgdHlwZSAic3VibWl0Ii48RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU3VibWl0VGFnLmh0bWwiPjxCPlN1Ym1pdFRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU3VibWl0VGFnLmh0bWwiPlN1Ym1pdFRhZzwvQT4uPEREPlRhZyBmb3IgaW5wdXQgZmllbGRzIG9mIHR5cGUgInN1Ym1pdCIuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TdWJtaXRUYWcuaHRtbCNTdWJtaXRUYWcoKSI+PEI+U3VibWl0VGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+Jm5ic3A7CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TdWJtaXRUYWcuaHRtbCNTdWJtaXRUYWcoKSI+PEI+U3VibWl0VGFnKCk8L0I+PC9BPiAtIApDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvU3VibWl0VGFnLmh0bWwiPlN1Ym1pdFRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCNzdWZmaXgiPjxCPnN1ZmZpeDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+VGhlIHBhcmFtZXRlciBuYW1lIHN1ZmZpeCB1c2VkIHRvIHNlbGVjdCBwYXJhbWV0ZXJzIGZvciB0aGlzIGFjdGlvbi4KPC9ETD4KPEhSPgo8QSBOQU1FPSJfVF8iPjwhLS0gLS0+PC9BPjxIMj4KPEI+VDwvQj48L0gyPgo8REw+CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSGFuZGxlclRhZy5odG1sI3RhYmluZGV4Ij48Qj50YWJpbmRleDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwiPkJhc2VIYW5kbGVyVGFnPC9BPgo8REQ+VGFiIGluZGV4IHZhbHVlLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VIYW5kbGVyVGFnLmh0bWwjdGFiSW5kZXgiPjxCPnRhYkluZGV4PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CYXNlSGFuZGxlclRhZy5odG1sIj5CYXNlSGFuZGxlclRhZzwvQT4KPEREPlRhYiBpbmRleCB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCN0YWlsTWFwKGphdmEubGFuZy5PYmplY3QpIj48Qj50YWlsTWFwKE9iamVjdCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RUcmVlTWFwLmh0bWwiPkZhc3RUcmVlTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIGEgdmlldyBvZiB0aGUgcG9ydGlvbiBvZiB0aGlzIG1hcCB3aG9zZSBrZXlzIGFyZSBncmVhdGVyIHRoYW4KIG9yIGVxdWFsIHRvIHRoZSBzcGVjaWZpZWQga2V5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0xpbmtUYWcuaHRtbCN0YXJnZXQiPjxCPnRhcmdldDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+VGhlIHdpbmRvdyB0YXJnZXQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI3RhcmdldCI+PEI+dGFyZ2V0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9Gb3JtVGFnLmh0bWwiPkZvcm1UYWc8L0E+CjxERD5UaGUgd2luZG93IHRhcmdldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sI3RhcmdldCI+PEI+dGFyZ2V0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9MaW5rMVRhZy5odG1sIj5MaW5rMVRhZzwvQT4KPEREPlRoZSB3aW5kb3cgdGFyZ2V0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZVRhZy5odG1sI3RhcmdldCI+PEI+dGFyZ2V0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZVRhZy5odG1sIj5CYXNlVGFnPC9BPgo8REQ+VGhlIHRhcmdldCB3aW5kb3cgZm9yIHRoaXMgYmFzZSByZWZlcmVuY2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwjdGFyZ2V0Ij48Qj50YXJnZXQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9MaW5rVGFnLmh0bWwiPkxpbmtUYWc8L0E+CjxERD5UaGUgd2luZG93IHRhcmdldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCN0YXJnZXQiPjxCPnRhcmdldDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlRoZSB3aW5kb3cgdGFyZ2V0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCN0ZW1wRGlyIj48Qj50ZW1wRGlyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPkFjdGlvblNlcnZsZXQ8L0E+CjxERD5UaGUgZGlyZWN0b3J5IHVzZWQgdG8gc3RvcmUgdGVtcG9yYXJ5IGZpbGVzIGZvciB0aGUgRGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyCiBtdWx0aXBhcnQgaW1wbGVtZW50YXRpb24KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sI3RlbXBEaXIiPjxCPnRlbXBEaXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51cGxvYWQuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwiPk11bHRpcGFydEl0ZXJhdG9yPC9BPgo8REQ+VGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gc3RvcmUgZmlsZXMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCN0ZW1wRGlyIj48Qj50ZW1wRGlyPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+RGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPgo8REQ+VGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi90ZW1wbGF0ZS9JbnNlcnRUYWcuaHRtbCN0ZW1wbGF0ZSI+PEI+dGVtcGxhdGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL3RlbXBsYXRlL0luc2VydFRhZy5odG1sIj5JbnNlcnRUYWc8L0E+CjxERD5UaGUgVVJJIG9mIHRoZSB0ZW1wbGF0ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwjdGV4dCI+PEI+dGV4dDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1JhZGlvVGFnLmh0bWwiPlJhZGlvVGFnPC9BPgo8REQ+VGhlIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NhbmNlbFRhZy5odG1sI3RleHQiPjxCPnRleHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DYW5jZWxUYWcuaHRtbCI+Q2FuY2VsVGFnPC9BPgo8REQ+VGhlIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jlc2V0VGFnLmh0bWwjdGV4dCI+PEI+dGV4dDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jlc2V0VGFnLmh0bWwiPlJlc2V0VGFnPC9BPgo8REQ+VGhlIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0J1dHRvblRhZy5odG1sI3RleHQiPjxCPnRleHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CdXR0b25UYWcuaHRtbCI+QnV0dG9uVGFnPC9BPgo8REQ+VGhlIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1N1Ym1pdFRhZy5odG1sI3RleHQiPjxCPnRleHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+VGhlIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCN0ZXh0Ij48Qj50ZXh0PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sIj5MaW5rVGFnPC9BPgo8REQ+VGhlIGJvZHkgY29udGVudCBvZiB0aGlzIHRhZyAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL09wdGlvblRhZy5odG1sI3RleHQiPjxCPnRleHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+VGhlIG1lc3NhZ2UgdGV4dCB0byBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgZm9yIHRoaXMgdGFnIChpZiBhbnkpCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sI3RleHQiPjxCPnRleHQ8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9DaGVja2JveFRhZy5odG1sIj5DaGVja2JveFRhZzwvQT4KPEREPlRoZSBib2R5IGNvbnRlbnQgb2YgdGhpcyB0YWcgKGlmIGFueSkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCN0ZXh0KCkiPjxCPnRleHQoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+UmV0dXJuIHRoZSB0ZXh0IHRvIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlciBmb3IgdGhpcyBvcHRpb24gKGlmIGFueSkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvVGV4dGFyZWFUYWcuaHRtbCI+PEI+VGV4dGFyZWFUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvVGV4dGFyZWFUYWcuaHRtbCI+VGV4dGFyZWFUYWc8L0E+LjxERD5DdXN0b20gdGFnIGZvciBpbnB1dCBmaWVsZHMgb2YgdHlwZSAidGV4dGFyZWEiLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9UZXh0YXJlYVRhZy5odG1sIj48Qj5UZXh0YXJlYVRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvVGV4dGFyZWFUYWcuaHRtbCI+VGV4dGFyZWFUYWc8L0E+LjxERD5DdXN0b20gdGFnIGZvciBpbnB1dCBmaWVsZHMgb2YgdHlwZSAidGV4dGFyZWEiLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvVGV4dGFyZWFUYWcuaHRtbCNUZXh0YXJlYVRhZygpIj48Qj5UZXh0YXJlYVRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvVGV4dGFyZWFUYWcuaHRtbCI+VGV4dGFyZWFUYWc8L0E+CjxERD4mbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1RleHRhcmVhVGFnLmh0bWwjVGV4dGFyZWFUYWcoKSI+PEI+VGV4dGFyZWFUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9UZXh0YXJlYVRhZy5odG1sIj5UZXh0YXJlYVRhZzwvQT4KPEREPiZuYnNwOwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL0Rpc2tNdWx0aXBhcnRSZXF1ZXN0SGFuZGxlci5odG1sI3RleHRFbGVtZW50cyI+PEI+dGV4dEVsZW1lbnRzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9EaXNrTXVsdGlwYXJ0UmVxdWVzdEhhbmRsZXIuaHRtbCI+RGlza011bHRpcGFydFJlcXVlc3RIYW5kbGVyPC9BPgo8REQ+QSBIYXNodGFibGUgcmVwcmVzZW50aW5nIHRoZSBmb3JtIHRleHQgaW5wdXQgbmFtZXMgYW5kIHZhbHVlcwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1RleHRUYWcuaHRtbCI+PEI+VGV4dFRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9UZXh0VGFnLmh0bWwiPlRleHRUYWc8L0E+LjxERD5DdXN0b20gdGFnIGZvciBpbnB1dCBmaWVsZHMgb2YgdHlwZSAidGV4dCIuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1RleHRUYWcuaHRtbCI+PEI+VGV4dFRhZzwvQj48L0E+IC0gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvVGV4dFRhZy5odG1sIj5UZXh0VGFnPC9BPi48REQ+Q3VzdG9tIHRhZyBmb3IgaW5wdXQgZmllbGRzIG9mIHR5cGUgInRleHQiLjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvVGV4dFRhZy5odG1sI1RleHRUYWcoKSI+PEI+VGV4dFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvVGV4dFRhZy5odG1sIj5UZXh0VGFnPC9BPgo8REQ+Q29uc3RydWN0IGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgdGFnLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvVGV4dFRhZy5odG1sI1RleHRUYWcoKSI+PEI+VGV4dFRhZygpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1RleHRUYWcuaHRtbCI+VGV4dFRhZzwvQT4KPEREPkNvbnN0cnVjdCBhIG5ldyBpbnN0YW5jZSBvZiB0aGlzIHRhZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VIYW5kbGVyVGFnLmh0bWwjdGl0bGUiPjxCPnRpdGxlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQmFzZUhhbmRsZXJUYWcuaHRtbCI+QmFzZUhhbmRsZXJUYWc8L0E+CjxERD5UaGUgYWR2aXNvcnkgdGl0bGUgb2YgdGhpcyBlbGVtZW50Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjdG9BcnJheSgpIj48Qj50b0FycmF5KCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiBhbiBhcnJheSBjb250YWluaW5nIGFsbCBvZiB0aGUgZWxlbWVudHMgaW4gdGhpcyBsaXN0IGluIHRoZQogY29ycmVjdCBvcmRlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEFycmF5TGlzdC5odG1sI3RvQXJyYXkoamF2YS5sYW5nLk9iamVjdFtdKSI+PEI+dG9BcnJheShPYmplY3RbXSk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1JldHVybiBhbiBhcnJheSBjb250YWluaW5nIGFsbCBvZiB0aGUgZWxlbWVudHMgaW4gdGhpcyBsaXN0IGluIHRoZQogY29ycmVjdCBvcmRlci4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb24uaHRtbCN0b0hleChieXRlW10pIj48Qj50b0hleChieXRlW10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwiPkFjdGlvbjwvQT4KPEREPkNvbnZlcnQgYSBieXRlIGFycmF5IHRvIGEgU3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cyBhbmQgcmV0dXJuIGl0Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ29uc3RhbnRzLmh0bWwjVE9LRU5fS0VZIj48Qj5UT0tFTl9LRVk8L0I+PC9BPiAtIApTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ29uc3RhbnRzLmh0bWwiPkNvbnN0YW50czwvQT4KPEREPlRoZSBwcm9wZXJ0eSB1bmRlciB3aGljaCBhIHRyYW5zYWN0aW9uIHRva2VuIGlzIHJlcG9ydGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwjdG9TY29wZSI+PEI+dG9TY29wZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sIj5EZWZpbmVUYWc8L0E+CjxERD5UaGUgc2NvcGUgd2l0aGluIHdoaWNoIHRoZSBuZXdseSBkZWZpbmVkIGJlYW4gd2lsbCBiZSBjcmVhdGQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI3RvU3RyaW5nKCkiPjxCPnRvU3RyaW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5SZXR1cm4gYSBTdHJpbmcgdmVyc2lvbiBvZiB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW4uaHRtbCN0b1N0cmluZygpIj48Qj50b1N0cmluZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybUJlYW4uaHRtbCI+QWN0aW9uRm9ybUJlYW48L0E+CjxERD5SZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9yd2FyZC5odG1sI3RvU3RyaW5nKCkiPjxCPnRvU3RyaW5nKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3J3YXJkLmh0bWwiPkFjdGlvbkZvcndhcmQ8L0E+CjxERD5SZXR1cm4gYSBTdHJpbmcgdmVyc2lvbiBvZiB0aGlzIG1hcHBpbmcuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50Lmh0bWwjdG9TdHJpbmcoKSI+PEI+dG9TdHJpbmcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIudGVtcGxhdGUudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvdGVtcGxhdGUvdXRpbC9Db250ZW50Lmh0bWwiPkNvbnRlbnQ8L0E+CjxERD5SZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb250ZW50CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCN0b1N0cmluZygpIj48Qj50b1N0cmluZygpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwiPkZhc3RBcnJheUxpc3Q8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gYSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjdG9TdHJpbmcoKSI+PEI+dG9TdHJpbmcoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD5SZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBjb21wb25lbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sI3RvdGFsTGVuZ3RoIj48Qj50b3RhbExlbmd0aDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnVwbG9hZC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91cGxvYWQvQnVmZmVyZWRNdWx0aXBhcnRJbnB1dFN0cmVhbS5odG1sIj5CdWZmZXJlZE11bHRpcGFydElucHV0U3RyZWFtPC9BPgo8REQ+VGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyByZWFkIHNvIGZhcgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXBsb2FkL011bHRpcGFydEl0ZXJhdG9yLmh0bWwjdG90YWxMZW5ndGgiPjxCPnRvdGFsTGVuZ3RoPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRJdGVyYXRvci5odG1sIj5NdWx0aXBhcnRJdGVyYXRvcjwvQT4KPEREPlRoZSB0b3RhbCBieXRlcyByZWFkIGZyb20gdGhpcyByZXF1ZXN0CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9JbmNsdWRlVGFnLmh0bWwjdHJhbnNhY3Rpb24iPjxCPnRyYW5zYWN0aW9uPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmJlYW4uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vSW5jbHVkZVRhZy5odG1sIj5JbmNsdWRlVGFnPC9BPgo8REQ+SW5jbHVkZSB0cmFuc2FjdGlvbiB0b2tlbiAoaWYgYW55KSBpbiB0aGUgaHlwZXJsaW5rPwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTGlua1RhZy5odG1sI3RyYW5zYWN0aW9uIj48Qj50cmFuc2FjdGlvbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0xpbmtUYWcuaHRtbCI+TGlua1RhZzwvQT4KPEREPkluY2x1ZGUgdHJhbnNhY3Rpb24gdG9rZW4gKGlmIGFueSkgaW4gdGhlIGh5cGVybGluaz8KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9SZWRpcmVjdFRhZy5odG1sI3RyYW5zYWN0aW9uIj48Qj50cmFuc2FjdGlvbjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvUmVkaXJlY3RUYWcuaHRtbCI+UmVkaXJlY3RUYWc8L0E+CjxERD5JbmNsdWRlIG91ciB0cmFuc2FjdGlvbiBjb250cm9sIHRva2VuPwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbi5odG1sI1RSQU5TQUNUSU9OX1RPS0VOX0tFWSI+PEI+VFJBTlNBQ1RJT05fVE9LRU5fS0VZPC9CPjwvQT4gLSAKU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmh0bWwiPkFjdGlvbjwvQT4KPEREPlRoZSBzZXNzaW9uIGF0dHJpYnV0ZXMga2V5IHVuZGVyIHdoaWNoIG91ciB0cmFuc2FjdGlvbiB0b2tlbiBpcwogc3RvcmVkLCBpZiBpdCBpcyB1c2VkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0QXJyYXlMaXN0Lmh0bWwjdHJpbVRvU2l6ZSgpIj48Qj50cmltVG9TaXplKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RBcnJheUxpc3QuaHRtbCI+RmFzdEFycmF5TGlzdDwvQT4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwO1RyaW0gdGhlIGNhcGFjaXR5IG9mIHRoaXMgPGNvZGU+QXJyYXlMaXN0PC9jb2RlPiBpbnN0YW5jZSB0byBiZSB0aGUKIGxpc3QncyBjdXJyZW50IHNpemUuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sI3R5cGUiPjxCPnR5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmcuaHRtbCI+QWN0aW9uTWFwcGluZzwvQT4KPEREPlRoZSBmdWxseSBxdWFsaWZpZWQgSmF2YSBjbGFzcyBuYW1lIG9mIHRoZSA8Y29kZT5BY3Rpb248L2NvZGU+CiBpbXBsZW1lbnRhdGlvbiBjbGFzcyB0byBiZSB1c2VkIHRvIHByb2Nlc3MgcmVxdWVzdHMgZm9yIHRoaXMgbWFwcGluZy4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtQmVhbi5odG1sI3R5cGUiPjxCPnR5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm1CZWFuLmh0bWwiPkFjdGlvbkZvcm1CZWFuPC9BPgo8REQ+VGhlIEphdmEgY2xhc3MgbmFtZSBvZiB0aGlzIGFjdGlvbiBmb3JtIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRm9ybVRhZy5odG1sI3R5cGUiPjxCPnR5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Zvcm1UYWcuaHRtbCI+Rm9ybVRhZzwvQT4KPEREPlRoZSBKYXZhIGNsYXNzIG5hbWUgb2YgdGhlIGJlYW4gdG8gYmUgY3JlYXRlZCwgaWYgbmVjZXNzYXJ5Lgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VGaWVsZFRhZy5odG1sI3R5cGUiPjxCPnR5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VGaWVsZFRhZy5odG1sIj5CYXNlRmllbGRUYWc8L0E+CjxERD5UaGUgdHlwZSBvZiBpbnB1dCBmaWVsZCByZXByZXNlbnRlZCBieSB0aGlzIHRhZyAodGV4dCwgcGFzc3dvcmQsIG9yCiBoaWRkZW4pLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vRGVmaW5lVGFnLmh0bWwjdHlwZSI+PEI+dHlwZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sIj5EZWZpbmVUYWc8L0E+CjxERD5UaGUgZnVsbHkgcXVhbGlmaWVkIEphdmEgY2xhc3MgbmFtZSBvZiB0aGUgdmFsdWUgdG8gYmUgZXhwb3NlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Jhc2VGaWVsZFRhZy5odG1sI3R5cGUiPjxCPnR5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlRmllbGRUYWcuaHRtbCI+QmFzZUZpZWxkVGFnPC9BPgo8REQ+VGhlIHR5cGUgb2YgaW5wdXQgZmllbGQgcmVwcmVzZW50ZWQgYnkgdGhpcyB0YWcgKHRleHQsIHBhc3N3b3JkLCBvcgogaGlkZGVuKS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0Zvcm1UYWcuaHRtbCN0eXBlIj48Qj50eXBlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvRm9ybVRhZy5odG1sIj5Gb3JtVGFnPC9BPgo8REQ+VGhlIEphdmEgY2xhc3MgbmFtZSBvZiB0aGUgYmVhbiB0byBiZSBjcmVhdGVkLCBpZiBuZWNlc3NhcnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvSXRlcmF0ZVRhZy5odG1sI3R5cGUiPjxCPnR5cGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0l0ZXJhdGVUYWcuaHRtbCI+SXRlcmF0ZVRhZzwvQT4KPEREPlRoZSBKYXZhIGNsYXNzIG9mIGVhY2ggZXhwb3NlZCBlbGVtZW50IG9mIHRoZSBjb2xsZWN0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9EaXNwYXRjaEFjdGlvbi5odG1sI3R5cGVzIj48Qj50eXBlczwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbnMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9ucy9EaXNwYXRjaEFjdGlvbi5odG1sIj5EaXNwYXRjaEFjdGlvbjwvQT4KPEREPlRoZSBzZXQgb2YgYXJndW1lbnQgdHlwZSBjbGFzc2VzIGZvciB0aGUgcmVmbGVjdGVkIG1ldGhvZCBjYWxsLgo8L0RMPgo8SFI+CjxBIE5BTUU9Il9VXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5VPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjdW5rbm93biI+PEI+dW5rbm93bjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZy5odG1sIj5BY3Rpb25NYXBwaW5nPC9BPgo8REQ+U2hvdWxkIHRoaXMgYWN0aW9uIGJlIHRoZSBkZWZhdWx0IGZvciB0aGlzIGFwcGxpY2F0aW9uPwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbk1hcHBpbmdzLmh0bWwjdW5rbm93biI+PEI+dW5rbm93bjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uTWFwcGluZ3MuaHRtbCI+QWN0aW9uTWFwcGluZ3M8L0E+CjxERD5UaGUgQWN0aW9uTWFwcGluZyB0aGF0IHNob3VsZCBoYW5kbGUgdW5rbm93biByZXF1ZXN0IHBhdGhzLCBpZiBhbnkuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9kaWdlc3Rlci9EaWdlc3Rlci5odG1sI3VucGFyc2VkRW50aXR5RGVjbChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+dW5wYXJzZWRFbnRpdHlEZWNsKFN0cmluZywgU3RyaW5nLCBTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5SZWNlaXZlIG5vdGlmaWNhdGlvbiBvZiBhbiB1bnBhcnNlZCBlbnRpdHkgZGVjbGFyYXRpb24gZXZlbnQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlUmVkaXJlY3RVUkxUYWcuaHRtbCN1cmwiPjxCPnVybDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlUmVkaXJlY3RVUkxUYWcuaHRtbCI+RW5jb2RlUmVkaXJlY3RVUkxUYWc8L0E+CjxERD5UaGUgVVJMIHRvIGJlIGVuY29kZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRW5jb2RlVVJMVGFnLmh0bWwjdXJsIj48Qj51cmw8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0VuY29kZVVSTFRhZy5odG1sIj5FbmNvZGVVUkxUYWc8L0E+CjxERD5UaGUgVVJMIHRvIGJlIGVuY29kZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjdXJsIj48Qj51cmw8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD5UaGUgSkRCQyBVUkwgZm9yIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIHRvIGJlIG9wZW5lZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI3VybChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+dXJsKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvSW1nVGFnLmh0bWwiPkltZ1RhZzwvQT4KPEREPlJldHVybiB0aGUgc3BlY2lmaWVkIHNyYyBVUkwsIG1vZGlmaWVkIGFzIG5lY2Vzc2FyeSB3aXRoIG9wdGlvbmFsCiByZXF1ZXN0IHBhcmFtZXRlcnMuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwjdXNlQ291bnQiPjxCPnVzZUNvdW50PC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0dlbmVyaWNEYXRhU291cmNlLmh0bWwiPkdlbmVyaWNEYXRhU291cmNlPC9BPgo8REQ+VGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyBjcmVhdGVkIGJ5IHRoaXMgZGF0YSBzb3VyY2UgdGhhdCBhcmUKIGN1cnJlbnRseSBpbiB1c2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCN1c2VtYXAiPjxCPnVzZW1hcDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5DbGllbnQtc2lkZSBpbWFnZSBtYXAgZGVjbGFyYXRpb24uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwjdXNlciI+PEI+dXNlcjwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29uZGl0aW9uYWxUYWdCYXNlLmh0bWwiPkNvbmRpdGlvbmFsVGFnQmFzZTwvQT4KPEREPlRoZSB1c2VyIHByaW5jaXBhbCBuYW1lIHRvIGJlIGNoZWNrZWQgZm9yLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9HZW5lcmljRGF0YVNvdXJjZS5odG1sI3VzZXIiPjxCPnVzZXI8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvR2VuZXJpY0RhdGFTb3VyY2UuaHRtbCI+R2VuZXJpY0RhdGFTb3VyY2U8L0E+CjxERD5UaGUgZGF0YWJhc2UgdXNlcm5hbWUgZm9yIHVzZSBpbiBlc3RhYmxpc2hpbmcgYSBjb25uZWN0aW9uLgo8L0RMPgo8SFI+CjxBIE5BTUU9Il9WXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5WPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwjdmFsaWRhdGUiPjxCPnZhbGlkYXRlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25NYXBwaW5nLmh0bWwiPkFjdGlvbk1hcHBpbmc8L0E+CjxERD5TaG91bGQgdGhlIHZhbGlkYXRlKCkgbWV0aG9kIG9mIG91ciBmb3JtIGJlYW4gYmUgY2FsbGVkPwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCN2YWxpZGF0ZSI+PEI+dmFsaWRhdGU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPkFyZSB3ZSB1c2luZyB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gZmlsZSBmb3JtYXQ/CjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sI3ZhbGlkYXRlKCkiPjxCPnZhbGlkYXRlKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25Gb3JtLmh0bWwiPkFjdGlvbkZvcm08L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5UaGlzIGlzIHRoZSBTdHJ1dHMgMC41IHZlcnNpb24gb2YgdmFsaWRhdGlvbiAtLSB1c2UgdGhlCiAgdmFsaWRhdGUoQWN0aW9uTWFwcGluZyxIdHRwU2VydmxldFJlcXVlc3QpIG1ldGhvZCBpbnN0ZWFkPC9JPgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1ZhbGlkYXRpbmdBY3Rpb25Gb3JtLmh0bWwjdmFsaWRhdGUoKSI+PEI+dmFsaWRhdGUoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1ZhbGlkYXRpbmdBY3Rpb25Gb3JtLmh0bWwiPlZhbGlkYXRpbmdBY3Rpb25Gb3JtPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UGVyZm9ybSB2YWxpZGF0aW9ucyBvbiB0aGUgZm9ybSBpbnB1dCB2YWx1ZXMgaW5jbHVkZWQgaW4gdGhpcyBmb3JtIGJlYW4uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sI3ZhbGlkYXRlKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PEI+dmFsaWRhdGUoQWN0aW9uTWFwcGluZywgSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkZvcm0uaHRtbCI+QWN0aW9uRm9ybTwvQT4KPEREPlZhbGlkYXRlIHRoZSBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBiZWVuIHNldCBmb3IgdGhpcyBIVFRQIHJlcXVlc3QsCiBhbmQgcmV0dXJuIGFuIDxjb2RlPkFjdGlvbkVycm9yczwvY29kZT4gb2JqZWN0IHRoYXQgZW5jYXBzdWxhdGVzIGFueQogdmFsaWRhdGlvbiBlcnJvcnMgdGhhdCBoYXZlIGJlZW4gZm91bmQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sI3ZhbGlkYXRlKG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25NYXBwaW5nLCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXF1ZXN0KSI+PEI+dmFsaWRhdGUoQWN0aW9uTWFwcGluZywgU2VydmxldFJlcXVlc3QpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRm9ybS5odG1sIj5BY3Rpb25Gb3JtPC9BPgo8REQ+VmFsaWRhdGUgdGhlIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gc2V0IGZvciB0aGlzIG5vbi1IVFRQIHJlcXVlc3QsCiBhbmQgcmV0dXJuIGFuIDxjb2RlPkFjdGlvbkVycm9yczwvY29kZT4gb2JqZWN0IHRoYXQgZW5jYXBzdWxhdGVzIGFueQogdmFsaWRhdGlvbiBlcnJvcnMgdGhhdCBoYXZlIGJlZW4gZm91bmQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sI3ZhbGlkYXRpbmciPjxCPnZhbGlkYXRpbmc8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4KPEREPlNob3VsZCB3ZSB1c2UgYSB2YWxpZGF0aW5nIFhNTCBwYXJzZXIgdG8gcmVhZCB0aGUgY29uZmlndXJhdGlvbiBmaWxlPwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCN2YWxpZGF0aW5nIj48Qj52YWxpZGF0aW5nPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuZGlnZXN0ZXIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvZGlnZXN0ZXIvRGlnZXN0ZXIuaHRtbCI+RGlnZXN0ZXI8L0E+CjxERD5EbyB3ZSB3YW50IHRvIHVzZSBhIHZhbGlkYXRpbmcgcGFyc2VyPwo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1ZhbGlkYXRpbmdBY3Rpb25Gb3JtLmh0bWwiPjxCPlZhbGlkYXRpbmdBY3Rpb25Gb3JtPC9CPjwvQT4gLSBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1ZhbGlkYXRpbmdBY3Rpb25Gb3JtLmh0bWwiPlZhbGlkYXRpbmdBY3Rpb25Gb3JtPC9BPi48REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXBwbGljYXRpb24gQWN0aW9uRm9ybSBiZWFucyBzaG91bGQgbm93IGV4dGVuZCBBY3Rpb25Gb3JtCiAgZGlyZWN0bHksIGFuZCBvdmVycmlkZSB0aGUgdmFsaWRhdGUoKSBtZXRob2QgaWYgdGhleSB3aXNoIHRvIHByb3ZpZGUKICBzdWNoIHNlcnZpY2VzPC9JPjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vVmFsaWRhdGluZ0FjdGlvbkZvcm0uaHRtbCNWYWxpZGF0aW5nQWN0aW9uRm9ybSgpIj48Qj5WYWxpZGF0aW5nQWN0aW9uRm9ybSgpPC9CPjwvQT4gLSAKQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vVmFsaWRhdGluZ0FjdGlvbkZvcm0uaHRtbCI+VmFsaWRhdGluZ0FjdGlvbkZvcm08L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDsKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldFByb3BlcnR5UnVsZS5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL1NldFByb3BlcnR5UnVsZS5odG1sIj5TZXRQcm9wZXJ0eVJ1bGU8L0E+CjxERD5UaGUgYXR0cmlidXRlIHRoYXQgd2lsbCBjb250YWluIHRoZSBwcm9wZXJ0eSB2YWx1ZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlckVxdWFsc1RhZy5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJFcXVhbHNUYWcuaHRtbCI+SWZQYXJhbWV0ZXJFcXVhbHNUYWc8L0E+CjxERD5UaGUgdmFsdWUgdG8gY29tcGFyZSB0aGlzIHBhcmFtZXRlciB0by4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9NdWx0aWJveFRhZy5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvTXVsdGlib3hUYWcuaHRtbCI+TXVsdGlib3hUYWc8L0E+CjxERD5UaGUgdmFsdWUgd2hpY2ggd2lsbCBtYXJrIHRoaXMgY2hlY2tib3ggYXMgImNoZWNrZWQiIGlmIHByZXNlbnQKIGluIHRoZSBhcnJheSByZXR1cm5lZCBieSBvdXIgcHJvcGVydHkgZ2V0dGVyLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1JhZGlvVGFnLmh0bWwjdmFsdWUiPjxCPnZhbHVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4KPEREPlRoZSBzZXJ2ZXIgdmFsdWUgZm9yIHRoaXMgb3B0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1Jlc2V0VGFnLmh0bWwjdmFsdWUiPjxCPnZhbHVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9SZXNldFRhZy5odG1sIj5SZXNldFRhZzwvQT4KPEREPlRoZSB2YWx1ZSBvZiB0aGUgYnV0dG9uIGxhYmVsLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0Jhc2VJbnB1dFRhZy5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQmFzZUlucHV0VGFnLmh0bWwiPkJhc2VJbnB1dFRhZzwvQT4KPEREPlRoZSB2YWx1ZSBmb3IgdGhpcyBmaWVsZCwgb3IgPGNvZGU+bnVsbDwvY29kZT4gdG8gcmV0cmlldmUgdGhlCiBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGZyb20gb3VyIGFzc29jaWF0ZWQgYmVhbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlBhcmFtZXRlck5vdEVxdWFsc1RhZy5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvSWZQYXJhbWV0ZXJOb3RFcXVhbHNUYWcuaHRtbCI+SWZQYXJhbWV0ZXJOb3RFcXVhbHNUYWc8L0E+CjxERD5UaGUgdmFsdWUgdG8gY29tcGFyZSB0aGlzIHBhcmFtZXRlciB0by4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TdWJtaXRUYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1N1Ym1pdFRhZy5odG1sIj5TdWJtaXRUYWc8L0E+CjxERD5UaGUgdmFsdWUgb2YgdGhlIGJ1dHRvbiBsYWJlbC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DaGVja2JveFRhZy5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvQ2hlY2tib3hUYWcuaHRtbCI+Q2hlY2tib3hUYWc8L0E+CjxERD5UaGUgc2VydmVyIHZhbHVlIGZvciB0aGlzIG9wdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9CdXR0b25UYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0J1dHRvblRhZy5odG1sIj5CdXR0b25UYWc8L0E+CjxERD5UaGUgdmFsdWUgb2YgdGhlIGJ1dHRvbiBsYWJlbC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9DYW5jZWxUYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL0NhbmNlbFRhZy5odG1sIj5DYW5jZWxUYWc8L0E+CjxERD5UaGUgdmFsdWUgb2YgdGhlIGJ1dHRvbiBsYWJlbC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9PcHRpb25UYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL09wdGlvblRhZy5odG1sIj5PcHRpb25UYWc8L0E+CjxERD5UaGUgc2VydmVyIHZhbHVlIGZvciB0aGlzIG9wdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5RXF1YWxzVGFnLmh0bWwjdmFsdWUiPjxCPnZhbHVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5RXF1YWxzVGFnLmh0bWwiPklmUHJvcGVydHlFcXVhbHNUYWc8L0E+CjxERD5UaGUgdmFsdWUgdG8gY29tcGFyZSB0by4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwjdmFsdWUiPjxCPnZhbHVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9JZlByb3BlcnR5Tm90RXF1YWxzVGFnLmh0bWwiPklmUHJvcGVydHlOb3RFcXVhbHNUYWc8L0E+CjxERD5UaGUgdmFsdWUgdG8gY29tcGFyZSB0by4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9TZWxlY3RUYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL1NlbGVjdFRhZy5odG1sIj5TZWxlY3RUYWc8L0E+CjxERD5UaGUgdmFsdWUgdG8gY29tcGFyZSB3aXRoIGZvciBtYXJraW5nIGFuIG9wdGlvbiBzZWxlY3RlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0hlYWRlclRhZy5odG1sIj5IZWFkZXJUYWc8L0E+CjxERD5UaGUgZGVmYXVsdCB2YWx1ZSB0byByZXR1cm4gaWYgbm8gaGVhZGVyIG9mIHRoZSBzcGVjaWZpZWQgbmFtZSBpcyBmb3VuZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0RlZmluZVRhZy5odG1sIj5EZWZpbmVUYWc8L0E+CjxERD5UaGUgKFN0cmluZykgdmFsdWUgdG8gd2hpY2ggdGhlIGRlZmluZWQgYmVhbiB3aWxsIGJlIHNldC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL0Nvb2tpZVRhZy5odG1sIj5Db29raWVUYWc8L0E+CjxERD5UaGUgZGVmYXVsdCB2YWx1ZSB0byByZXR1cm4gaWYgbm8gY29va2llIG9mIHRoZSBzcGVjaWZpZWQgbmFtZSBpcyBmb3VuZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1BhcmFtZXRlclRhZy5odG1sIj5QYXJhbWV0ZXJUYWc8L0E+CjxERD5UaGUgZGVmYXVsdCB2YWx1ZSB0byByZXR1cm4gaWYgbm8gcGFyYW1ldGVyIG9mIHRoZSBzcGVjaWZpZWQgbmFtZSBpcwogZm91bmQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CYXNlSW5wdXRUYWcuaHRtbCI+QmFzZUlucHV0VGFnPC9BPgo8REQ+VGhlIHZhbHVlIGZvciB0aGlzIGZpZWxkLCBvciA8Y29kZT5udWxsPC9jb2RlPiB0byByZXRyaWV2ZSB0aGUKIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgZnJvbSBvdXIgYXNzb2NpYXRlZCBiZWFuLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvUmFkaW9UYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SYWRpb1RhZy5odG1sIj5SYWRpb1RhZzwvQT4KPEREPlRoZSBzZXJ2ZXIgdmFsdWUgZm9yIHRoaXMgb3B0aW9uLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2FuY2VsVGFnLmh0bWwjdmFsdWUiPjxCPnZhbHVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2FuY2VsVGFnLmh0bWwiPkNhbmNlbFRhZzwvQT4KPEREPlRoZSB2YWx1ZSBvZiB0aGUgYnV0dG9uIGxhYmVsLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvTXVsdGlib3hUYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9NdWx0aWJveFRhZy5odG1sIj5NdWx0aWJveFRhZzwvQT4KPEREPlRoZSB2YWx1ZSB3aGljaCB3aWxsIG1hcmsgdGhpcyBjaGVja2JveCBhcyAiY2hlY2tlZCIgaWYgcHJlc2VudAogaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5IG91ciBwcm9wZXJ0eSBnZXR0ZXIuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9SZXNldFRhZy5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL1Jlc2V0VGFnLmh0bWwiPlJlc2V0VGFnPC9BPgo8REQ+VGhlIHZhbHVlIG9mIHRoZSBidXR0b24gbGFiZWwuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CdXR0b25UYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9CdXR0b25UYWcuaHRtbCI+QnV0dG9uVGFnPC9BPgo8REQ+VGhlIHZhbHVlIG9mIHRoZSBidXR0b24gbGFiZWwuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TdWJtaXRUYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TdWJtaXRUYWcuaHRtbCI+U3VibWl0VGFnPC9BPgo8REQ+VGhlIHZhbHVlIG9mIHRoZSBidXR0b24gbGFiZWwuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9TZWxlY3RUYWcuaHRtbCI+U2VsZWN0VGFnPC9BPgo8REQ+VGhlIHZhbHVlIHRvIGNvbXBhcmUgd2l0aCBmb3IgbWFya2luZyBhbiBvcHRpb24gc2VsZWN0ZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9PcHRpb25UYWcuaHRtbCI+T3B0aW9uVGFnPC9BPgo8REQ+VGhlIHNlcnZlciB2YWx1ZSBmb3IgdGhpcyBvcHRpb24sIGFsc28gdXNlZCB0byBtYXRjaCBhZ2FpbnN0IHRoZQogY3VycmVudCBwcm9wZXJ0eSB2YWx1ZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzIG9wdGlvbiBzaG91bGQgYmUKIG1hcmtlZCBhcyBzZWxlY3RlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0NoZWNrYm94VGFnLmh0bWwjdmFsdWUiPjxCPnZhbHVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliLmh0bWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2h0bWwvQ2hlY2tib3hUYWcuaHRtbCI+Q2hlY2tib3hUYWc8L0E+CjxERD5UaGUgc2VydmVyIHZhbHVlIGZvciB0aGlzIG9wdGlvbi4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9sb2dpYy9NYXRjaFRhZy5odG1sI3ZhbHVlIj48Qj52YWx1ZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5sb2dpYy48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvTWF0Y2hUYWcuaHRtbCI+TWF0Y2hUYWc8L0E+CjxERD5UaGUgdmFsdWUgdG8gd2hpY2ggdGhlIHZhcmlhYmxlIHNwZWNpZmllZCBieSBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoaXMKIHRhZyB3aWxsIGJlIG1hdGNoZWQuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvbG9naWMvQ29tcGFyZVRhZ0Jhc2UuaHRtbCN2YWx1ZSI+PEI+dmFsdWU8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIubG9naWMuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2xvZ2ljL0NvbXBhcmVUYWdCYXNlLmh0bWwiPkNvbXBhcmVUYWdCYXNlPC9BPgo8REQ+VGhlIHZhbHVlIHRvIHdoaWNoIHRoZSB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGlzCiB0YWcgd2lsbCBiZSBjb21wYXJlZC4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwjdmFsdWUiPjxCPnZhbHVlPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXBsb2FkLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3VwbG9hZC9NdWx0aXBhcnRFbGVtZW50Lmh0bWwiPk11bHRpcGFydEVsZW1lbnQ8L0E+CjxERD5UaGUgZWxlbWVudCdzIHRleHQgdmFsdWUsIG51bGwgZm9yIGZpbGUgZWxlbWVudHMKPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvci5odG1sI3ZhbHVlcyI+PEI+dmFsdWVzPC9CPjwvQT4gLSAKVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvci5odG1sIj5BY3Rpb25FcnJvcjwvQT4KPEREPlRoZSByZXBsYWNlbWVudCB2YWx1ZXMgZm9yIHRoaXMgZXJyb3IgbWVzYXNnZS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdEhhc2hNYXAuaHRtbCN2YWx1ZXMoKSI+PEI+dmFsdWVzKCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL0Zhc3RIYXNoTWFwLmh0bWwiPkZhc3RIYXNoTWFwPC9BPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7UmV0dXJuIGEgY29sbGVjdGlvbiB2aWV3IG9mIHRoZSB2YWx1ZXMgY29udGFpbmVkIGluIHRoaXMgbWFwLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9GYXN0VHJlZU1hcC5odG1sI3ZhbHVlcygpIj48Qj52YWx1ZXMoKTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvRmFzdFRyZWVNYXAuaHRtbCI+RmFzdFRyZWVNYXA8L0E+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtSZXR1cm4gYSBjb2xsZWN0aW9uIHZpZXcgb2YgdGhlIHZhbHVlcyBjb250YWluZWQgaW4gdGhpcyBtYXAuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9JbWdUYWcuaHRtbCN2c3BhY2UiPjxCPnZzcGFjZTwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5UaGUgdmVydGljYWwgc3BhY2luZyBhcm91bmQgdGhlIGltYWdlLgo8L0RMPgo8SFI+CjxBIE5BTUU9Il9XXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5XPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwjd2FybmluZyhvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbikiPjxCPndhcm5pbmcoU0FYUGFyc2VFeGNlcHRpb24pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLmRpZ2VzdGVyLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL2RpZ2VzdGVyL0RpZ2VzdGVyLmh0bWwiPkRpZ2VzdGVyPC9BPgo8REQ+Rm9yd2FyZCBub3RpZmljYXRpb24gb2YgYSBwYXJzZSB3YXJuaW5nIHRvIHRoZSBhcHBsaWNhdGlvbiBzdXBwbGllZAogZXJyb3IgaGFuZGxlciAoaWYgYW55KS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sI3dpZHRoIj48Qj53aWR0aDwvQj48L0E+IC0gClZhcmlhYmxlIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5odG1sLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0ltZ1RhZy5odG1sIj5JbWdUYWc8L0E+CjxERD5UaGUgaW1hZ2Ugd2lkdGguCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjd3JpdGUoY2hhcikiPjxCPndyaXRlKGNoYXIpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPldyaXRlIGEgc2luZ2xlIGNoYXJhY3RlciB0byB0aGlzIHN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCN3cml0ZShjaGFyW10pIj48Qj53cml0ZShjaGFyW10pPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPldyaXRlIGFuIGFycmF5IG9mIGNoYXJhdGVycyB0byB0aGlzIHN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCN3cml0ZShjaGFyW10sIGludCwgaW50KSI+PEI+d3JpdGUoY2hhcltdLCBpbnQsIGludCk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+V3JpdGUgdGhlIHNwZWNpZmllZCBzdWJzZXQgb2YgYW4gYXJyYXkgb2YgY2hhcmFjdGVycyB0byB0aGlzIHN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCN3cml0ZShpbnQpIj48Qj53cml0ZShpbnQpPC9CPjwvQT4gLSAKTWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TZXJ2bGV0Q29udGV4dFdyaXRlci5odG1sIj5TZXJ2bGV0Q29udGV4dFdyaXRlcjwvQT4KPEREPldyaXRlIGEgc2luZ2xlIGNoYXJhY3RlciB0byB0aGlzIHN0cmVhbS4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvUmVzcG9uc2VVdGlscy5odG1sI3dyaXRlKGphdmF4LnNlcnZsZXQuanNwLlBhZ2VDb250ZXh0LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+d3JpdGUoUGFnZUNvbnRleHQsIFN0cmluZyk8L0I+PC9BPiAtIApTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuPEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9SZXNwb25zZVV0aWxzLmh0bWwiPlJlc3BvbnNlVXRpbHM8L0E+CjxERD5Xcml0ZSB0aGUgc3BlY2lmaWVkIHRleHQgYXMgdGhlIHJlc3BvbnNlIHRvIHRoZSB3cml0ZXIgYXNzb2NpYXRlZCB3aXRoCiB0aGlzIHBhZ2UuCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjd3JpdGUoamF2YS5sYW5nLlN0cmluZykiPjxCPndyaXRlKFN0cmluZyk8L0I+PC9BPiAtIApNZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPlNlcnZsZXRDb250ZXh0V3JpdGVyPC9BPgo8REQ+V3JpdGUgYSBTdHJpbmcgdG8gdGhpcyBzdHJlYW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwjd3JpdGUoamF2YS5sYW5nLlN0cmluZywgaW50LCBpbnQpIj48Qj53cml0ZShTdHJpbmcsIGludCwgaW50KTwvQj48L0E+IC0gCk1ldGhvZCBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCI+U2VydmxldENvbnRleHRXcml0ZXI8L0E+CjxERD5Xcml0ZSB0aGUgc3BlY2lmaWVkIHBvcnRpb24gb2YgYSBTdHJpbmcgdG8gdGhpcyBzdHJlYW0uCjxEVD48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Jlc3BvbnNlVXRpbHMuaHRtbCN3cml0ZVByZXZpb3VzKGphdmF4LnNlcnZsZXQuanNwLlBhZ2VDb250ZXh0LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+d3JpdGVQcmV2aW91cyhQYWdlQ29udGV4dCwgU3RyaW5nKTwvQj48L0E+IC0gClN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy91dGlsL1Jlc3BvbnNlVXRpbHMuaHRtbCI+UmVzcG9uc2VVdGlsczwvQT4KPEREPldyaXRlIHRoZSBzcGVjaWZpZWQgdGV4dCBhcyB0aGUgcmVzcG9uc2UgdG8gdGhlIHdyaXRlciBhc3NvY2lhdGVkIHdpdGgKIHRoZSBib2R5IGNvbnRlbnQgZm9yIHRoZSB0YWcgd2l0aGluIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgbmVzdGVkLgo8RFQ+PEEgSFJFRj0ib3JnL2FwYWNoZS9zdHJ1dHMvdGFnbGliL2JlYW4vV3JpdGVUYWcuaHRtbCI+PEI+V3JpdGVUYWc8L0I+PC9BPiAtIGNsYXNzIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5iZWFuLjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwiPldyaXRlVGFnPC9BPi48REQ+VGFnIHRoYXQgcmV0cmlldmVzIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgb2YgdGhlIHNwZWNpZmllZCBiZWFuLCBjb252ZXJ0cwogaXQgdG8gYSBTdHJpbmcgcmVwcmVzZW50YXRpb24gKGlmIG5lY2Vzc2FyeSksIGFuZCB3cml0ZXMgaXQgdG8gdGhlIGN1cnJlbnQKIG91dHB1dCBzdHJlYW0sIG9wdGlvbmFsbHkgZmlsdGVyaW5nIGNoYXJhY3RlcnMgdGhhdCBhcmUgc2Vuc2l0aXZlIGluIEhUTUwuPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9iZWFuL1dyaXRlVGFnLmh0bWwjV3JpdGVUYWcoKSI+PEI+V3JpdGVUYWcoKTwvQj48L0E+IC0gCkNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuYmVhbi48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvYmVhbi9Xcml0ZVRhZy5odG1sIj5Xcml0ZVRhZzwvQT4KPEREPiZuYnNwOwo8L0RMPgo8SFI+CjxBIE5BTUU9Il9YXyI+PCEtLSAtLT48L0E+PEgyPgo8Qj5YPC9CPjwvSDI+CjxETD4KPERUPjxBIEhSRUY9Im9yZy9hcGFjaGUvc3RydXRzL3RhZ2xpYi9odG1sL0h0bWxUYWcuaHRtbCN4aHRtbCI+PEI+eGh0bWw8L0I+PC9BPiAtIApWYXJpYWJsZSBpbiBjbGFzcyBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuaHRtbC48QSBIUkVGPSJvcmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvaHRtbC9IdG1sVGFnLmh0bWwiPkh0bWxUYWc8L0E+CjxERD5BcmUgd2UgcmVuZGVyaW5nIGFuIHhodG1sIHBhZ2U/CjwvREw+CjxIUj4KPEEgSFJFRj0iI188XyI+PDwvQT4gPEEgSFJFRj0iI19BXyI+QTwvQT4gPEEgSFJFRj0iI19CXyI+QjwvQT4gPEEgSFJFRj0iI19DXyI+QzwvQT4gPEEgSFJFRj0iI19EXyI+RDwvQT4gPEEgSFJFRj0iI19FXyI+RTwvQT4gPEEgSFJFRj0iI19GXyI+RjwvQT4gPEEgSFJFRj0iI19HXyI+RzwvQT4gPEEgSFJFRj0iI19IXyI+SDwvQT4gPEEgSFJFRj0iI19JXyI+STwvQT4gPEEgSFJFRj0iI19LXyI+SzwvQT4gPEEgSFJFRj0iI19MXyI+TDwvQT4gPEEgSFJFRj0iI19NXyI+TTwvQT4gPEEgSFJFRj0iI19OXyI+TjwvQT4gPEEgSFJFRj0iI19PXyI+TzwvQT4gPEEgSFJFRj0iI19QXyI+UDwvQT4gPEEgSFJFRj0iI19SXyI+UjwvQT4gPEEgSFJFRj0iI19TXyI+UzwvQT4gPEEgSFJFRj0iI19UXyI+VDwvQT4gPEEgSFJFRj0iI19VXyI+VTwvQT4gPEEgSFJFRj0iI19WXyI+VjwvQT4gPEEgSFJFRj0iI19XXyI+VzwvQT4gPEEgSFJFRj0iI19YXyI+WDwvQT4gCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPgo8VFI+CjxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+CiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8L1RSPgo8L1RBQkxFPgo8L1REPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KPC9FTT4KPC9URD4KPC9UUj4KCjxUUj4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KJm5ic3A7UFJFViZuYnNwOwombmJzcDtORVhUPC9GT05UPjwvVEQ+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiAgPEEgSFJFRj0iaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7CiZuYnNwOzxBIEhSRUY9ImluZGV4LWFsbC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4KCjxIUj4KQ29weXJpZ2h0IKkgMjAwMC0yMDAxIC0gQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KPC9CT0RZPgo8L0hUTUw+Cg==