PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPg0KPCEtLU5ld1BhZ2UtLT4NCjxIVE1MPg0KPEhFQUQ+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFRodSBOb3YgMjIgMTc6MTI6NTQgRVNUIDIwMDcgLS0+DQo8VElUTEU+DQpYYWxhbi1KYXZhIDIuNy4xOiBDbGFzcyAgQVZUDQo8L1RJVExFPg0KPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPg0KPC9IRUFEPg0KPEJPRFkgQkdDT0xPUj0id2hpdGUiPg0KDQo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+DQo8QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+DQo8VFI+DQo8VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+DQo8QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4NCiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvQVZULmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8L1RSPg0KPC9UQUJMRT4NCjwvVEQ+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4NCjwvRU0+DQo8L1REPg0KPC9UUj4NCg0KPFRSPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0Fic1BhdGhDaGVja2VyLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvQVZUUGFydC5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iQVZULmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFI+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPg0KDQo8SFI+DQo8IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+DQo8SDI+DQo8Rk9OVCBTSVpFPSItMSI+DQpvcmcuYXBhY2hlLnhhbGFuLnRlbXBsYXRlczwvRk9OVD4NCjxCUj4NCkNsYXNzICBBVlQ8L0gyPg0KPFBSRT4NCmphdmEubGFuZy5PYmplY3QNCiAgfA0KICArLS08Qj5vcmcuYXBhY2hlLnhhbGFuLnRlbXBsYXRlcy5BVlQ8L0I+DQo8L1BSRT4NCjxIUj4NCjxETD4NCjxEVD5wdWJsaWMgY2xhc3MgPEI+QVZUPC9CPjxEVD5leHRlbmRzIGphdmEubGFuZy5PYmplY3Q8RFQ+aW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvWFNMVFZpc2l0YWJsZS5odG1sIj5YU0xUVmlzaXRhYmxlPC9BPjwvREw+DQoNCjxQPg0KQ2xhc3MgdG8gaG9sZCBhbiBBdHRyaWJ1dGUgVmFsdWUgVGVtcGxhdGUuDQo8UD4NCjxETD4NCjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9zZXJpYWxpemVkLWZvcm0uaHRtbCNvcmcuYXBhY2hlLnhhbGFuLnRlbXBsYXRlcy5BVlQiPlNlcmlhbGl6ZWQgRm9ybTwvQT48RFQ+PEI+VXNhZ2U6PC9CPjxERD48aT48Zm9udCBzaXplPSItMSIgY29sb3I9IiMwMEZGMDAiPiAqKkZvciBhZHZhbmNlZCB1c2Ugb25seSoqPC9mb250PjwvaT48L0REPgo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPFA+DQo8IS0tID09PT09PT09IElOTkVSIENMQVNTIFNVTU1BUlkgPT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4NCg0KPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4NCjxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvQVZULmh0bWwjQVZUKG9yZy5hcGFjaGUueGFsYW4ucHJvY2Vzc29yLlN0eWxlc2hlZXRIYW5kbGVyLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLnhhbGFuLnRlbXBsYXRlcy5FbGVtVGVtcGxhdGVFbGVtZW50KSI+QVZUPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9wcm9jZXNzb3IvU3R5bGVzaGVldEhhbmRsZXIuaHRtbCI+U3R5bGVzaGVldEhhbmRsZXI8L0E+Jm5ic3A7aGFuZGxlciwKICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDt1cmksCiAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSwKICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtyYXdOYW1lLAogICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO3N0cmluZ2VkVmFsdWUsCiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL3RlbXBsYXRlcy9FbGVtVGVtcGxhdGVFbGVtZW50Lmh0bWwiPkVsZW1UZW1wbGF0ZUVsZW1lbnQ8L0E+Jm5ic3A7b3duZXIpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb25zdHJ1Y3QgYW4gQVZUIGJ5IHBhcnNpbmcgdGhlIHN0cmluZywgYW5kIGVpdGhlcgogY29uc3RydWN0aW5nIGEgdmVjdG9yIG9mIEFWVFBhcnRzLCBvciBzaW1wbHkgaG9sZAogb24gdG8gdGhlIHN0cmluZyBpZiB0aGUgQVZUIGlzIHNpbXBsZS48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQombmJzcDsNCjwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPg0KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+DQo8Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvQVZULmh0bWwjY2FsbFZpc2l0b3JzKG9yZy5hcGFjaGUueGFsYW4udGVtcGxhdGVzLlhTTFRWaXNpdG9yKSI+Y2FsbFZpc2l0b3JzPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvWFNMVFZpc2l0b3IuaHRtbCI+WFNMVFZpc2l0b3I8L0E+Jm5ic3A7dmlzaXRvcik8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0FWVC5odG1sI2NhblRyYXZlcnNlT3V0c2lkZVN1YnRyZWUoKSI+Y2FuVHJhdmVyc2VPdXRzaWRlU3VidHJlZTwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RlbGwgaWYgdGhpcyBleHByZXNzaW9uIG9yIGl0J3Mgc3ViZXhwcmVzc2lvbnMgY2FuIHRyYXZlcnNlIG91dHNpZGUKIHRoZSBjdXJyZW50IHN1YnRyZWUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvQVZULmh0bWwjZXZhbHVhdGUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGludCwgb3JnLmFwYWNoZS54bWwudXRpbHMuUHJlZml4UmVzb2x2ZXIpIj5ldmFsdWF0ZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvWFBhdGhDb250ZXh0Lmh0bWwiPlhQYXRoQ29udGV4dDwvQT4mbmJzcDt4Y3R4dCwKICAgICAgICAgaW50Jm5ic3A7Y29udGV4dCwKICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvUHJlZml4UmVzb2x2ZXIuaHRtbCI+UHJlZml4UmVzb2x2ZXI8L0E+Jm5ic3A7bnNOb2RlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RXZhbHVhdGUgdGhlIEFWVCBhbmQgcmV0dXJuIGEgU3RyaW5nLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0FWVC5odG1sI2ZpeHVwVmFyaWFibGVzKGphdmEudXRpbC5WZWN0b3IsIGludCkiPmZpeHVwVmFyaWFibGVzPC9BPjwvQj4oamF2YS51dGlsLlZlY3RvciZuYnNwO3ZhcnMsCiAgICAgICAgICAgICAgIGludCZuYnNwO2dsb2JhbHNTaXplKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZpeHVwIHZhcmlhYmxlcyBmcm9tIFFOYW1lcyB0byBzdGFjayBmcmFtZSAKIGluZGV4ZXMgYXQgc3R5bGVzaGVldCBidWlsZCB0aW1lLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0FWVC5odG1sI2dldE5hbWUoKSI+Z2V0TmFtZTwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgbG9jYWwgbmFtZSBvZiB0aGUgYXR0cmlidXRlLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0FWVC5odG1sI2dldFJhd05hbWUoKSI+Z2V0UmF3TmFtZTwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgcmF3IG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSwgd2l0aCB0aGUgcHJlZml4IHVucHJvY2Vzc2VkLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0FWVC5odG1sI2dldFNpbXBsZVN0cmluZygpIj5nZXRTaW1wbGVTdHJpbmc8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZXQgdGhlIEFWVCBhcyB0aGUgb3JpZ2luYWwgc3RyaW5nLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0FWVC5odG1sI2dldFVSSSgpIj5nZXRVUkk8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZXQgdGhlIG5hbWVzcGFjZSBVUkkgb2YgdGhlIGF0dHJpYnV0ZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL3RlbXBsYXRlcy9BVlQuaHRtbCNpc0NvbnRleHRJbnNlbnNpdGl2ZSgpIj5pc0NvbnRleHRJbnNlbnNpdGl2ZTwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Rlc3Qgd2hldGhlciB0aGUgQVZUIGlzIGluc2Vuc2l0aXZlIHRvIHRoZSBjb250ZXh0IGluIHdoaWNoCiAgaXQgaXMgYmVpbmcgZXZhbHVhdGVkLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0FWVC5odG1sI2lzU2ltcGxlKCkiPmlzU2ltcGxlPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0cnVlIGlmIHRoaXMgQVZUIGlzIHNpbXBsZTwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0FWVC5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPnNldE5hbWU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldCB0aGUgbG9jYWwgbmFtZSBvZiB0aGUgYXR0cmlidXRlLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0FWVC5odG1sI3NldFJhd05hbWUoamF2YS5sYW5nLlN0cmluZykiPnNldFJhd05hbWU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cmF3TmFtZSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgcmF3IG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSwgd2l0aCB0aGUgcHJlZml4IHVucHJvY2Vzc2VkLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0FWVC5odG1sI3NldFVSSShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0VVJJPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3VyaSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgbmFtZXNwYWNlIFVSSSBvZiB0aGUgYXR0cmlidXRlLjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+DQo8VEQ+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQ+PENPREU+ZXF1YWxzLCANCmdldENsYXNzLCANCmhhc2hDb2RlLCANCm5vdGlmeSwgDQpub3RpZnlBbGwsIA0KdG9TdHJpbmcsIA0Kd2FpdCwgDQp3YWl0LCANCndhaXQ8L0NPREU+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KJm5ic3A7DQo8UD4NCg0KPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4NCg0KPEEgTkFNRT0iY29uc3RydWN0b3JfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPg0KPEI+Q29uc3RydWN0b3IgRGV0YWlsPC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQoNCjxBIE5BTUU9IkFWVChvcmcuYXBhY2hlLnhhbGFuLnByb2Nlc3Nvci5TdHlsZXNoZWV0SGFuZGxlciwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS54YWxhbi50ZW1wbGF0ZXMuRWxlbVRlbXBsYXRlRWxlbWVudCkiPjwhLS0gLS0+PC9BPjxIMz4NCkFWVDwvSDM+DQo8UFJFPg0KcHVibGljIDxCPkFWVDwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi9wcm9jZXNzb3IvU3R5bGVzaGVldEhhbmRsZXIuaHRtbCI+U3R5bGVzaGVldEhhbmRsZXI8L0E+Jm5ic3A7aGFuZGxlciwKICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dXJpLAogICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lLAogICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtyYXdOYW1lLAogICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtzdHJpbmdlZFZhbHVlLAogICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0VsZW1UZW1wbGF0ZUVsZW1lbnQuaHRtbCI+RWxlbVRlbXBsYXRlRWxlbWVudDwvQT4mbmJzcDtvd25lcikKICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPkNvbnN0cnVjdCBhbiBBVlQgYnkgcGFyc2luZyB0aGUgc3RyaW5nLCBhbmQgZWl0aGVyCiBjb25zdHJ1Y3RpbmcgYSB2ZWN0b3Igb2YgQVZUUGFydHMsIG9yIHNpbXBseSBob2xkCiBvbiB0byB0aGUgc3RyaW5nIGlmIHRoZSBBVlQgaXMgc2ltcGxlLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmhhbmRsZXI8L0NPREU+IC0gbm9uLW51bGwgcmVmZXJlbmNlIHRvIFN0eWxlc2hlZXRIYW5kbGVyIHRoYXQgaXMgY29uc3RydWN0aW5nLjxERD48Q09ERT51cmk8L0NPREU+IC0gbm9uLW51bGwgcmVmZXJlbmNlIHRvIFVSSSwgIiIgaWYgbnVsbCBuYW1lc3BhY2UuPEREPjxDT0RFPm5hbWU8L0NPREU+IC0gbm9uLW51bGwgcmVmZXJlbmNlIHRvIG5hbWUgc3RyaW5nLjxERD48Q09ERT5yYXdOYW1lPC9DT0RFPiAtIHByZWZpeGVkIG5hbWUuPEREPjxDT0RFPnN0cmluZ2VkVmFsdWU8L0NPREU+IC0gbm9uLW51bGwgcmF3IHN0cmluZyB2YWx1ZS48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8L0RMPg0KPC9ERD4NCjwvREw+DQoNCjwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0xPjxGT05UIFNJWkU9IisyIj4NCjxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCg0KPEEgTkFNRT0iZ2V0UmF3TmFtZSgpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRSYXdOYW1lPC9IMz4NCjxQUkU+DQpwdWJsaWMgamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRSYXdOYW1lPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSByYXcgbmFtZSBvZiB0aGUgYXR0cmlidXRlLCB3aXRoIHRoZSBwcmVmaXggdW5wcm9jZXNzZWQuPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+bm9uLW51bGwgcmVmZXJlbmNlIHRvIHByZWZpeGVkIG5hbWUuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzZXRSYXdOYW1lKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQpzZXRSYXdOYW1lPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5zZXRSYXdOYW1lPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cmF3TmFtZSk8L1BSRT4NCjxETD4NCjxERD5HZXQgdGhlIHJhdyBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUsIHdpdGggdGhlIHByZWZpeCB1bnByb2Nlc3NlZC48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5yYXdOYW1lPC9DT0RFPiAtIG5vbi1udWxsIHJlZmVyZW5jZSB0byBwcmVmaXhlZCBuYW1lLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0TmFtZSgpIj48IS0tIC0tPjwvQT48SDM+DQpnZXROYW1lPC9IMz4NCjxQUkU+DQpwdWJsaWMgamF2YS5sYW5nLlN0cmluZyA8Qj5nZXROYW1lPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSBsb2NhbCBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUuPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+bm9uLW51bGwgcmVmZXJlbmNlIHRvIG5hbWUgc3RyaW5nLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0ic2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPg0Kc2V0TmFtZTwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+c2V0TmFtZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWUpPC9QUkU+DQo8REw+DQo8REQ+U2V0IHRoZSBsb2NhbCBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bmFtZTwvQ09ERT4gLSBub24tbnVsbCByZWZlcmVuY2UgdG8gbmFtZSBzdHJpbmcuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRVUkkoKSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0VVJJPC9IMz4NCjxQUkU+DQpwdWJsaWMgamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRVUkk8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5HZXQgdGhlIG5hbWVzcGFjZSBVUkkgb2YgdGhlIGF0dHJpYnV0ZS48REQ+PERMPg0KPERUPjxCPlJldHVybnM6PC9CPjxERD5ub24tbnVsbCByZWZlcmVuY2UgdG8gVVJJLCAiIiBpZiBudWxsIG5hbWVzcGFjZS48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InNldFVSSShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPg0Kc2V0VVJJPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5zZXRVUkk8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt1cmkpPC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSBuYW1lc3BhY2UgVVJJIG9mIHRoZSBhdHRyaWJ1dGUuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dXJpPC9DT0RFPiAtIG5vbi1udWxsIHJlZmVyZW5jZSB0byBVUkksICIiIGlmIG51bGwgbmFtZXNwYWNlLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0U2ltcGxlU3RyaW5nKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmdldFNpbXBsZVN0cmluZzwvSDM+DQo8UFJFPg0KcHVibGljIGphdmEubGFuZy5TdHJpbmcgPEI+Z2V0U2ltcGxlU3RyaW5nPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+R2V0IHRoZSBBVlQgYXMgdGhlIG9yaWdpbmFsIHN0cmluZy48REQ+PERMPg0KPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgQVZUIGFzIHRoZSBvcmlnaW5hbCBzdHJpbmc8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImV2YWx1YXRlKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBpbnQsIG9yZy5hcGFjaGUueG1sLnV0aWxzLlByZWZpeFJlc29sdmVyKSI+PCEtLSAtLT48L0E+PEgzPg0KZXZhbHVhdGU8L0gzPg0KPFBSRT4NCnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmV2YWx1YXRlPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1ByZWZpeFJlc29sdmVyLmh0bWwiPlByZWZpeFJlc29sdmVyPC9BPiZuYnNwO25zTm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT48L1BSRT4NCjxETD4NCjxERD5FdmFsdWF0ZSB0aGUgQVZUIGFuZCByZXR1cm4gYSBTdHJpbmcuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+eGN0eHQ8L0NPREU+IC0gVGUgWFBhdGhDb250ZXh0IHRvIHVzZSB0byBldmFsdWF0ZSB0aGlzLjxERD48Q09ERT5jb250ZXh0PC9DT0RFPiAtIFRoZSBjdXJyZW50IHNvdXJjZSB0cmVlIGNvbnRleHQuPEREPjxDT0RFPm5zTm9kZTwvQ09ERT4gLSBUaGUgY3VycmVudCBuYW1lc3BhY2UgY29udGV4dCAoc3R5bGVzaGVldCB0cmVlIGNvbnRleHQpLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIEFWVCBldmFsdWF0ZWQgYXMgYSBzdHJpbmc8RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImlzQ29udGV4dEluc2Vuc2l0aXZlKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmlzQ29udGV4dEluc2Vuc2l0aXZlPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5pc0NvbnRleHRJbnNlbnNpdGl2ZTwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlRlc3Qgd2hldGhlciB0aGUgQVZUIGlzIGluc2Vuc2l0aXZlIHRvIHRoZSBjb250ZXh0IGluIHdoaWNoCiAgaXQgaXMgYmVpbmcgZXZhbHVhdGVkLiBUaGlzIGlzIGludGVuZGVkIHRvIGZhY2lsaXRhdGUKICBjb21waWxhdGlvbiBvZiB0ZW1wbGF0ZXMsIGJ5IGFsbG93aW5nIHNpbXBsZSBBVlRzIHRvIGJlCiAgY29udmVydGVkIGJhY2sgaW50byBzdHJpbmdzLgoKICBDdXJyZW50bHkgdGhlIG9ubHkgY2FzZSB3ZSByZWNvZ25pemUgaXMgc2ltcGxlIHN0cmluZ3MuCiBBRERFRCA5LzUvMjAwMCB0byBzdXBwb3J0IGNvbXBpbGF0aW9uIGV4cGVyaW1lbnQ8REQ+PERMPg0KPERUPjxCPlJldHVybnM6PC9CPjxERD5UcnVlIGlmIHRoZSBtX3NpbXBsZVN0cmluZyBtZW1iZXIgb2YgdGhpcyBBVlQgaXMgbm90IG51bGw8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImNhblRyYXZlcnNlT3V0c2lkZVN1YnRyZWUoKSI+PCEtLSAtLT48L0E+PEgzPg0KY2FuVHJhdmVyc2VPdXRzaWRlU3VidHJlZTwvSDM+DQo8UFJFPg0KcHVibGljIGJvb2xlYW4gPEI+Y2FuVHJhdmVyc2VPdXRzaWRlU3VidHJlZTwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlRlbGwgaWYgdGhpcyBleHByZXNzaW9uIG9yIGl0J3Mgc3ViZXhwcmVzc2lvbnMgY2FuIHRyYXZlcnNlIG91dHNpZGUKIHRoZSBjdXJyZW50IHN1YnRyZWUuPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dHJ1ZSBpZiB0cmF2ZXJzYWwgb3V0c2lkZSB0aGUgY29udGV4dCBub2RlJ3Mgc3VidHJlZSBjYW4gb2NjdXIuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJmaXh1cFZhcmlhYmxlcyhqYXZhLnV0aWwuVmVjdG9yLCBpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpmaXh1cFZhcmlhYmxlczwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+Zml4dXBWYXJpYWJsZXM8L0I+KGphdmEudXRpbC5WZWN0b3ImbmJzcDt2YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtnbG9iYWxzU2l6ZSk8L1BSRT4NCjxETD4NCjxERD5UaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZml4dXAgdmFyaWFibGVzIGZyb20gUU5hbWVzIHRvIHN0YWNrIGZyYW1lIAogaW5kZXhlcyBhdCBzdHlsZXNoZWV0IGJ1aWxkIHRpbWUuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFyczwvQ09ERT4gLSBMaXN0IG9mIFFOYW1lcyB0aGF0IGNvcnJlc3BvbmQgdG8gdmFyaWFibGVzLiAgVGhpcyBsaXN0IAogc2hvdWxkIGJlIHNlYXJjaGVkIGJhY2t3YXJkcyBmb3IgdGhlIGZpcnN0IHF1YWxpZmllZCBuYW1lIHRoYXQgCiBjb3JyZXNwb25kcyB0byB0aGUgdmFyaWFibGUgcmVmZXJlbmNlIHFuYW1lLiAgVGhlIHBvc2l0aW9uIG9mIHRoZSAKIFFOYW1lIGluIHRoZSB2ZWN0b3IgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHZlY3RvciB3aWxsIGJlIGl0cyBwb3NpdGlvbiAKIGluIHRoZSBzdGFjayBmcmFtZSAoYnV0IHZhcmlhYmxlcyBhYm92ZSB0aGUgZ2xvYmFsc1RvcCB2YWx1ZSB3aWxsIG5lZWQgCiB0byBiZSBvZmZzZXQgdG8gdGhlIGN1cnJlbnQgc3RhY2sgZnJhbWUpLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iY2FsbFZpc2l0b3JzKG9yZy5hcGFjaGUueGFsYW4udGVtcGxhdGVzLlhTTFRWaXNpdG9yKSI+PCEtLSAtLT48L0E+PEgzPg0KY2FsbFZpc2l0b3JzPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5jYWxsVmlzaXRvcnM8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL1hTTFRWaXNpdG9yLmh0bWwiPlhTTFRWaXNpdG9yPC9BPiZuYnNwO3Zpc2l0b3IpPC9QUkU+DQo8REw+DQo8REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL3RlbXBsYXRlcy9YU0xUVmlzaXRhYmxlLmh0bWwjY2FsbFZpc2l0b3JzKG9yZy5hcGFjaGUueGFsYW4udGVtcGxhdGVzLlhTTFRWaXNpdG9yKSI+Y2FsbFZpc2l0b3JzPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvWFNMVFZpc2l0YWJsZS5odG1sIj5YU0xUVmlzaXRhYmxlPC9BPjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hhbGFuL3RlbXBsYXRlcy9YU0xUVmlzaXRhYmxlLmh0bWwjY2FsbFZpc2l0b3JzKG9yZy5hcGFjaGUueGFsYW4udGVtcGxhdGVzLlhTTFRWaXNpdG9yKSI+PENPREU+WFNMVFZpc2l0YWJsZS5jYWxsVmlzaXRvcnMoWFNMVFZpc2l0b3IpPC9DT0RFPjwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImlzU2ltcGxlKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmlzU2ltcGxlPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5pc1NpbXBsZTwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlJldHVybnMgdHJ1ZSBpZiB0aGlzIEFWVCBpcyBzaW1wbGU8REQ+PERMPg0KPC9ETD4NCjwvREQ+DQo8L0RMPg0KPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPg0KPEhSPg0KDQo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+DQo8QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+DQo8VFI+DQo8VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+DQo8QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4NCiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvQVZULmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8L1RSPg0KPC9UQUJMRT4NCjwvVEQ+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4NCjwvRU0+DQo8L1REPg0KPC9UUj4NCg0KPFRSPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveGFsYW4vdGVtcGxhdGVzL0Fic1BhdGhDaGVja2VyLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94YWxhbi90ZW1wbGF0ZXMvQVZUUGFydC5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iQVZULmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFI+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPg0KDQo8SFI+DQpDb3B5cmlnaHQgqSAyMDA2IEFwYWNoZSBYTUwgUHJvamVjdC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCjwvQk9EWT4NCjwvSFRNTD4NCg==