PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPg0KPCEtLU5ld1BhZ2UtLT4NCjxIVE1MPg0KPEhFQUQ+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFRodSBOb3YgMjIgMTc6MTI6NTMgRVNUIDIwMDcgLS0+DQo8VElUTEU+DQpYYWxhbi1KYXZhIDIuNy4xOiBDbGFzcyAgWFBhdGhGYWN0b3J5DQo8L1RJVExFPg0KPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPg0KPC9IRUFEPg0KPEJPRFkgQkdDT0xPUj0id2hpdGUiPg0KDQo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+DQo8QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+DQo8VFI+DQo8VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+DQo8QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4NCiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvWFBhdGhGYWN0b3J5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8L1RSPg0KPC9UQUJMRT4NCjwvVEQ+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4NCjwvRU0+DQo8L1REPg0KPC9UUj4NCg0KPFRSPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC94cGF0aC9YUGF0aENvbnN0YW50cy5odG1sIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsNCiZuYnNwO05FWFQgQ0xBU1M8L0ZPTlQ+PC9URD4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQogIDxBIEhSRUY9Ii4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iWFBhdGhGYWN0b3J5Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFI+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPg0KDQo8SFI+DQo8IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+DQo8SDI+DQo8Rk9OVCBTSVpFPSItMSI+DQpqYXZheC54bWwueHBhdGg8L0ZPTlQ+DQo8QlI+DQpDbGFzcyAgWFBhdGhGYWN0b3J5PC9IMj4NCjxQUkU+DQpqYXZhLmxhbmcuT2JqZWN0DQogIHwNCiAgKy0tPEI+amF2YXgueG1sLnhwYXRoLlhQYXRoRmFjdG9yeTwvQj4NCjwvUFJFPg0KPERMPg0KPERUPjxCPkRpcmVjdCBLbm93biBTdWJjbGFzc2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvamF4cC9YUGF0aEZhY3RvcnlJbXBsLmh0bWwiPlhQYXRoRmFjdG9yeUltcGw8L0E+PC9ERD4NCjwvREw+DQo8SFI+DQo8REw+DQo8RFQ+cHVibGljIGFic3RyYWN0IGNsYXNzIDxCPlhQYXRoRmFjdG9yeTwvQj48RFQ+ZXh0ZW5kcyBqYXZhLmxhbmcuT2JqZWN0PC9ETD4NCg0KPFA+DQo8cD5BbiA8Y29kZT5YUGF0aEZhY3Rvcnk8L2NvZGU+IGluc3RhbmNlIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZQogPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoLmh0bWwiPjxDT0RFPlhQYXRoPC9DT0RFPjwvQT4gb2JqZWN0cy48L3A+Cgo8cD5TZWUgPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeS5odG1sI25ld0luc3RhbmNlKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5uZXdJbnN0YW5jZShTdHJpbmcgdXJpKTwvQ09ERT48L0E+IGZvciBsb29rdXAgbWVjaGFuaXNtLjwvcD4NCjxQPg0KPERMPg0KPERUPjxCPlNpbmNlOiA8L0I+PEREPjEuNTwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8UD4NCjwhLS0gPT09PT09PT0gSU5ORVIgQ0xBU1MgU1VNTUFSWSA9PT09PT09PSAtLT4NCg0KDQo8IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+DQoNCjxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPg0KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+DQo8Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwveHBhdGgvWFBhdGhGYWN0b3J5Lmh0bWwjREVGQVVMVF9PQkpFQ1RfTU9ERUxfVVJJIj5ERUZBVUxUX09CSkVDVF9NT0RFTF9VUkk8L0E+PC9CPjwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RGVmYXVsdCBPYmplY3QgTW9kZWwgVVJJLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC94cGF0aC9YUGF0aEZhY3RvcnkuaHRtbCNERUZBVUxUX1BST1BFUlRZX05BTUUiPkRFRkFVTFRfUFJPUEVSVFlfTkFNRTwvQT48L0I+PC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZGVmYXVsdCBwcm9wZXJ0eSBuYW1lIGFjY29yZGluZyB0byB0aGUgSkFYUCBzcGVjLjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOw0KPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPg0KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+DQo8Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPmFic3RyYWN0ICZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeS5odG1sI2dldEZlYXR1cmUoamF2YS5sYW5nLlN0cmluZykiPmdldEZlYXR1cmU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgc3RhdGUgb2YgdGhlIG5hbWVkIGZlYXR1cmUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPmFic3RyYWN0ICZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeS5odG1sI2lzT2JqZWN0TW9kZWxTdXBwb3J0ZWQoamF2YS5sYW5nLlN0cmluZykiPmlzT2JqZWN0TW9kZWxTdXBwb3J0ZWQ8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7b2JqZWN0TW9kZWwpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtJcyBzcGVjaWZpZWQgb2JqZWN0IG1vZGVsIHN1cHBvcnRlZCBieSB0aGlzIDxjb2RlPlhQYXRoRmFjdG9yeTwvY29kZT4/PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC94cGF0aC9YUGF0aEZhY3RvcnkuaHRtbCI+WFBhdGhGYWN0b3J5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwveHBhdGgvWFBhdGhGYWN0b3J5Lmh0bWwjbmV3SW5zdGFuY2UoKSI+bmV3SW5zdGFuY2U8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZXQgYSBuZXcgPGNvZGU+WFBhdGhGYWN0b3J5PC9jb2RlPiBpbnN0YW5jZSB1c2luZyB0aGUgZGVmYXVsdCBvYmplY3QgbW9kZWwsCiA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwveHBhdGgvWFBhdGhGYWN0b3J5Lmh0bWwjREVGQVVMVF9PQkpFQ1RfTU9ERUxfVVJJIj48Q09ERT5ERUZBVUxUX09CSkVDVF9NT0RFTF9VUkk8L0NPREU+PC9BPiwKIHRoZSBXM0MgRE9NLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwveHBhdGgvWFBhdGhGYWN0b3J5Lmh0bWwiPlhQYXRoRmFjdG9yeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeS5odG1sI25ld0luc3RhbmNlKGphdmEubGFuZy5TdHJpbmcpIj5uZXdJbnN0YW5jZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt1cmkpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZXQgYSBuZXcgPGNvZGU+WFBhdGhGYWN0b3J5PC9jb2RlPiBpbnN0YW5jZSB1c2luZyB0aGUgc3BlY2lmaWVkIG9iamVjdCBtb2RlbC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+YWJzdHJhY3QgJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoLmh0bWwiPlhQYXRoPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwveHBhdGgvWFBhdGhGYWN0b3J5Lmh0bWwjbmV3WFBhdGgoKSI+bmV3WFBhdGg8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gYSBuZXcgPGNvZGU+WFBhdGg8L2NvZGU+IHVzaW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdAogbW9kZWwgZGV0ZXJtaW5lZCB3aGVuIHRoZSA8Y29kZT5YUGF0aEZhY3Rvcnk8L2NvZGU+IHdhcyBpbnN0YW50aWF0ZWQuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPmFic3RyYWN0ICZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeS5odG1sI3NldEZlYXR1cmUoamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikiPnNldEZlYXR1cmU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSwKICAgICAgICAgICBib29sZWFuJm5ic3A7dmFsdWUpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXQgYSBmZWF0dXJlIGZvciB0aGlzIDxjb2RlPlhQYXRoRmFjdG9yeTwvY29kZT4gYW5kIDxjb2RlPlhQYXRoPC9jb2RlPnMgY3JlYXRlZCBieSB0aGlzIGZhY3RvcnkuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPmFic3RyYWN0ICZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeS5odG1sI3NldFhQYXRoRnVuY3Rpb25SZXNvbHZlcihqYXZheC54bWwueHBhdGguWFBhdGhGdW5jdGlvblJlc29sdmVyKSI+c2V0WFBhdGhGdW5jdGlvblJlc29sdmVyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRnVuY3Rpb25SZXNvbHZlci5odG1sIj5YUGF0aEZ1bmN0aW9uUmVzb2x2ZXI8L0E+Jm5ic3A7cmVzb2x2ZXIpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtFc3RhYmxpc2ggYSBkZWZhdWx0IGZ1bmN0aW9uIHJlc29sdmVyLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT5hYnN0cmFjdCAmbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC94cGF0aC9YUGF0aEZhY3RvcnkuaHRtbCNzZXRYUGF0aFZhcmlhYmxlUmVzb2x2ZXIoamF2YXgueG1sLnhwYXRoLlhQYXRoVmFyaWFibGVSZXNvbHZlcikiPnNldFhQYXRoVmFyaWFibGVSZXNvbHZlcjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC94cGF0aC9YUGF0aFZhcmlhYmxlUmVzb2x2ZXIuaHRtbCI+WFBhdGhWYXJpYWJsZVJlc29sdmVyPC9BPiZuYnNwO3Jlc29sdmVyKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RXN0YWJsaXNoIGEgZGVmYXVsdCB2YXJpYWJsZSByZXNvbHZlci48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQombmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5PYmplY3QiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPg0KPFREPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREPjxDT0RFPmVxdWFscywgDQpnZXRDbGFzcywgDQpoYXNoQ29kZSwgDQpub3RpZnksIA0Kbm90aWZ5QWxsLCANCnRvU3RyaW5nLCANCndhaXQsIA0Kd2FpdCwgDQp3YWl0PC9DT0RFPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOw0KPFA+DQoNCjwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPg0KPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQoNCjxBIE5BTUU9IkRFRkFVTFRfUFJPUEVSVFlfTkFNRSI+PCEtLSAtLT48L0E+PEgzPg0KREVGQVVMVF9QUk9QRVJUWV9OQU1FPC9IMz4NCjxQUkU+DQpwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+REVGQVVMVF9QUk9QRVJUWV9OQU1FPC9CPjwvUFJFPg0KPERMPg0KPEREPjxwPlRoZSBkZWZhdWx0IHByb3BlcnR5IG5hbWUgYWNjb3JkaW5nIHRvIHRoZSBKQVhQIHNwZWMuPC9wPjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9IkRFRkFVTFRfT0JKRUNUX01PREVMX1VSSSI+PCEtLSAtLT48L0E+PEgzPg0KREVGQVVMVF9PQkpFQ1RfTU9ERUxfVVJJPC9IMz4NCjxQUkU+DQpwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+REVGQVVMVF9PQkpFQ1RfTU9ERUxfVVJJPC9CPjwvUFJFPg0KPERMPg0KPEREPjxwPkRlZmF1bHQgT2JqZWN0IE1vZGVsIFVSSS48L3A+PC9ETD4NCg0KPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0xPjxGT05UIFNJWkU9IisyIj4NCjxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCg0KPEEgTkFNRT0ibmV3SW5zdGFuY2UoKSI+PCEtLSAtLT48L0E+PEgzPg0KbmV3SW5zdGFuY2U8L0gzPg0KPFBSRT4NCnB1YmxpYyBzdGF0aWMgZmluYWwgPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeS5odG1sIj5YUGF0aEZhY3Rvcnk8L0E+IDxCPm5ld0luc3RhbmNlPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+PHA+R2V0IGEgbmV3IDxjb2RlPlhQYXRoRmFjdG9yeTwvY29kZT4gaW5zdGFuY2UgdXNpbmcgdGhlIGRlZmF1bHQgb2JqZWN0IG1vZGVsLAogPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeS5odG1sI0RFRkFVTFRfT0JKRUNUX01PREVMX1VSSSI+PENPREU+REVGQVVMVF9PQkpFQ1RfTU9ERUxfVVJJPC9DT0RFPjwvQT4sCiB0aGUgVzNDIERPTS48L3A+CiAKIDxwPlRoaXMgbWV0aG9kIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvOjwvcD4KIDxwcmU+CiAgIG5ld0luc3RhbmNlKERFRkFVTFRfT0JKRUNUX01PREVMX1VSSSkKIDwvcHJlPgogCiA8cD5TaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBXM0MgRE9NIGlzIGFsd2F5cyBhdmFpbGFibGUsIHRoaXMgbWV0aG9kIHdpbGwgbmV2ZXIgZmFpbC48L3A+PEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+SW5zdGFuY2Ugb2YgYW4gPGNvZGU+WFBhdGhGYWN0b3J5PC9jb2RlPi48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9Im5ld0luc3RhbmNlKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQpuZXdJbnN0YW5jZTwvSDM+DQo8UFJFPg0KcHVibGljIHN0YXRpYyBmaW5hbCA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwveHBhdGgvWFBhdGhGYWN0b3J5Lmh0bWwiPlhQYXRoRmFjdG9yeTwvQT4gPEI+bmV3SW5zdGFuY2U8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt1cmkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC94cGF0aC9YUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uLmh0bWwiPlhQYXRoRmFjdG9yeUNvbmZpZ3VyYXRpb25FeGNlcHRpb248L0E+PC9QUkU+DQo8REw+DQo8REQ+PHA+R2V0IGEgbmV3IDxjb2RlPlhQYXRoRmFjdG9yeTwvY29kZT4gaW5zdGFuY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBvYmplY3QgbW9kZWwuPC9wPgogCiA8cD5UbyBmaW5kIGEgPGNvZGU+WFBhdGhGYWN0b3J5PC9jb2RlPiBvYmplY3QsCiB0aGlzIG1ldGhvZCBsb29rcyB0aGUgZm9sbG93aW5nIHBsYWNlcyBpbiB0aGUgZm9sbG93aW5nIG9yZGVyIHdoZXJlICJ0aGUgY2xhc3MgbG9hZGVyIiByZWZlcnMgdG8gdGhlIGNvbnRleHQgY2xhc3MgbG9hZGVyOjwvcD4KIDxvbD4KICAgPGxpPgogICAgIElmIHRoZSBzeXN0ZW0gcHJvcGVydHkgPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeS5odG1sI0RFRkFVTFRfUFJPUEVSVFlfTkFNRSI+PENPREU+REVGQVVMVF9QUk9QRVJUWV9OQU1FPC9DT0RFPjwvQT4gKyAiOnVyaSIgaXMgcHJlc2VudCwKICAgICB3aGVyZSB1cmkgaXMgdGhlIHBhcmFtZXRlciB0byB0aGlzIG1ldGhvZCwgdGhlbiBpdHMgdmFsdWUgaXMgcmVhZCBhcyBhIGNsYXNzIG5hbWUuCiAgICAgVGhlIG1ldGhvZCB3aWxsIHRyeSB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBieSB1c2luZyB0aGUgY2xhc3MgbG9hZGVyLAogICAgIGFuZCByZXR1cm5zIGl0IGlmIGl0IGlzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLgogICA8L2xpPgogICA8bGk+CiAgICAgJHtqYXZhLmhvbWV9L2xpYi9qYXhwLnByb3BlcnRpZXMgaXMgcmVhZCBhbmQgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5IGJlaW5nIHRoZSBzeXN0ZW0gcHJvcGVydHkgYWJvdmUgaXMgbG9va2VkIGZvci4KICAgICBJZiBwcmVzZW50LCB0aGUgdmFsdWUgaXMgcHJvY2Vzc2VkIGp1c3QgbGlrZSBhYm92ZS4KICAgPC9saT4KICAgPGxpPgogICAgIFRoZSBjbGFzcyBsb2FkZXIgaXMgYXNrZWQgZm9yIHNlcnZpY2UgcHJvdmlkZXIgcHJvdmlkZXItY29uZmlndXJhdGlvbiBmaWxlcyBtYXRjaGluZyA8Y29kZT5qYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5PC9jb2RlPgogICAgIGluIHRoZSByZXNvdXJjZSBkaXJlY3RvcnkgTUVUQS1JTkYvc2VydmljZXMuCiAgICAgU2VlIHRoZSBKQVIgRmlsZSBTcGVjaWZpY2F0aW9uIGZvciBmaWxlIGZvcm1hdCBhbmQgcGFyc2luZyBydWxlcy4KICAgICBFYWNoIHBvdGVudGlhbCBzZXJ2aWNlIHByb3ZpZGVyIGlzIHJlcXVpcmVkIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kOgogICAgIDxwcmU+CiAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwveHBhdGgvWFBhdGhGYWN0b3J5Lmh0bWwjaXNPYmplY3RNb2RlbFN1cHBvcnRlZChqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+aXNPYmplY3RNb2RlbFN1cHBvcnRlZChTdHJpbmcgb2JqZWN0TW9kZWwpPC9DT0RFPjwvQT4KICAgICA8L3ByZT4KICAgICBUaGUgZmlyc3Qgc2VydmljZSBwcm92aWRlciBmb3VuZCBpbiBjbGFzcyBsb2FkZXIgb3JkZXIgdGhhdCBzdXBwb3J0cyB0aGUgc3BlY2lmaWVkIG9iamVjdCBtb2RlbCBpcyByZXR1cm5lZC4KICAgPC9saT4KICAgPGxpPgogICAgIFBsYXRmb3JtIGRlZmF1bHQgPGNvZGU+WFBhdGhGYWN0b3J5PC9jb2RlPiBpcyBsb2NhdGVkIGluIGEgcGxhdGZvcm0gc3BlY2lmaWMgd2F5LgogICAgIFRoZXJlIG11c3QgYmUgYSBwbGF0Zm9ybSBkZWZhdWx0IFhQYXRoRmFjdG9yeSBmb3IgdGhlIFczQyBET00sIGkuZS4gPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeS5odG1sI0RFRkFVTFRfT0JKRUNUX01PREVMX1VSSSI+PENPREU+REVGQVVMVF9PQkpFQ1RfTU9ERUxfVVJJPC9DT0RFPjwvQT4uCiAgIDwvbGk+CiA8L29sPgogPHA+SWYgZXZlcnl0aGluZyBmYWlscywgYW4gPGNvZGU+WFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbjwvY29kZT4gd2lsbCBiZSB0aHJvd24uPC9wPgogCiA8cD5UaXAgZm9yIFRyb3VibGUtc2hvb3Rpbmc6PC9wPgogPHA+U2VlIDxDT0RFPlByb3BlcnRpZXMubG9hZChqYXZhLmlvLklucHV0U3RyZWFtKTwvQ09ERT4gZm9yIGV4YWN0bHkgaG93IGEgcHJvcGVydHkgZmlsZSBpcyBwYXJzZWQuCiBJbiBwYXJ0aWN1bGFyLCBjb2xvbnMgJzonIG5lZWQgdG8gYmUgZXNjYXBlZCBpbiBhIHByb3BlcnR5IGZpbGUsIHNvIG1ha2Ugc3VyZSB0aGUgVVJJcyBhcmUgcHJvcGVybHkgZXNjYXBlZCBpbiBpdC4KIEZvciBleGFtcGxlOjwvcD4KIDxwcmU+CiAgIGh0dHBcOi8vamF2YS5zdW4uY29tL2pheHAveHBhdGgvZG9tPW9yZy5hY21lLkRvbVhQYXRoRmFjdG9yeQogPC9wcmU+PEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dXJpPC9DT0RFPiAtIElkZW50aWZpZXMgdGhlIHVuZGVybHlpbmcgb2JqZWN0IG1vZGVsLgogICBUaGUgc3BlY2lmaWNhdGlvbiBvbmx5IGRlZmluZXMgdGhlIFVSSSA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwveHBhdGgvWFBhdGhGYWN0b3J5Lmh0bWwjREVGQVVMVF9PQkpFQ1RfTU9ERUxfVVJJIj48Q09ERT5ERUZBVUxUX09CSkVDVF9NT0RFTF9VUkk8L0NPREU+PC9BPiwKICAgPGNvZGU+aHR0cDovL2phdmEuc3VuLmNvbS9qYXhwL3hwYXRoL2RvbTwvY29kZT4gZm9yIHRoZSBXM0MgRE9NLAogICB0aGUgb3JnLnczYy5kb20gcGFja2FnZSwgYW5kIGltcGxlbWVudGF0aW9ucyBhcmUgZnJlZSB0byBpbnRyb2R1Y2Ugb3RoZXIgVVJJcyBmb3Igb3RoZXIgb2JqZWN0IG1vZGVscy48RFQ+PEI+UmV0dXJuczo8L0I+PEREPkluc3RhbmNlIG9mIGFuIDxjb2RlPlhQYXRoRmFjdG9yeTwvY29kZT4uPERUPjxCPlRocm93czo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC94cGF0aC9YUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uLmh0bWwiPlhQYXRoRmFjdG9yeUNvbmZpZ3VyYXRpb25FeGNlcHRpb248L0E+IC0gSWYgdGhlIHNwZWNpZmllZCBvYmplY3QgbW9kZWwgaXMgdW5hdmFpbGFibGUuPEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIElmIDxjb2RlPnVyaTwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4uPEREPmphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gLSBJZiA8Y29kZT51cmkubGVuZ3RoKCkgPT0gMDwvY29kZT4uPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJpc09iamVjdE1vZGVsU3VwcG9ydGVkKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQppc09iamVjdE1vZGVsU3VwcG9ydGVkPC9IMz4NCjxQUkU+DQpwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiA8Qj5pc09iamVjdE1vZGVsU3VwcG9ydGVkPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7b2JqZWN0TW9kZWwpPC9QUkU+DQo8REw+DQo8REQ+PHA+SXMgc3BlY2lmaWVkIG9iamVjdCBtb2RlbCBzdXBwb3J0ZWQgYnkgdGhpcyA8Y29kZT5YUGF0aEZhY3Rvcnk8L2NvZGU+PzwvcD48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5vYmplY3RNb2RlbDwvQ09ERT4gLSBTcGVjaWZpZXMgdGhlIG9iamVjdCBtb2RlbCB3aGljaCB0aGUgcmV0dXJuZWQgPGNvZGU+WFBhdGhGYWN0b3J5PC9jb2RlPiB3aWxsIHVuZGVyc3RhbmQuPERUPjxCPlJldHVybnM6PC9CPjxERD48Y29kZT50cnVlPC9jb2RlPiBpZiA8Y29kZT5YUGF0aEZhY3Rvcnk8L2NvZGU+IHN1cHBvcnRzIDxjb2RlPm9iamVjdE1vZGVsPC9jb2RlPiwgZWxzZSA8Y29kZT5mYWxzZTwvY29kZT4uPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIElmIDxjb2RlPm9iamVjdE1vZGVsPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPi48REQ+amF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiAtIElmIDxjb2RlPm9iamVjdE1vZGVsLmxlbmd0aCgpID09IDA8L2NvZGU+LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0ic2V0RmVhdHVyZShqYXZhLmxhbmcuU3RyaW5nLCBib29sZWFuKSI+PCEtLSAtLT48L0E+PEgzPg0Kc2V0RmVhdHVyZTwvSDM+DQo8UFJFPg0KcHVibGljIGFic3RyYWN0IHZvaWQgPEI+c2V0RmVhdHVyZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiZuYnNwO3ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC94cGF0aC9YUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uLmh0bWwiPlhQYXRoRmFjdG9yeUNvbmZpZ3VyYXRpb25FeGNlcHRpb248L0E+PC9QUkU+DQo8REw+DQo8REQ+PHA+U2V0IGEgZmVhdHVyZSBmb3IgdGhpcyA8Y29kZT5YUGF0aEZhY3Rvcnk8L2NvZGU+IGFuZCA8Y29kZT5YUGF0aDwvY29kZT5zIGNyZWF0ZWQgYnkgdGhpcyBmYWN0b3J5LjwvcD4KIAogPHA+CiBGZWF0dXJlIG5hbWVzIGFyZSBmdWxseSBxdWFsaWZpZWQgPENPREU+amF2YS5uZXQuVVJJPC9DT0RFPnMuCiBJbXBsZW1lbnRhdGlvbnMgbWF5IGRlZmluZSB0aGVpciBvd24gZmVhdHVyZXMuCiBBbiA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwveHBhdGgvWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbi5odG1sIj48Q09ERT5YUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uPC9DT0RFPjwvQT4gaXMgdGhyb3duIGlmIHRoaXMgPGNvZGU+WFBhdGhGYWN0b3J5PC9jb2RlPiBvciB0aGUgPGNvZGU+WFBhdGg8L2NvZGU+cwogIGl0IGNyZWF0ZXMgY2Fubm90IHN1cHBvcnQgdGhlIGZlYXR1cmUuCiBJdCBpcyBwb3NzaWJsZSBmb3IgYW4gPGNvZGU+WFBhdGhGYWN0b3J5PC9jb2RlPiB0byBleHBvc2UgYSBmZWF0dXJlIHZhbHVlIGJ1dCBiZSB1bmFibGUgdG8gY2hhbmdlIGl0cyBzdGF0ZS4KIDwvcD4KIAogPHA+CiBBbGwgaW1wbGVtZW50YXRpb25zIGFyZSByZXF1aXJlZCB0byBzdXBwb3J0IHRoZSA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwvWE1MQ29uc3RhbnRzLmh0bWwjRkVBVFVSRV9TRUNVUkVfUFJPQ0VTU0lORyI+PENPREU+WE1MQ29uc3RhbnRzLkZFQVRVUkVfU0VDVVJFX1BST0NFU1NJTkc8L0NPREU+PC9BPiBmZWF0dXJlLgogV2hlbiB0aGUgZmVhdHVyZSBpcyA8Y29kZT50cnVlPC9jb2RlPiwgYW55IHJlZmVyZW5jZSB0byAgYW4gZXh0ZXJuYWwgZnVuY3Rpb24gaXMgYW4gZXJyb3IuCiBVbmRlciB0aGVzZSBjb25kaXRpb25zLCB0aGUgaW1wbGVtZW50YXRpb24gbXVzdCBub3QgY2FsbCB0aGUgPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRnVuY3Rpb25SZXNvbHZlci5odG1sIj48Q09ERT5YUGF0aEZ1bmN0aW9uUmVzb2x2ZXI8L0NPREU+PC9BPgogYW5kIG11c3QgdGhyb3cgYW4gPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRnVuY3Rpb25FeGNlcHRpb24uaHRtbCI+PENPREU+WFBhdGhGdW5jdGlvbkV4Y2VwdGlvbjwvQ09ERT48L0E+LgogPC9wPjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm5hbWU8L0NPREU+IC0gRmVhdHVyZSBuYW1lLjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSBJcyBmZWF0dXJlIHN0YXRlIDxjb2RlPnRydWU8L2NvZGU+IG9yIDxjb2RlPmZhbHNlPC9jb2RlPi48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeUNvbmZpZ3VyYXRpb25FeGNlcHRpb24uaHRtbCI+WFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbjwvQT4gLSBpZiB0aGlzIDxjb2RlPlhQYXRoRmFjdG9yeTwvY29kZT4gb3IgdGhlIDxjb2RlPlhQYXRoPC9jb2RlPnMKICAgaXQgY3JlYXRlcyBjYW5ub3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUuPEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIGlmIDxjb2RlPm5hbWU8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0RmVhdHVyZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0RmVhdHVyZTwvSDM+DQo8UFJFPg0KcHVibGljIGFic3RyYWN0IGJvb2xlYW4gPEI+Z2V0RmVhdHVyZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoRmFjdG9yeUNvbmZpZ3VyYXRpb25FeGNlcHRpb24uaHRtbCI+WFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbjwvQT48L1BSRT4NCjxETD4NCjxERD48cD5HZXQgdGhlIHN0YXRlIG9mIHRoZSBuYW1lZCBmZWF0dXJlLjwvcD4KIAogPHA+CiBGZWF0dXJlIG5hbWVzIGFyZSBmdWxseSBxdWFsaWZpZWQgPENPREU+amF2YS5uZXQuVVJJPC9DT0RFPnMuCiBJbXBsZW1lbnRhdGlvbnMgbWF5IGRlZmluZSB0aGVpciBvd24gZmVhdHVyZXMuCiBBbiA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwveHBhdGgvWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbi5odG1sIj48Q09ERT5YUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uPC9DT0RFPjwvQT4gaXMgdGhyb3duIGlmIHRoaXMgPGNvZGU+WFBhdGhGYWN0b3J5PC9jb2RlPiBvciB0aGUgPGNvZGU+WFBhdGg8L2NvZGU+cwogaXQgY3JlYXRlcyBjYW5ub3Qgc3VwcG9ydCB0aGUgZmVhdHVyZS4KIEl0IGlzIHBvc3NpYmxlIGZvciBhbiA8Y29kZT5YUGF0aEZhY3Rvcnk8L2NvZGU+IHRvIGV4cG9zZSBhIGZlYXR1cmUgdmFsdWUgYnV0IGJlIHVuYWJsZSB0byBjaGFuZ2UgaXRzIHN0YXRlLgogPC9wPjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm5hbWU8L0NPREU+IC0gRmVhdHVyZSBuYW1lLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+U3RhdGUgb2YgdGhlIG5hbWVkIGZlYXR1cmUuPERUPjxCPlRocm93czo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC94cGF0aC9YUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uLmh0bWwiPlhQYXRoRmFjdG9yeUNvbmZpZ3VyYXRpb25FeGNlcHRpb248L0E+IC0gaWYgdGhpcyA8Y29kZT5YUGF0aEZhY3Rvcnk8L2NvZGU+IG9yIHRoZSA8Y29kZT5YUGF0aDwvY29kZT5zCiAgIGl0IGNyZWF0ZXMgY2Fubm90IHN1cHBvcnQgdGhpcyBmZWF0dXJlLjxERD5qYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gLSBpZiA8Y29kZT5uYW1lPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPi48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InNldFhQYXRoVmFyaWFibGVSZXNvbHZlcihqYXZheC54bWwueHBhdGguWFBhdGhWYXJpYWJsZVJlc29sdmVyKSI+PCEtLSAtLT48L0E+PEgzPg0Kc2V0WFBhdGhWYXJpYWJsZVJlc29sdmVyPC9IMz4NCjxQUkU+DQpwdWJsaWMgYWJzdHJhY3Qgdm9pZCA8Qj5zZXRYUGF0aFZhcmlhYmxlUmVzb2x2ZXI8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC94cGF0aC9YUGF0aFZhcmlhYmxlUmVzb2x2ZXIuaHRtbCI+WFBhdGhWYXJpYWJsZVJlc29sdmVyPC9BPiZuYnNwO3Jlc29sdmVyKTwvUFJFPg0KPERMPg0KPEREPjxwPkVzdGFibGlzaCBhIGRlZmF1bHQgdmFyaWFibGUgcmVzb2x2ZXIuPC9wPgoKIDxwPkFueSA8Y29kZT5YUGF0aDwvY29kZT4gb2JqZWN0cyBjb25zdHJ1Y3RlZCBmcm9tIHRoaXMgZmFjdG9yeSB3aWxsIHVzZQogdGhlIHNwZWNpZmllZCByZXNvbHZlciBieSBkZWZhdWx0LjwvcD4KIAogPHA+QSA8Y29kZT5OdWxsUG9pbnRlckV4Y2VwdGlvbjwvY29kZT4gaXMgdGhyb3duIGlmIDxjb2RlPnJlc29sdmVyPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPi48L3A+PEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cmVzb2x2ZXI8L0NPREU+IC0gVmFyaWFibGUgcmVzb2x2ZXIuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIElmIDxjb2RlPnJlc29sdmVyPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPi48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InNldFhQYXRoRnVuY3Rpb25SZXNvbHZlcihqYXZheC54bWwueHBhdGguWFBhdGhGdW5jdGlvblJlc29sdmVyKSI+PCEtLSAtLT48L0E+PEgzPg0Kc2V0WFBhdGhGdW5jdGlvblJlc29sdmVyPC9IMz4NCjxQUkU+DQpwdWJsaWMgYWJzdHJhY3Qgdm9pZCA8Qj5zZXRYUGF0aEZ1bmN0aW9uUmVzb2x2ZXI8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC94cGF0aC9YUGF0aEZ1bmN0aW9uUmVzb2x2ZXIuaHRtbCI+WFBhdGhGdW5jdGlvblJlc29sdmVyPC9BPiZuYnNwO3Jlc29sdmVyKTwvUFJFPg0KPERMPg0KPEREPjxwPkVzdGFibGlzaCBhIGRlZmF1bHQgZnVuY3Rpb24gcmVzb2x2ZXIuPC9wPgogCiA8cD5BbnkgPGNvZGU+WFBhdGg8L2NvZGU+IG9iamVjdHMgY29uc3RydWN0ZWQgZnJvbSB0aGlzIGZhY3Rvcnkgd2lsbCB1c2UKIHRoZSBzcGVjaWZpZWQgcmVzb2x2ZXIgYnkgZGVmYXVsdC48L3A+CgogPHA+QSA8Y29kZT5OdWxsUG9pbnRlckV4Y2VwdGlvbjwvY29kZT4gaXMgdGhyb3duIGlmIDxjb2RlPnJlc29sdmVyPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPi48L3A+PEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cmVzb2x2ZXI8L0NPREU+IC0gWFBhdGggZnVuY3Rpb24gcmVzb2x2ZXIuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIElmIDxjb2RlPnJlc29sdmVyPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPi48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9Im5ld1hQYXRoKCkiPjwhLS0gLS0+PC9BPjxIMz4NCm5ld1hQYXRoPC9IMz4NCjxQUkU+DQpwdWJsaWMgYWJzdHJhY3QgPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoLmh0bWwiPlhQYXRoPC9BPiA8Qj5uZXdYUGF0aDwvQj4oKTwvUFJFPg0KPERMPg0KPEREPjxwPlJldHVybiBhIG5ldyA8Y29kZT5YUGF0aDwvY29kZT4gdXNpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0CiBtb2RlbCBkZXRlcm1pbmVkIHdoZW4gdGhlIDxjb2RlPlhQYXRoRmFjdG9yeTwvY29kZT4gd2FzIGluc3RhbnRpYXRlZC48L3A+PEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+TmV3IGluc3RhbmNlIG9mIGFuIDxjb2RlPlhQYXRoPC9jb2RlPi48L0RMPg0KPC9ERD4NCjwvREw+DQo8IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+DQo8SFI+DQoNCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4NCjxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4NCjxUUj4NCjxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4NCjxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPg0KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9YUGF0aEZhY3RvcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDwvVFI+DQo8L1RBQkxFPg0KPC9URD4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPg0KPC9FTT4NCjwvVEQ+DQo8L1RSPg0KDQo8VFI+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3hwYXRoL1hQYXRoQ29uc3RhbnRzLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7TkVYVCBDTEFTUzwvRk9OVD48L1REPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiAgPEEgSFJFRj0iLi4vLi4vLi4vaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7DQombmJzcDs8QSBIUkVGPSJYUGF0aEZhY3RvcnkuaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjxUUj4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQogIFNVTU1BUlk6ICZuYnNwO0lOTkVSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPg0KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4NCkRFVEFJTDogJm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQo8IS0tID09PT09PT09PT09IEVORCBPRiBOQVZCQVIgPT09PT09PT09PT0gLS0+DQoNCjxIUj4NCkNvcHlyaWdodCCpIDIwMDYgQXBhY2hlIFhNTCBQcm9qZWN0LiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KPC9CT0RZPg0KPC9IVE1MPg0K